android中多语言的设置

1. (转自:http://lovelydog.iteye.com/blog/1676722)

android每个应用都保存着一份仅对自身有用的配置,被封装在 android.content.res.Configuration 类里,通过该类,我们可以修改语言参数,实现对应用语言的变更。

首先获取 Configuration 对象:

Resources resource = getResources();
Configuration config = resource.getConfiguration();

然后设置 config 中的 locale 属性,选择需要的语言。

locale属性为一个Locale类的对象,比如我们要设置应用的语言为英语,那么可以这样实现

config.locale = Locale.ENGLISH;

或者要设置成系统默认的语言:

config.locale = Locale.getDefault();

最后,需要更新配置文件,执行下面的代码:

getBaseContext().getResources().updateConfiguration(config, null);

语言设置完成后,应用并不会自动刷新当前已经打开的Activity,所以为了刷新整个应用,目前比较通用的做法是重新启动应用:

Intent intent = new Intent();
intent.setClass(this, MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
this.startActivity(intent);

另外需要注意的是,需要在Manifest.xml文件中的Activity中配置android:configChanges属性,通过配置该属性,Activity可以捕捉设备状态的变化:

<activity
            android:name=".MainActivity"
            android:label="@string/title_activity_main"
            android:configChanges="locale" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
</activity>

 

3. 参考

Resources resources = getResources();//获得res资源对象

Configuration config = resources.getConfiguration();//获得设置对象

DisplayMetrics dm = resources .getDisplayMetrics();//获得屏幕参数:主要是分辨率,像素等。

config.locale = Locale.SIMPLIFIED_CHINESE; //简体中文

resources.updateConfiguration(config, dm);

 

你可能感兴趣的:(android中多语言的设置)