• 沒有找到結果。

替换资源(为了可替换的资源和配置)Alternate Alternate Alternate Alternate Resources Resources Resources Resources

你可以根据 UI 语言或者设备上的硬件配置,为你的产品提供不同的资源。注意,尽管你可以包 含不同的字符串、布局和其他资源,然而 SDK 没有方法供你指定加载哪一个替换资源。Android 检测关于硬件和未知的适当配置,然后适当加载。用户可以使用设备上的设置面板选择替换语言 设置。

为了包含替换资源,需要创建平行的资源文件夹,而文件夹的名字后面要使用限定符表示它要应 用的配置(语言、屏幕方向等等)。例如,下面的工程包含了字符串资源,一个用于英语,而另 外一个用于法语:

Android 支持几种类型的限定符,每一个都有不同的值。把它们连接在资源文件夹名称的后面,

使用短横线隔开。你可以为每一个文件夹名称添加多个限定符,但是它们必须按照这里列出的顺 序排列。例如,一个包含 drawable 资源的文件夹,对于一个完整详细的配置,可能看起来像:

} }

public class MyActivity extends Activity

public void onStart() { super.onStart();

setTheme(android.R.style.Theme_Black);

} }

MyApp/

res/

values-en/

strings.xml values-fr/

strings.xml

MyApp/

res/

更典型的是,你只需指定一些特定的要定义资源的配置选项。你可以放弃完整列表中的任何值,

但同时要保证剩下的值仍然保持列表中的顺序。

表 2 列举了合法的限定符目录名称,按优先级排序。下表中列举在上面的限定符比下面的具有 更高的优先级,如同Android 如何查找最匹配的目录中所描述的那样。

表 2

values-en/

drawable-en-rUS-port-160dpi-finger-qwerty-dpad-480x320/

MyApp/

res/

drawable-en-rUS-finger/

drawable-port/

drawable-port-160dpi/

drawable-qwerty/

限定符 QualifierQualifierQualifierQualifier 值 ValuesValuesValuesValues

移动国家码 MCC 和移动 网络码 MNC

手机设备 SIM 卡上的移动国家码和移动网络码。比如 mcc310-mnc004(美国,Verizon 品牌);mcc208-mnc00(法国, Orange 品 牌);mcc234-mnc00(英国,BT 品牌).

如果这个设备使用一个无线连接(GSM 电话),则 MCC 来自 SIM 卡,而 MNC 来自该设备将要附着的网络。你有时会仅使用 MCC,

例如包含特定国家合法资源在您的应用程序中。如果您的应用程序 指定了 MCC/MNC 组合的资源,这些资源仅在 MCC 和 MNC 都匹 配的时候才能使用。

语言和区域 Language and region

两个字母的ISO 639-1语言码和ISO 3166-1-alpha-2 区域码 (以"r"

为前缀)。比如en-rUS, fr-rFR, es-rES.

这个代码是大小写敏感的:语言码是小写字母,国家码是大写字母。

你不能单独指定一个区域,但是你可以单独指定一个语言,比如en,

fr, es, zh.

屏幕方向 Screen orientation

纵向,横向,正方形(port, land, square)

屏幕像素密度 Screen pixel density

92dpi, 108dpi 等. 当 Android 选择使用哪个资源时,它对屏幕 像素密度的处理和其它限定符不同。在文章后面描述的步骤 1Android 如何查找最匹配的目录中,屏幕密度总被认为是匹配的。

在步骤 4 中,如果被考虑的限定符是屏幕密度,Android 将选择在 那个位置的最佳匹配,而无需继续步骤 5。

触摸屏类型 Touchscreen type

非触摸式,触摸笔,手指(notouch, stylus, finger)

键盘可用方式 Whether the keyboard is available to the user

外在键盘,隐藏键盘,软键盘(keysexposed, keyshidden, keyssoft)

如果你的应用程序有一个特定的资源只能通过软件盘使用,则使用 keyssoft 值,如果没有keyssoft 资源可用(只有

keysexposed 和 keyshidden)并且该设备显示了一个软键 盘,那么系统将使用keysexposed 资源。

首选文本输入方法 Primary text input method

不支持按键,标准键盘,12 键(nokeys, qwerty, 12key)

首选非触摸式导航方法 Primary

non-touchscreen navigation method

不支持导航,滑板,跟踪球,滚轮(nonav, dpad, trackball, wheel)

屏幕分辨率 Screen dimensions

320x240, 640x480, 等. 更大的分辨率必须先被指定。

SDK 版本 SDK version 设备支持的 SDK 版本,比如v3。Android1.0 SDK 是

v1

,1.1SDK 是v2,1.5SDK 是v3。

这个列表不包含设备特有的参数比如载波,品牌,设备/硬件,或者制造商。所有应用程序需要 知道的设备信息均通过上表中的资源限定符编码。

所有资源目录,许可的和未经许可的,都存放在res/目录下。下面是一些关于许可的资源目录 名称的指导原则:

你可以指定多个限定符,用破折号分开。比如,drawable-en-rUS-land会被应用在 美国英语的横向手机设备中。

限定符必须符合表 2 中列举的顺序。比如:

正确的:values-mcc460-nokeys/

错误的:values-nokeys-mcc460/

限定符的值大小写敏感。比如一个纵向特定的drawable目录必须命名为 drawable-port,不可以是drawable-PORT或drawable-Port。

每个限定符类型仅支持一个值。比如,如果你想使用为法国和西班牙使用相同的 drawable文件,你得需要两个资源目录,如drawable-rES/和drawable-rFR/,

包含相同的文件。你不能使用一个名为 drawable-rES-rFR 的目录。

限定符不能嵌套使用。比如,你不能使用res/drawable/drawable-en。

相關文件