实习期间,师父要求做app的中英文切换,就顺便记录了下。
一、AndroidManifest.xml文件(清单文件)
在每个要切换语言的Activity下面添加:
android:configChanges=”locale”
1
3 android:configChanges=”locale”
4 android:launchMode=”singleTop”
5 android:screenOrientation=”portrait”
6 android:windowSoftInputMode=”adjustPan” >
7
添加权限:
二、创建一个英文的strings.xml文件,目录名为values-en

values/strings.xml这个为默认语言,如果values-en目录下的strings.xml不存在,那英文就会选取默认语言。
1
2
3 language
4 Settings
5 updating..
6
三、核心代码
1 /
2 * 刷新语言3 */
4 public voidupdateActivity(String sta) {5
6 //本地语言设置
7 Locale myLocale = newLocale(sta);8 Resources res =getResources();// 获得res资源对象9 DisplayMetrics dm =res.getDisplayMetrics();// 获得屏幕参数:主要是分辨率,像素等。10 Configuration conf =res.getConfiguration();// 获得设置对象11 conf.locale =myLocale;// 简体中文12 res.updateConfiguration(conf, dm);13 //startActivity((new Intent(this, TabActivity.class)));14 //this.finish();
15 }
String sta= getResources().getConfiguration().locale.getCountry() //用于判断当前的语言
Locale.getDefault().getLanguage()//语言:取到的比如中文为zh,英文为en,日文为ko;
也可以调用此类


1 public classLanguageSettings {2
3 private static LanguageSettings language = null;4
5 private String currentLanguage = “zh”;6
7 privateLanguageSettings() {8 }9
10 public staticLanguageSettings getInstance() {11 if (language == null) {12 language = newLanguageSettings();13 } else{14
15 }16 returnlanguage;17 }18
19 publicString getCurrentLanguage() {20 returncurrentLanguage;21 }22
23 public voidswitchCurrentLanguage() {24 if (currentLanguage.equals(“zh”)) {25 currentLanguage = “en”;26 } else{27 currentLanguage = “zh”;28 }29 }30 }
LanguageSettings
1 //切换成英文
2 if(LanguageSettings.getInstance().getCurrentLanguage()3 .equals(“zh”)) {4 updateActivity(“en”);5 LanguageSettings.getInstance().switchCurrentLanguage();6 } else{7 //切换成中文
8 updateActivity(“zh”);9 LanguageSettings.getInstance().switchCurrentLanguage();10 }
LanguageSettings.getInstance().getCurrentLanguage() 给变量动态赋值的标识列,用于判断!(采用单例模式)
原文:http://www.cnblogs.com/tutuskys/p/4863146.html
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/223536.html原文链接:https://javaforall.net
