Android 中资源文件的命名规范整理

本文详细介绍了Android应用程序中资源文件的组织方式与国际化配置方法。包括res目录下的各种子目录用途,如drawable、layout等,并解释了如何通过不同配置文件(如values-zh-rCN)实现多语言支持。此外,还提供了根据屏幕尺寸、密度及触摸屏类型等配置选择合适资源的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在 eclipse 的工程中,res 目录有默认几项 resource,如 drawable,
layout,menu,values 其余还有
res/anim/用来放置动画
res/xml/用来放置 style theme 等 xml 定义。
res/raw/用来放置 data 数据

我们引用这些 resource 时候,在 java 代码中是通过 R.resource_type.resource_name 的
方式来使用,如 setTitle(R.string.main_title);
还有一种是在 xml 中直接引用,如
<TextView
android:id =”@+id/hello_view”
android:layout_width=”fill_parent”
android:layout_height=”wrap_content”
android:text=”@string/hello”
/>

引用了名字为 hello 的字符串。当程序运行时,通过 Resource 类会装载 strings.xml
中名字为 hello 的字符串。但 Resource 类装载 strings.xml 时会根据当前手机的设置来选
择装载哪一个 xml 文件。这些手机设置有 MCC and MNC, Language and region,
Screen dimensions, Wider/taller screens, Screen orientation,Screen pixel density,
Touchscreen type, SDK version,也就是说通过手机当前语言区域,屏幕的大小,屏幕
像素, 以及当前 android sdk 的版本号来选择。通过把 strings.xml 放置在以这些选项命名
的文件夹下,Resource 类就能正确的装载所需的字符串。

 

我们以不同的地方来做一次国际化,首先 values 表示默认的字符串,也即 Resource
找不到匹配的资源时,默认使用 values 文件夹下的资源,其余 drawable 等资源也是同
样的。

 

当命名这些文件夹的名字时,不同的选项用-分开,而且次序必须和下面表格中的次
序一样。

文件夹的命名必须都是小写字符,否则在一些大小敏感的文件系统中可能会出错,
如果你用大写 eclipse 的 adt 都会自动报错。小写字母 r 表示 region 的意思,如

values-zh-rcn 中文简体
values-zh-rtw 中文繁体

在 strings.xml 中除了字符串本身不一样,xml 中定义该字符串的名字,id 都是一样
的。所以在代码或者 xml 中引用该资源时,只要引用名字即可或者 id 即可,程序启动
时候 Resource 类回到相应的目录下去寻找正确的字符串(资源)

其余手机的选项,像屏幕的像素等都可以建立相应得目录。

修饰语优先级
语言两个小写字母,参考下面各国语言
缩写网址
越往下优先级越低
地区两个大写字母加上一个小写字母
r,如 rTW,rCN
屏幕方向port,land,square
屏幕像素92dpi,108dpi 等等
触摸屏类型notouch,stylus 笔触,finger 手触
键盘是否有效keysexposed,keyshidden
基本文本输入模式nokeys,qwerty,12key
无触摸屏的主要导航模式Notouch,dpad,trackball,wheel
屏幕分辨率320*240,640*480d 等等

这个列表不包含一些特殊的参数,如载体,商标,设备/硬件,制造商。任何应用程
序需要知道的信息都在资源修饰语里有说明。这里有一些通用对关于资源目录的命名指
导:
*各个变量用破折号 ( – ) 分开
*变量大小写敏感(其大小写法必须一至)
例如,
一个 drawable 的目录必须命名是 drawable-port,而不是 drawable-PORT.也不能重复
定义,甚至故意将 port 和 PORT 指为不同的参数也不行
*一个式子里同一个类型修饰语 里只有一个值是有效的,如 drawable-rEN-rFR 无效
*你可以指定多个参数去定义不同的配置,但是参数对顺序必须是上面表格里的
*Android 会寻找最合适当前配置对目录,这会在下面描述
*表格里所列的参数是用来打破平衡一方值多重路径限制的 如 drawable/drawable-en 不

各国的语言缩写:
http://www.loc.gov/standards/iso639-2/php/code_list.php 第二列是语言缩写
国家和地区简写:

http://www.iso.org/iso/country_codes/iso_3166_code_lists/english_country_names_an

d_code_elements.htm#t..

Android 如何找到最匹配的目录

Android 将根据配置文件挑选资源,挑选过程为:
1.排除所有和配置文件中指定的当前设备参数不匹配的资源。比如,如果屏幕像素
密度为 108dpi,下面所列出的目录中,只有 MyApp/res/drawable-port-92dpi/会被排除。
MyApp/res/drawable/myimage.png
MyApp/res/drawable-en/myimage.png
MyApp/res/drawable-port/myimage.png
MyApp/res/drawable-port-92dpi/myimage.png
2.接下来系统将根据限定字的多少来筛选。例如,如果您的本地系统识别为 en-
Gb 编码的便携设备,随后我们还剩两个目录可以匹配。
MyApp/res/drawable/myimage.png
MyApp/res/drawable-en/myimage.png
MyApp/res/drawable-port/myimage.png
3.选择机制将根据配置文件中定义的优先级,优先级定义于上面的列表顺序中。
MyApp/res/drawable-en/myimage.png
MyApp/res/drawable-port/myimage.png
4.经过层层筛选就剩下了要应用的资源了
MyApp/res/drawable-en/myimage.png
好了,上面的知识相信大家都了解了不少,那么就要趁热打铁了给大家再增加点关
于各国手机运营商
的资源文件配置方法,如下:
首先大家要了解下他们的格式规范,以字符串为例
values-mcc+国别码-mnc+运营商代码+…
MCC=移动国家号码,由 3 位数字组成,唯一地识别移动用户所属的国家。我国
为 460。MNC=移动网号,由两位数字组成,用于识别移动用户所归属的移动网,如
联通 :01
移动:00/02
电信:03
所以,values-mcc460-mnc01-en 表示的意思就是中国联通英文的资源信息
还可参考官方 http://developer.android.com/guide/topics/resources/providing-resources.html
上资料,在 Dev Guide/Framework Topic/Application Resource/Providing Resources 下查看

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值