在app内有时候需要用户手动切换语言,以适应不同的使用场景,正常来说如果做了语言适配的话,app语言会跟随系统语言进行自动适配。但有时候希望在app内进行语言选择和设置。
设置app的语言环境,直接上代码
/**
* 修改APP语言设置
* @param locale 如Locale.CHINESE、Locale.ENGLISH等
*/
public void changeAppLanguage(Context context, Locale locale) {
Resources res = context.getResources();
DisplayMetrics dm = res.getDisplayMetrics();
Configuration conf = res.getConfiguration();
//conf.locale = locale;
conf.setLocale(locale);
res.updateConfiguration(conf, dm);
}
//设置app语言环境为中文
changeAppLanguage(context, Locale.CHINESE);
android应用可以根据语言环境自动适配不同资源目录下的资源,如drawable-zh-xhdpi、drawable-en-xhdpi分别对应中文和英文语言环境的资源。通过上述方法改变语言设置后,app可以自动使用相应的资源目录下的资源文件。
参考:https://www.cnblogs.com/travellife/p/Android-ying-yong-nei-duo-yu-yan-qie-huan.html
获取app当前的语言环境
/**
* 获取当前设置的语言
* @return 当前的语言,可将结果与Locale.ENGLISH.getLanguage()比较进行判断
*/
public static String getCurrLanguage(Context context) {
Locale locale = null;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
locale = context.getResources().getConfiguration().getLocales().get(0);
} else {
locale = context.getResources().getConfiguration().locale;
}
return locale.getLanguage();
}
//判断当前的语言是否是英文
Locale.ENGLISH.getLanguage().equals(getCurrLanguage(context));
String country = locale.getCountry(); //可以借助该方法进行更精细的设置或判断