原文:http://lovelydog.iteye.com/blog/1676722

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

首先获取 Configuration 对象:

Java代码
  1. Resourcesresource=getResources();
  2. Configurationconfig=resource.getConfiguration();

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

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

Java代码
  1. config.locale=Locale.ENGLISH;

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

Java代码
  1. config.locale=Locale.getDefault();

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

Java代码
  1. getBaseContext().getResources().updateConfiguration(config,null);

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

Java代码
  1. Intentintent=newIntent();
  2. intent.setClass(this,MainActivity.class);
  3. intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
  4. this.startActivity(intent);

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

Xml代码
  1. <activity
  2. android:name=".MainActivity"
  3. android:label="@string/title_activity_main"
  4. android:configChanges="locale">
  5. <intent-filter>
  6. <actionandroid:name="android.intent.action.MAIN"/>
  7. <categoryandroid:name="android.intent.category.LAUNCHER"/>
  8. </intent-filter>
  9. </activity>

具体的实现请参考Demo: LanguageChangeDemo

下载地址:https://github.com/hanyi/LocaleChangeDemo.git

更多相关文章

  1. 利用Handler定时更新Android(安卓)UI
  2. Android(安卓)使用HTTPClient调用Web请求(查询手机号码区域)
  3. Android: eoeAndroid(安卓)~
  4. Android配置----小米手机通过wifi连接ADB调试Android应用
  5. Android(安卓)Studio开发应用
  6. Android上下文对象Context
  7. Android(安卓)获取应用的icon、名字、版本号
  8. Android(安卓)KTX简介
  9. Android(安卓)Framework入门介绍

随机推荐

  1. Transport endpoint is not connected 报
  2. android Button或者ImageButton背景透明
  3. Android(安卓)RIL源码分析
  4. Android黑名单电话挂断(AIDL)
  5. android TextView属性详解
  6. android中The connection to adb is down
  7. android 外部启动activity,自定义action,ac
  8. Android应用程序组件Content Provider的
  9. ScrollView嵌套RecyclerView时只显示一行
  10. 2011.06.21——— android GridView的拖