效果圖如下:
主要代碼:
/**
* 修改app語(yǔ)言
*
* @param type 語(yǔ)言類型
*/
public static void changeAppLanguage(int type) {
Resources resources = UIUtils.getContext().getResources(); // 獲得res資源對(duì)象
Configuration config = resources.getConfiguration(); // 獲得設(shè)置對(duì)象
DisplayMetrics dm = resources.getDisplayMetrics(); // 獲得屏幕參數(shù):主要是分辨率敦间,像素等。
if(type== Constants.LANGUAGE_CHINESE){
config.locale = Locale.CHINESE; // 設(shè)置APP語(yǔ)言設(shè)置為英文
}else if(type== Constants.LANGUAGE_ENGLISH){
config.locale = Locale.ENGLISH; // 設(shè)置APP語(yǔ)言設(shè)置為英文
}
resources.updateConfiguration(config, dm);
}
需要一提的是娜亿,要界面立即刷新效果丽已,需要重啟界面,在這里需要在選擇語(yǔ)言對(duì)話框點(diǎn)擊確定之后把主界面MainActivity和SettingActivity依次關(guān)閉买决,然后重新啟動(dòng)沛婴,代碼如下:
private void restartActivity() {
mActivities.get(mActivities.size()-2).finish();
Intent[] intents = {new Intent(this, MainActivity.class), new Intent(this, SettingsActivity.class)};
startActivities(intents);
finish();
}
其中的mActivities是所有Activity的基類BaseActivity中定義的用來(lái)保存已開(kāi)啟的Activity的列表,因?yàn)镸ainActivity是倒數(shù)第二個(gè)打開(kāi)的,所以通過(guò) mActivities.get(mActivities.size()-2)獲取到,然后調(diào)用finish()方法關(guān)閉MainActivity督赤,最后通過(guò)startActivitys方法按照順序啟動(dòng)MainActivity和SettingActivity完成界面的刷新嘁灯。