实习期间,师父要求做app的中英文切换,就顺便记录了下。
一、AndroidManifest.xml文件(清单文件)
在每个要切换语言的Activity下面添加:
android:configChanges="locale"
1 <activity 2 android:name="com.activity.RepairActivity" 3 android:configChanges="locale" 4 android:launchMode="singleTop" 5 android:screenOrientation="portrait" 6 android:windowSoftInputMode="adjustPan" > 7 </activity>
添加权限: <uses-permission android:name="android.permission.CHANGE_CONFIGURATION" />
二、创建一个英文的strings.xml文件,目录名为values-en
values/strings.xml这个为默认语言,如果values-en目录下的strings.xml不存在,那英文就会选取默认语言。
1 <?xml version="1.0" encoding="utf-8"?> 2 <resources> 3 <string name="app_name">language</string> 4 <string name="action_settings">Settings</string> 5 <string name="alert_data_init">updating..</string> 6 </resources>
三、核心代码
1 /** 2 * 刷新语言 3 */ 4 public void updateActivity(String sta) { 5 6 // 本地语言设置 7 Locale myLocale = new Locale(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;
Locale.getDefault().toString()
//具体的类别:比如繁体为zh_TW,简体为zh_CN。英文中有en_GB;日文有ko_KR。
也可以调用此类
1 public class LanguageSettings { 2 3 private static LanguageSettings language = null; 4 5 private String currentLanguage = "zh"; 6 7 private LanguageSettings() { 8 } 9 10 public static LanguageSettings getInstance() { 11 if (language == null) { 12 language = new LanguageSettings(); 13 } else { 14 15 } 16 return language; 17 } 18 19 public String getCurrentLanguage() { 20 return currentLanguage; 21 } 22 23 public void switchCurrentLanguage() { 24 if (currentLanguage.equals("zh")) { 25 currentLanguage = "en"; 26 } else { 27 currentLanguage = "zh"; 28 } 29 } 30 }
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