Android资源从不同的布局文件夹调用

时间:2016-10-13 07:19:21

标签: android android-layout android-screen-support

我有两个具有相同分辨率和PPI的Android设备。但是当我为三台Tab 4的一台设备运行我的应用程序时,资源是从普通布局文件夹调用的。但对于另一台Samsung J Max设备,它来自layout-600文件夹。为什么这些设备的表现不同?任何建议都将不胜感激。

3 个答案:

答案 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