您的位置:首页 > 其它

4000 安卓开发 切换应用语言和获取系统语言

2016-06-14 16:58 489 查看
api中提供了locale 类,实现本地化

Locale类 http://www.android-doc.com/reference/java/util/Locale.html

Configuration类 http://www.android-doc.com/reference/android/content/res/Configuration.html

思路:

(app中设置语言的的时候,用SharedPreferences保存在本地一份,用来每次进入判断上次设置了什么语言,知道什么语言了,再用下面的代码设置下)

1.把app干掉,然后重新启动,,,进入的时候 用代码设置下,就切换了

例如:

System.exit(0);(少用)

Intent i = getBaseContext().getPackageManager().
getLaunchIntentForPackage(getBaseContext().getPackageName());
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);


当然没有这么做的了。

2.重新加载边布局:用下面的代码设置完,再调用重新设置(就是把textview重新设置值了)的方法,语言就切换了。

例如:



代码

isEnglish:isEnglish
true  :点击英文
false :点击中文
/**
* Locale类   http://www.android-doc.com/reference/java/util/Locale.html * Configuration类  http://www.android-doc.com/reference/android/content/res/Configuration.html */
Configuration config = getResources().getConfiguration();
DisplayMetrics dm = getResources().getDisplayMetrics();
if(isEnglish){
//设置英文
config.locale = Locale.ENGLISH;
}else{
//设置中文
config.locale = Locale.SIMPLIFIED_CHINESE;
}
//更新配置
getResources().updateConfiguration(config, dm);


在工程res文件下添加对应语种的values文件

res:



把相对应的strings.xml做好翻译就ok了,

AndroidManifest.xml中:

所需权限

<uses-permission android:name="android.permission.CHANGE_CONFIGURATION"/>


每一个Activity中都要加:
android:configChanges="locale"


系统设置(手机系统设置不是自己写的设置)中切换语言他会重启~

并且会调用Activity重写的onConfigurationChanged函数

@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
Log.e("Mylog","onConfigurationChanged");
}


但是有一种情况不会调用onConfigurationChanged函数:

原因是,4.2增加了一个layoutDirection属性,当改变语言设置后,该属性也会成newConfig中的一个mask位。所以ActivityManagerService(实际在ActivityStack)在决定是否重启Activity的时候总是判断为重启。当在android:configChanges 中同时添加locale和layoutDirection时,才会发生app期望的事情。

android:configChanges="locale|layoutDirection"


demo下载地址:http://download.csdn.net/detail/u013870523/9551033

获取系统语言

获取系统语言 方法:Locale.getDefault().getLanguage()

获取应用语言 方法:getResources().getConfiguration().locale.getLanguage()

推荐

……………………………………………………………………………………………………………………

Android 6.0+ 运行时权限探索

……………………………………………………………………………………………………………………

Android 切换系统语言功能实现

……………………………………………………………………………………………………………………

引用:android:configChanges locale 改语言后,该配置不起作用的原因

……………………………………………………………………………………………………………………

各国语言缩写-各国语言简称,世界各国域名缩写

……………………………………………………………………………………………………………………

有时间最好自己手写写试试,希望能帮到你。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: