在正常屏幕和大屏幕中对主屏幕小部件大小感到困惑
我正在设计主屏幕小部件。小部件布局文件如下所示。在正常屏幕和大屏幕中对主屏幕小部件大小感到困惑
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/widget"
android:layout_width="240dip" android:layout_height="200dip"
android:background="@drawable/base_all"
/>
我跑了HTC Hero的设备,其具有320个像素×480个像素与MDPI在屏幕上该窗口小部件。它在HTC Hero上完美运行。该部件需要3个单元×2单元空间,即240个像素×200个像素。
然后我在一个Nexus One设备上运行这个小部件,该设备的屏幕为480像素* 800像素,mdpi。由于Nexus One也是mdpi,因此我认为240dip相当于Nexus One上的240像素,200dip相当于Nexus One上的200像素,因此该部件不会在Nexus One设备上占用3个单元格* 2的单元格空间。令我惊讶的是,在Nexus One设备上运行时,该部件在Nexus One设备上采用精确的3单元* 2单元,大约360像素* 300像素。
我很困惑。上面的布局xml为窗口小部件指定宽度为240dip,高度为200dip,但为什么在Nexus One设备上需要360像素* 300像素?我错过了什么?
谢谢。
在回答mbaird的评论:
我仍然感到困惑。假设我使用90dip * 100dip指定一个ImageView,picture1,如下图所示。 Nexus One设备上的ImageView中的设备像素尺寸是多少?
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/widget"
android:layout_width="240dip" android:layout_height="200dip"
android:background="@drawable/base_all"
>
<ImageView android:id="@+id/picture1"
android:layout_width="90dip"
android:layout_height="110dip"
/>
</RelativeLayout>
我必须知道这一点,因为在我的节目,我必须借鉴的ImageView:
public void draw(Canvas canvas) {
ShapeDrawable drawable = new ShapeDrawable(new RectShape());
drawable.getPaint().setColor(Color.WHITE);
drawable.setBounds(m_leftTopX, m_leftTopY, m_leftTopX + m_width,
m_leftTopY + m_height);
drawable.draw(canvas);
}
正如我understant,drawable.setBounds()在其参数使用物理像素。我需要知道物理像素尺寸的ImageView的大小。
谢谢。
你混合设备独立像素和硬件设备的像素。我认为这不会太好。
在英雄身上占用3x2的部件在Nexus One上占用3x2。这就是我在回答你之前的问题时试图解决的问题:Home screen widget size for large screen or hdpi?