我们知道,现在的Android设备有许多的形状和尺寸。而我们的APP用户可能再使用各种各样的Android设备,为了让我们的APP能在这些设备上成功且正常运行,我们的APP就需要去适配不同的设备配置。我们一般从下面三个方面去考虑适配:语言、屏幕大小以及Android的系统版本。
1.适配不同语言
我们的用户大部分都是国人,但是也有可能是美国人,法国人啥的..这个时候我们的APP如果只支持中文的话,自然就不行了。当然的,我们肯定也不能每种语言都做一个APP,那样的话估计没人来搞Android开发了。Android提供了一种机制,我们可以在APP项目开发时提供几种不同语言的资源,在不同的语言版本下就能显示不同的语言文字,这样我们的APP就能同时满足不同国家的人的需求了。我们看看具体的做法:
在Android开发中,将UI字符串从我们的APP代码中分离出来,将它们放在一个外部文件中,是一个很好的做法,也是我们应该去做的。Android的资源文件夹res/的作用也是为此。
为了支持不同的语言,我们需要在res/资源目录下创建一些values文件夹,这个文件夹的命名规则为"values"+连字符"-"+ISO国家代码,比如values-fr/代表其下的资源都是为国家语言代码为"fr"的国家即法国准备的,Android系统会根据设备的区域动态加载相应的资源。假如我们希望支持西班牙语(国家代码ES)和法语(国家代码FR),我们需要建立如下的字符串资源目录:
MyProject/ res/ values/ strings.xml values-es/ strings.xml values-fr/ strings.xml然后我们就可以在对应的区域语言资源文件中加入对应的语言文本。比如,现在我们创建一个新的项目:SupportProject,然后在它的app/res下建立2个新的语言资源文件夹,分别为 values-es/和 values-fr/,如下:
然后在这两个文件夹下,分别创建一个strings.xml字符串资源文件,添加一个简单的名为txt_hello_world的字符串资源,同样的在默认的values/strings.xml中也加入这个字符串(PS:Android的默认区域语言为English)。下面是3个文件夹下的txt_hello_world的定义:
①values/strings.xml
<resources>
<string name="app_name">SupportProject</string>
<string name="action_settings">Settings</string>
<string name="txt_hello_world">Hello World