獲得當前的系統(tǒng)語言
/* 獲得系統(tǒng)語言 */
String language = Locale.getDefault().getLanguage();
* 中文 cn
* 英文 en
切換語言
切換語言之后, 重啟Activity才能生效
/**
?* 切換語言, 重啟界面生效
?*/
protected void switchLanguage(Locale locale) {
? ? Resources res = getResources();
? ? Configuration cfg = res.getConfiguration(); ?
? ? DisplayMetrics dm = res.getDisplayMetrics();
? ? cfg.locale = locale;
? ? res.updateConfiguration(cfg, dm);
}
設置當前語言為中文
switchLanguage(Locale.CHINA);
設置當前語言為英文
switchLanguage(Locale.ENGLISH);
保存設置的語言
設置了語言之后, 將配置保存起來, 下次啟動APP才知道要顯示什么語言
/**
* 保存語言
*/
protected void saveLanguage(Locale locale) {
? ? SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
? ? SharedPreferences.Editor edit = sp.edit();
? ? edit.putString("app_language", locale.getLanguage()).apply();
}
保存中文語言
saveLanguage(Locale.CHINA);
保存英文語言
saveLanguage(Locale.ENGLISH);
APP自動應用配置的語言
我們設置了語言并保存在配置文件, 下次啟動需要先讀取配置, 并設置
@Override
protected void onCreate(Bundle savedInstanceState) {
? ? /* 獲得已保存的語言, 需要在super.onCreate()之前設置語言 */
? ? SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
? ? String language = sp.getString("app_language", "en");
? ? switchLanguage(new Locale(language));
? ? super.onCreate(savedInstanceState);
? ? setContentView(R.layout.activity_main);
? ? // ...
}