我正在設計主屏幕小部件。小部件佈局文件如下所示。在正常屏幕和大屏幕中對主屏幕小部件大小感到困惑
<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的大小。
謝謝。