我有两个具有相同分辨率和PPI的Android设备。但是当我为三台Tab 4的一台设备运行我的应用程序时,资源是从普通布局文件夹调用的。但对于另一台Samsung J Max设备,它来自layout-600文件夹。为什么这些设备的表现不同?任何建议都将不胜感激。
答案 0 :(得分:1)
您应该检查This Google Article。它指出:
在这种情况下,三星还有一个小小的惊喜:如果你做算术,它的屏幕有170 DPI,这远远不是Android设备中最密集的。不过,它声称自己是“hdpi”(并且具有“大”屏幕尺寸)。原因很简单:它看起来更好。
这意味着您的Tab
ppi是170(不是220ppi)。结果:800宽度,170ppi - > 800 /(170/160)> 600.这就是为什么你的三星Tab 4资源来自文件夹" layout-sw600dp"
答案 1 :(得分:0)
600
中的layout-600
限定符与dp
中的屏幕尺寸有关,而不一定与DPI或屏幕分辨率(以像素为单位)有关。其他因素,如宽高比和屏幕的对角线尺寸也被考虑在内。
您可以使用此post中的说明以编程方式dp
确定屏幕尺寸:
Configuration configuration = yourActivity.getResources().getConfiguration();
int screenWidthDp = configuration.screenWidthDp; //The current width of the available screen space, in dp units, corresponding to screen width resource qualifier.
我敢打赌screenWidthDp
的值在这些设备之间是不同的。
答案 2 :(得分:0)
这取决于Android设备的密度像素(dp),它非常依赖于设备,并且根据Android设备自动检测它将显示UI的布局文件夹,以下是它的工作原理:
在设计不同屏幕尺寸的用户界面时,您会发现这一点 每种设计都需要最小的空间。所以,每个都是概括的 上面的屏幕尺寸具有相关的最小分辨率 由系统。这些最小尺寸在" dp"单位 - 相同的单位 您应该在定义布局时使用 - 这允许系统使用 避免担心屏幕密度的变化。
xlarge屏幕至少为960dp x 720dp
至少有大屏幕 640dp x 480dp
正常屏幕至少为470dp×320dp
小屏幕 至少为426dp x 320dp一组六个广义密度:
ldpi(低)~120dpi
mdpi(中) ~160dpi
hdpi(高)~240dpi
xhdpi(超高)~320dpi
xxhdpi (超高)~480dpi
xxxhdpi(extra-extra-extra-high)~640dpi
有关详细信息,请参阅google doc:https://developer.android.com/guide/practices/screens_support.html