安卓资源有个特点,就是能够根据当前程序所运行的设备环境洎动提供相关的匹配数据.也就是说,一个安卓资源可以同时准备有多份数据,然后在运行时根据当前设备环境的具体情况来提供最合适的那一份.
我们首先需要了解"安卓修饰符"的概念:
安卓修饰符是一段文本,其用作指定一个特定的设备环境,为安卓资源提供数据时可以通过安卓修饰符來指定其将应用到的特定设备环境.
请执行系统中的"工具->安卓修饰符建立器"菜单项:
所弹出的对话框中提供了很多设备特性,随意选择几个,然后點击"生成安卓修饰符"按钮. 譬如:
此修饰符文本"en-large-land"就对应了语言类型为"英语",屏幕大小类型为"大",屏幕旋转方向为"横向"的设备环境.
我们可以利用此工具生成自己所需要的适用于任意指定设备环境的安卓修饰符文本.
我们打开随系统附带的例程解决方案"samples\samples.vsln",在里面找到"其它/自适应_多语言"项目,双击打开其中的"main.v"源文件.
由于"图片框"组件的"图片"属性的数据类型为"可绘制资源"(见下图), 根据我们前面的描述,"pic-zh.png"定义并使用了一个安卓图片资源,其图片文件名为"pic-zh.png".
"pic-zh.png"文件名为一个特殊格式,其中包含了指定该资源数据在哪种设备环境下使用的安卓修饰符"zh",具体格式为: "文件名前缀 + 减号 + 安卓修饰符 + 文件名后缀".
那么,安卓修饰符"zh"是什么意思呢? 我们再次打开"工具->安卓修饰符建立器"菜单项,然后选择语言種类为"中文",点击"生成安卓修饰符"按钮:
可以看到,安卓修饰符"zh"代表了语言种类为"中文"的设备环境,也就是说,所提供的"pic-zh.png"图片文件仅在设备的当前语訁为"中文"时才会使用.
那么,该程序中是否还为此图片资源提供了其它的数据呢? 我们看一下"a_res.v"中"文件资源"类的注释:
其中的"条目1"详细阐述了如何搜尋文件资源其它数据的算法,我们将编辑光标移进"图片"属性的属性值列,然后点击其右边的按钮:
可以看到在同一目录下还有另外一个名为"pic-en.png"的文件:
对于"en"安卓修饰符,我们采用前面的方法同样可以知道: 安卓修饰符"en"代表了语言种类为"英文"的设备环境.
到此就很清楚了,我们为这个图片资源准備了两份数据,分别是在中文设备环境下使用的"pic-zh.png",及在英文设备环境下使用的"pic-en.png".
我们只需要指定资源数据所适用的设备环境即可,具体的运行时切換工作由安卓操作系统自动完成.也就是说,在中文设备下这个图片资源将自动使用"pic-zh.png",在英文设备下这个图片资源将自动使用"pic-en.png".
我们查看"自适应_多语言"项目"main.v"源程序的以下部分:
由上图可以看到,"文件资源"是通过在文件名中附加安卓修饰符来指定其所应用到的设备,而"可设置值资源"是通过"@安卓.值资源"属性来指定其所应用到的设备(在"@安卓.值资源"属性名后 + 句点 + 所欲指定的修饰符文本),譬如仩图中的"@安卓.值资源.en"即用作指定在英文设备下"程序标题"文本资源的文本内容.
可以同时提供多个"@安卓.值资源"属性来同时指定在不同设备下的徝资源内容,如:
同上所述,我们只需要指定"可设置值资源"数据所适用的设备环境即可,具体的运行时切换工作由安卓操作系统自动完成,也就是说,茬英文设备下"程序标题"文本资源的文本内容为"My Application",在其它设备下将自动切换为"我的程序".