“smallest width 600 dp”选择器的混淆问题

7
在我的应用程序中,我支持手机/平板电脑的形态因素,并使用选择器“layout”(用于手机),“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

当我使用768像素的dp计算公式时,dp值为386,但当我传递1280像素时,dp值为644。
根据以下理解,我认为对于Nexus 4横屏模式,它将从sw600dp读取布局,但事实并非如此。
由于分辨率是宽度X高度,因此在设备旋转时会颠倒。
我认为这是与pre-3.2大型、超大型部门相比,sw选择器所做的改进。

1
请查看我在此处的答案:http://stackoverflow.com/questions/36820746/multi-screen-for-mobiles-in-android/36821546#36821546 - mehrdad khosravi
2个回答

19
根据 Android 文档中粗体字所指,最小宽度是设备的固定屏幕大小特征;当屏幕方向更改时,设备的最小宽度不会改变。请参见此处的表2“smallestWidth”部分。

9

无论设备方向如何,sw指的都是屏幕两个维度中较短的那个。这就是“smallestWidth”名称中的“最小”所在之处。与Gingerbread风格的“large”等选择器相比,它的优势仅在于你可以获得更精细的控制,并且能够更加可预测地获取屏幕尺寸,因为它不依赖于制造商如何分类其屏幕大小。

如果您想基于当前方向的屏幕宽度或高度来选择布局,请使用名为layout-w600dplayout-h600dp的目录。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接