Android-0.drawable等资源的命名规则和查找规则

配置限定符

要使应用支持多种设备配置,则务必为应用使用的每种资源类型提供默认资源, 也就是我们总是优先保证drawable文件夹是存在的。

drawable后的配置限定符名称可以参考:https://developer.android.com/guide/topics/resources/providing-resources#LocaleQualifier。

下面简单列下drawable经常使用到的部分配置限定符:

所以我们经常可以看到drawable-mdpidrawable-hdpi-v4这种文件夹命名出现。


限定符命名规则

1.您可以为单组资源指定多个限定符,并使用短划线分隔。例如,drawable-en-rUS-land 适用于横排美国英语设备。
2.这些限定符必须遵循表 2 中列出的顺序。例如:drawable-hdpi-port/是错误的,而drawable-port-hdpi是正确的。
3.能嵌套备用资源目录。例如,您不能拥有 res/drawable/drawable-en/
4.值不区分大小写。在处理之前,资源编译器会将目录名称转换为小写。
5.对于每种限定符类型,仅支持一个值。例如,若要对西班牙语和法语使用相同的可绘制对象文件,则您肯定不能拥有名为 drawable-rES-rFR/ 的目录,而是需要两个包含相应文件的资源目录,如 drawable-rES/drawable-rFR/

创建别名资源

如果您想将某一资源用于多种设备配置(但是不想作为默认资源提供),则无需将同一资源放入多个备用资源目录中。
例如,假设您有一个应用图标 icon.png,并且需要不同语言区域的独特版本。 但是,加拿大英语和加拿大法语这两种语言区域需要使用同一图标。您可以将图标另存为 icon_ca.png(除 icon.png 以外的任何名称),并将其放入默认 res/drawable/ 目录中。然后,在 res/drawable-en-rCA/res/drawable-fr-rCA/ 中分别创建 icon.xml 文件:

<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@drawable/icon_ca" />

<bitmap> 可以创建指向现有可绘制对象的别名。
也就是说,实际上我们把icon.xml编译成了R.drawable.icon资源。

同理<merge>可创建指向现有布局的别名,例如, main.xml:

<?xml version="1.0" encoding="utf-8"?>
<merge>
    <include layout="@layout/main_ltr"/>
</merge>

也就是说,实际上我们把main.xml编译成了R.layout.main资源。

同理字符串:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="hello">Hello</string>
    <string name="hi">@string/hello</string>
</resources>

R.string.hi 资源现在是 R.string.hello 的别名。

同理颜色:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="red">#f00</color>
    <color name="highlight">@color/red</color>
</resources>

Android 如何查找最佳匹配资源

https://developer.android.com/guide/topics/resources/providing-resources#BestMatch

猜你喜欢

转载自blog.csdn.net/hgy413/article/details/85263355