[英]xxhdpi devices with the screen height of 640 dp use xhdpi rather than h640dp-xhdpi
我在以下文件夹中有资源:
价值观xhdpi
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="test_str">values-xhdpi</string>
<style name="test">
<item name="android:background">#aaaaff</item>
</style>
</resources>
价值观MDPI
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="test_str">values-mdpi</string>
<style name="test">
<item name="android:background">#ffaaaa</item>
</style>
</resources>
价值观sw600dp
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="test_str">values-sw600dp</string>
<style name="test">
<item name="android:background">#aaffaa</item>
</style>
</resources>
价值观h640dp-xhdpi
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="test_str">values-h640dp-xhdpi</string>
<style name="test">
<item name="android:background">#cacaca</item>
</style>
</resources>
我在Nexus 5上使用这些资源运行测试应用程序。屏幕密度为xxhdpi,最小宽度为360 dp。 (1920 * 1080 px = 640 * 360 dp)。
Android如何找到最匹配资源的流程图:
我的配置限定符名称应按以下顺序检查(请参阅表2. 此处的 配置限定符名称 ):
让我们检查smallestWidth并消除与设备配置相矛盾的资源:
价值观xhdpi
价值观MDPI
价值观sw600dp
价值观h640dp-xhdpi。
让我们检查可用高度并消除与设备配置相矛盾的资源:
价值观xhdpi
价值观MDPI
价值观h640dp-xhdpi。
所以现在values-h640dp-xhdpi
是唯一剩下的资源文件夹。 让我告诉你我如何应用资源:
<TextView
style="@style/test"
android:text="@string/test_str"
android:textSize="46sp"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
但是,当我在Nexus 5上运行我的应用程序时,它使用来自values-xhdpi
的资源。 为什么?
更新#1
这是我错的地方:
让我们检查可用高度并消除与设备配置相矛盾的资源:
价值观xhdpi
价值观MDPI价值观h640dp-xhdpi。
价值观h640dp-xhdpi消除因矛盾(见答案这就解释了为什么),和值,MDPI和价值观xhdpi留下。 Nexus 5的密度为xxhdpi,但没有为xxhdpi指定资源。 因此,最佳匹配将是较小屏幕的资源,xhdpi。
具体来说,当根据大小限定符选择资源时,如果没有更好匹配的资源,系统将使用为小于当前屏幕的屏幕设计的资源(例如,如果没有匹配的大小屏幕,则系统将使用正常大小的屏幕资源必要)。 但是,如果唯一可用的资源大于当前屏幕,则系统将不使用它们,如果没有其他资源与设备配置匹配,则应用程序将崩溃
在文档中我们可以看到
当您的应用程序为此配置提供具有不同值的多个资源目录时,系统将使用最接近( 不超过 )设备当前屏幕高度的值。
Nexus 5屏幕高度为567,但你的身高是640,这就是Android排除此文件夹的原因。
Nexus 5是: - 445 ppi像素密度
三星Galaxy Nexus I9250: - 316 ppi像素密度
这就是为什么它使用来自value-xhdpi的资源。
值-h640dp-xhdpi - 三星Galaxy Nexus I9250
value-xhdpi - Nexus 5
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.