很多开发者考虑使自己的Android程序兼容多国语言,其实Google在设计Android时已经考虑了本地化问题,通过定义相关的资源可以自适应当前手机的语言来加载响应的资源文件。Android开发网列出主流的本地化:

语言自适应

在Android工程的res目录下,通过定义特殊的文件夹名称就可以实现,比如我们的程序兼容 简体中文、日文、英文、法文和德文,常规的字符strings.xml保存的目录在values文件夹中,这里我们就需要定义 values-zh-rCN、values-ja、values、values-fr和values-de。当然如果涉及到参数配置类xml文件夹也要改成xml-zh、xml-ja、xml、xml-fr和xml-de。

当然我们用代码如何获取本机的语言类型呢? 通过代码 :

String cwjLocale = getResources().getConfiguration().locale.getCountry(); 即可获取,其中cwjLocale保存了国家代码,这些定义在java.util.Locale的字段中,直接对比即可,比如我们英文版固件设备为US。

当然我们需要测试,可能会强制加载某国语言,可以使用在Activity的SetContentView之前调用,比如强制简体中文,代码如下:

Resources resources = getResources();
Configuration config = resources.getConfiguration();
config.locale = Locale.SIMPLIFIED_CHINESE; //简体中文
DisplayMetrics dm = res.getDisplayMetrics();
resources.updateConfiguration(config, dm);

屏幕分辨率自适应

这里我们需要判断两种大体情况,屏幕的方向,比如常规的纵向port和横屏land,我们定义的图片资源为

layout或drawable,而横屏情况下位layout-land和drawable-land,当然还有一种情况就是分辨率。

目前Android手机分辨率有

HVGA (320x480) 的G1、G2、G3 对应标准的 drawable-mdpi

QVGA (240x320) 的G4 ,对应 drawable-ldpi

WVGA (480x800) 的N1,对应 drawable-hdpi 。

最终我们以MMS应用的例子,对应res文件夹的摆放如图:




1.首先,如果要程序自动适应系统语言进行转变,可以在res下添加相应的语言文件夹:如:添加中文,则文件夹命名为values-zh-rCN,如果不清楚需要的名字可以到:E:\android-sdk-windows\platforms\android-8\data\res,如这样的文件夹下寻找。这样就可以让程序自动适应系统的语言来选择语言。
2.如果我们想在程序内部可以手动地选择语言则:
a.首先获得当前的语言或者国家:
String able= getResources().getConfiguration().locale.getCountry();
b.进行判断:如果是中文则返回的able.equals("CN")
c.进行设置的代码为:
//选择中文
Configuration config = getResources().getConfiguration();
DisplayMetrics dm = getResources() .getDisplayMetrics();
config.locale = Locale.SIMPLIFIED_CHINESE;
getResources().updateConfiguration(config, dm);
d.最后用sharedPreferences保存当前的语言设置

更多相关文章

  1. Android(安卓)中自定义View的应用(三)
  2. 彻底了解Android中的内部存储与外部存储
  3. 读取android根目录下的文件或文件夹实例
  4. Android自定义控件基本原理详解(一)
  5. 手机Root后如何拿取data/data目录下的文件夹到电脑上
  6. From Android(安卓)to iOS - 零基础编写一个iOS应用
  7. Android中 Flutter实现自定义的APPbar
  8. Android应用程序分析——apk的组成
  9. Android通过lame进行音频格式转换

随机推荐

  1. DB Usage Complete / ADB 用法大全(转自g
  2. Android调用平台功能具体技巧分享
  3. [Android1.6]动态添加View的问题
  4. Android Studio 1.3 正式发布
  5. Android ADK 编程简介
  6. Android(安卓)for OpenCV 调用 CameraAPI
  7. Android多渠道打包以及发布方法
  8. 写android程序碰到的一些记录
  9. Android(安卓)插件化 动态升级
  10. Android 系统中使用GDB调试C程序