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. 分支和循环(二)(零基础学习C语言)
  2. Android(安卓)学习笔记(十五):Activity-GalleryView
  3. Android(安卓)颜色渲染(十) ComposeShader组合渲染
  4. Android(安卓)数独游戏 记录
  5. 【Android(安卓)开发教程】链接Activities
  6. Android-NDK开发之基础--Android(安卓)JNI实例代码(二)-- 获取/
  7. UI-TextView省略号
  8. Android(安卓)camera系统开发之IPC (四)
  9. Android的APP启动过程分析

随机推荐

  1. android 公用的ViewHolder
  2. Android NDK r6 下载链接
  3. Android 微信界面 Fragment
  4. android.app.WallpaperManager壁纸管理类
  5. 将Cocos2d-x游戏打包成Android应用程序
  6. android avoiding-memory-leaks
  7. Android(安卓)自定义View练手Demo(二)实现
  8. Android socket 工具类
  9. android的几种默认路径
  10. Android:瀑布流效果 的简单实现