定义资源文件

在res目录下创建
values 默认
values-en 英文
values-zh 中文
分别存放不同的语言资源

保存语言设置

可以用SharePreference保存语言设置

1
2
3
4
5
6
public static void setLanAtr(String language){
SharedPreferences sharedPreferences = MyApplication.getInstance().getSharedPreferences("setting_share", 0);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("language",language);
editor.commit();
}

另外相应的可以获取语言设置

1
2
3
4
5
public static String getLanAtr(){
SharedPreferences sharedPreferences = MyApplication.getInstance().getSharedPreferences("setting_share", 0);
String lanAtr = sharedPreferences.getString("language", Contants.LANGUAGE_CHINESE);
return lanAtr;
}

设置语言

在BaseActivity或者Application中开启全局语言设置

1
Utils.changeAppLanguage(getResources(), SharePreferencesUtil.getLanAtr());

重点:changeAppLanguage()方法如下

1
2
3
4
5
6
7
8
9
10
public static void changeAppLanguage(Resources resources, String lanAtr){
Configuration configuration = resources.getConfiguration();
DisplayMetrics displayMetrics = resources.getDisplayMetrics();
if (lanAtr.equals(Contants.LANGUAGE_ENGLISH)){
configuration.locale = Locale.ENGLISH;
}else {
configuration.locale = Locale.CHINESE;
}
resources.updateConfiguration(configuration,displayMetrics);
}