与“最小宽度600 dp”选择器混淆

时间:2013-04-19 12:50:42

标签: android android-selector

在我的应用程序中,我支持手机/平板电脑的外形和单独的布局我使用选择器“布局”(对于手机),“layout-sw600dp”(对于平板电脑)。

以下是详细信息:

http://android-developers.blogspot.in/2011/07/new-tools-for-managing-screen-sizes.html

Typical numbers for screen width dp are:
320: a phone screen (240x320 ldpi, 320x480 mdpi, 480x800 hdpi, etc).
480: a tweener tablet like the Streak (480x800 mdpi).
600: a 7” tablet (600x1024).
720: a 10” tablet (720x1280, 800x1280, etc).

我正在使用Nexus 4手机,以下是它的主题

Size:       4.7 inches
Resolution: 768 x 1280 pixels
DPI:        318
dp:         386 
Here is the dp calculation
dp = (px * 160)/dpi
dp = (768 * 160)/318

当我在dp计算公式中使用768 px时,dp值为386,但是当我通过1280 px时,dp值为644.

根据以下理解,我认为Nexus 4版本会从sw600dp读取布局,但事实并非如此。

由于分辨率为宽度X高度,因此旋转设备时它将反转。

我认为这是使用sw选择器与3.2之前的大型xlarge扇区进行的即兴创作。

2 个答案:

答案 0 :(得分:19)

正如它在Android文档here中以粗体显示(向下滚动到表2中的“smallestWidth”部分):

  

最小宽度是设备的固定屏幕尺寸特征;   当屏幕显示时,设备的smallestWidth不会改变   方向变化

答案 1 :(得分:8)

无论设备方向如何,sw数字始终是两个屏幕尺寸中较短的一个。这就是名称“smallestWidth”中“最小”的来源。优于Gingerbread风格的“大型”& c。选择器只是你获得更多的控制粒度,并且它更可预测你实际得到的屏幕尺寸,因为它不依赖于制造商如何分类他们的屏幕尺寸。

如果要根据屏幕当前方向的宽度或高度选择布局,请使用名为layout-w600dplayout-h600dp的目录。