您的位置:首页 > 移动开发 > Android开发

android-支持多种屏幕[创建别名资源] 十三

2017-04-01 17:30 225 查看
如果您想将某一资源用于多种设备配置(但是不想作为默认资源提供),则无需将同一资源放入多个备用资源目录中。 相反,您可以(在某些情况下)创建备用资源,充当保存在默认资源目录下的资源的别名。

:并非所有资源都会提供相应机制让您创建指向其他资源的别名。 特别是,
xml/
 目录中的动画资源、菜单资源、原始资源以及其他未指定资源均不提供此功能。

例如,假设您有一个应用图标 
icon.png
,并且需要不同语言区域的独特版本。 但是,加拿大英语和加拿大法语这两种语言区域需要使用同一版本。 您可能会认为需要将相同的图像复制到加拿大英语和加拿大法语对应的资源目录中,但事实并非如此。 相反,您可以将用于二者的图像另存为
icon_ca.png
(除 
icon.png
 以外的任何名称),并将其放入默认 
res/drawable/
 目录中。然后,在 
res/drawable-en-rCA/
 和 
res/drawable-fr-rCA/
 中创建 
icon.xml
 文件,使用 
<bitmap>
 元素引用 
icon_ca.png
 资源。这样,您只需存储
PNG 文件的一个版本和两个指向该版本的小型 XML 文件。(XML 文件示例如下。)


可绘制对象

要创建指向现有可绘制对象的别名,请使用 
<bitmap>
 元素。例如:
<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@drawable/icon_ca" />


如果将此文件另存为 
icon.xml
(例如,在备用资源目录中,另存为 
res/drawable-en-rCA/
),则会编译到可作为 
R.drawable.icon
 引用的资源中,但实际上它是 
R.drawable.icon_ca
 资源(保存在 
res/drawable/
 中)的别名。


布局

要创建指向现有布局的别名,请使用包装在 
<merge>
 中的 
<include>
 元素。例如:
<?xml version="1.0" encoding="utf-8"?>
<merge>
    <include layout="@layout/main_ltr"/>
</merge>


如果将此文件另存为 
main.xml
,则会编译到可作为 
R.layout.main
 引用的资源中,但实际上它是 
R.layout.main_ltr
 资源的别名。


字符串和其他简单值

要创建指向现有字符串的别名,只需将所需字符串的资源 ID 用作新字符串的值即可。例如:
<?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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: