Android res/layout中布局文件怎样管理( 七 )
创建别名资源
如果您想将某一资源用于多种设备配置(但是不想作为默认资源提供),则无需将同一资源放入多个备用资源目录中。 相反,您可以(在某些情况下)创建备用资源,充当保存在默认资源目录下的资源的别名。
注:并非所有资源都会提供相应机制让您创建指向其他资源的别名。 特别是,xml/ 目录中的动画资源、菜单资源、原始资源以及其他未指定资源均不提供此功能。
例如,假设您有一个应用图标 icon.png,并且需要不同语言区域的独特版本。 但是,加拿大英语和加拿大法语这两种语言区域需要使用同一版本。 您可能会认为需要将相同的图像复制到加拿大英语和加拿大法语对应的资源目录中,但事实并非如此。 相反,您可以将用于二者的图像另存为icon_ca.png(除 icon.png 以外的任何名称),并将其放入默认 res/drawable/ 目录中。然后,在 res/drawable-en-rCA/ 和 res/drawable-fr-rCA/ 中创建 icon.xml 文件,使用 \u0026lt;bitmap\u0026gt; 元素引用 icon_ca.png 资源。这样,您只需存储 PNG 文件的一个版本和两个指向该版本的小型 XML 文件。(XML 文件示例如下。)
可绘制对象
要创建指向现有可绘制对象的别名,请使用 \u0026lt;bitmap\u0026gt; 元素。例如:\u0026lt;?xml version="1.0" encoding="utf-8"?\u0026gt;\u0026lt;bitmap xmlns:android="http://schemas.android.com/apk/res/android" android:src="https://www.zhihu.com/api/v4/questions/27699976/@drawable/icon_ca" /\u0026gt;如果将此文件另存为 icon.xml(例如,在备用资源目录中,另存为 res/drawable-en-rCA/),则会编译到可作为 R.drawable.icon 引用的资源中,但实际上它是 R.drawable.icon_ca 资源(保存在 res/drawable/ 中)的别名。
布局
要创建指向现有布局的别名,请使用包装在 \u0026lt;merge\u0026gt; 中的 \u0026lt;include\u0026gt; 元素。例如:\u0026lt;?xml version="1.0" encoding="utf-8"?\u0026gt;\u0026lt;merge\u0026gt; \u0026lt;include layout="@layout/main_ltr"/\u0026gt;\u0026lt;/merge\u0026gt;如果将此文件另存为 main.xml,则会编译到可作为 R.layout.main 引用的资源中,但实际上它是 R.layout.main_ltr 资源的别名。
字符串和其他简单值
要创建指向现有字符串的别名,只需将所需字符串的资源 ID 用作新字符串的值即可。例如:\u0026lt;?xml version="1.0" encoding="utf-8"?\u0026gt;\u0026lt;resources\u0026gt; \u0026lt;string name="hello"\u0026gt;Hello\u0026lt;/string\u0026gt; \u0026lt;string name="hi"\u0026gt;@string/hello\u0026lt;/string\u0026gt;\u0026lt;/resources\u0026gt;R.string.hi 资源现在是 R.string.hello 的别名。
其他简单值的原理相同。 例如,颜色:\u0026lt;?xml version="1.0" encoding="utf-8"?\u0026gt;\u0026lt;resources\u0026gt; \u0026lt;color name="red"\u0026gt;#f00\u0026lt;/color\u0026gt; \u0026lt;color name="highlight"\u0026gt;@color/red\u0026lt;/color\u0026gt;\u0026lt;/resources\u0026gt;利用资源提供最佳设备兼容性要使应用支持多种设备配置,则务必为应用使用的每种资源类型提供默认资源,这一点非常重要。
例如,如果应用支持多种语言,请始终包含不带语言和区域限定符的 values/ 目录(用于保存字符串)。相反,如果您将所有字符串放入带有语言和区域限定符的目录中,则在语言设置不支持您的字符串的设备上运行应用时,应用将会崩溃。 但是,只要提供默认 values/ 资源,应用就会正常运行(即使用户不理解该语言,这也总比崩溃要好)。
推荐阅读
- 怎样评价Google发布的Android P
- Android怎样在不Root的前提下阻止App互相唤醒
- 我的Android就渣到连面试的机会都没有嘛
- 在dribble和Pinterest等设计师网站上有哪些不得不关注的设计大神
- ActiveMQ、MQTT的方式进行Android消息推送,我的理解是否正确
- PCB Layout工程师转型
- 为啥防范xss要过滤发帖内容,照单全收后显示时直接放到\u003ciframe sandbox security=restrict\u003e中不就行了
- 华为海思有Android开发岗位吗
- android准备转大数据,有些疑问,求指导?
- 花瓣网和 Pinterest 在使用上有啥不同,Pinterest 采集工具咋添加到浏览器上
