Android 资源国际化问题(1): 来自开源的启示
真实的感受告诉我,开源给人以启示。
今天,主要根据开源项目以及android源码自带app,说明android资源国际化问题。
这篇文章http://www.cnblogs.com/yangshaoning/archive/2010/09/12/1824432.html写的不错。
1. sipdroid
这个开源项目,很经典。其框架思想,令人观止。先看几张图吧!
drawable文件夹
layout文件夹
values文件夹,支持不同语言
2.Contacts
来自android源码的app
3. 图片国际化
应用场景:
显示图片,如某张图片显示“开始”(中文设置),那么为了国际化,需要将该图片改为显示“start”的图片。注意:不管是“开始”图片,还是“start”图片,在drawable××下面名称必须一致如pic_start.png,这样在代码中引用资源时方便,且适应android系统的自动选择。如图pic_start.png
还有,在不同语言环境中显示不同国家国旗等。
注意:上面的文件中包含land-320x240、land-480x320是为了适应这两中屏幕大小的手机。关于屏幕的自适应问题,关注下篇相关博客。
4. 参考其它
drawable-en:英文设置下的图片资源,drawable-zh中文设置下的图片资源。
如果要为不同像素的手机准备的话,需要(以drawable-en为例说明)
:drawable-en-hdpi
:drawable-en-ldpi
:drawable-en-mdpi
同理:为美式英语,
:drawable-en-rUS-hdpi
:drawable-en-rUS-ldpi
:drawable-en-rUS-mdpi
再复杂一点,为不同方向的准备图片资源
//竖直
:drawable-en-rUS-port-hdpi
:drawable-en-rUS-port-ldpi
:drawable-en-rUS-port-mdpi
//水平
:drawable-en-rUS-land-hdpi
:drawable-en-rUS-land-ldpi
:drawable-en-rUS-land-mdpi
5. 相关说明
另外,建立这些文件夹是有顺序的。即按优先级别排列的,见下表。所以建立文件夹时一般从左到右的排列其优先级别如:drawable-en-rUS-land-mdpi
如:drawable-en-rUS-port-160dpi-finger-qwerty-dpad-480x320/
<style type="text/css"> <!-- @page {margin:0.79in} td p {margin-bottom:0in} p {margin-bottom:0.08in} a:link {} --> </style>
限定符Qualifier |
值Values |
移动国家码MCC和移动网络码MNC |
手机设备SIM卡上的移动国家码和移动网络码。比如mcc310-mnc004(美国,Verizon品牌);mcc208-mnc00(法国,Orange品牌);mcc234-mnc00(英国,BT品牌). |
语言和区域Languageand region |
两个字母的ISO639-1语言码和ISO3166-1-alpha-2区域码(以"r"为前缀)。比如en-rUS,fr-rFR,es-rES.这个代码是大小写敏感的:语言码是小写字母,国家码是大写字母。你不能单独指定一个区域,但是你可以单独指定一个语言,比如en,fr, es, zh. |
屏幕方向Screenorientation |
纵向,横向,正方形(port,land, square) |
屏幕像素密度Screenpixel density |
92dpi,108dpi等.当Android选择使用哪个资源时,它对屏幕像素密度的处理和其它限定符不同。在文章后面描述的步骤1Android如何查找最匹配的目录中,屏幕密度总被认为是匹配的。在步骤4中,如果被考虑的限定符是屏幕密度,Android将选择在那个位置的最佳匹配,而无需继续步骤5。 |
触摸屏类型Touchscreentype |
非触摸式,触摸笔,手指(notouch,stylus, finger) |
键盘可用方式Whetherthe keyboard is available to the user |
外在键盘,隐藏键盘,软键盘(keysexposed,keyshidden,keyssoft) |
首选文本输入方法Primarytext input method |
不支持按键,标准键盘,12键(nokeys,qwerty, 12key) |
首选非触摸式导航方法Primarynon-touchscreen |
不支持导航,滑板,跟踪球,滚轮(nonav,dpad, trackball, wheel) |
屏幕分辨率Screendimensions |
320x240,640x480,等.更大的分辨率必须先被指定。 |
SDK版本SDKversion |
设备支持的SDK版本,比如v3。Android1.0SDK是v1,1.1SDK是v2,1.5SDK是v3。 |
小版本(Minorversion) |
你目前还不能指定小版本,它总是被设置为0。 |
6.推荐文章
sdk-path/docs/guide/topics/resources/index.html
sdk-path/docs/guide/practices/screens_support.html