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>

具体的实现请参考Demo: LanguageChangeDemo

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

更多相关文章

  1. Android——多语言适配
  2. 【Android(安卓)应用开发】 Ubuntu 安装 Android(安卓)Studio (
  3. 小记初学android过程中遇到的小问题(android 4.4)
  4. android:layout_weight的真实含义
  5. Android(安卓)将自己的应用程序改成系统的应用程序
  6. Android(安卓)学习笔记
  7. android语音识别和合成第三方
  8. Android使用ContentProvider报异常(java.lang.SecurityException:
  9. Android(安卓)Drawable 系列——ClipDrawable

随机推荐

  1. android中度量坐标 传感器应用的开发
  2. android中渐变效果
  3. Android Handler ExecutorService(线程池
  4. 禁用Android底部虚拟按键
  5. Android小游戏开发流程有感
  6. android 基本组件
  7. Android例子源码集成安卓主流优秀第三方
  8. solution for Failed to create the SD c
  9. Android(安卓)textview 不使用ScrollView
  10. Android之ksoap2-android详解与调用天气