我們只要分三步來寫此功能:
第一步:
寫一個類(FunctionApplication)繼承Application,在onCreate()方法中實現如下方法:
@Override
public void onCreate() {
super.onCreate();
String languageToLoad = "zh";
Locale locale = new Locale(languageToLoad);
Locale.setDefault(locale);
Configuration config = getResources().getConfiguration();
DisplayMetrics metrics = getResources().getDisplayMetrics();
config.locale = Locale.SIMPLIFIED_CHINESE;
getResources().updateConfiguration(config, metrics);
}
其中android:configChanges="locale"是關鍵。當然如果你不使整個應用程序都編程中文,那麼不用繼承Application,直接在繼承Activity的類中添加第一步的方法即可。當然別忘記在Activity標簽中添加android:configChanges="locale"。
注:android:configChanges可以設置很多屬性,具體屬性如下:
VALUE DESCRIPTION
"mcc" 國際移動用戶識別碼所屬國家代號是改變了----- sim被偵測到了,去更新mcc mcc是移動用戶所屬國家代號
"mnc" 國際移動用戶識別碼的移動網號碼是改變了------ sim被偵測到了,去更新mnc MNC是移動網號碼,最多由兩位數字組成,用於識別移動用戶所歸屬的移動通信網
"locale" 地址改變了-----用戶選擇了一個新的語言會顯示出來
"touchscreen" 觸摸屏是改變了------通常是不會發生的
"keyboard" 鍵盤發生了改變----例如用戶用了外部的鍵盤
"keyboardHidden" 鍵盤的可用性發生了改變
"navigation" 導航發生了變化-----通常也不會發生
"screenLayout" 屏幕的顯示發生了變化------不同的顯示被激活
"fontScale" 字體比例發生了變化----選擇了不同的全局字體
"uiMode" 用戶的模式發生了變化
"orientation" 屏幕方向改變了
"screenSize" 屏幕大小改變了
"smallestScreenSize" 屏幕的物理大小改變了,如:連接到一個外部的屏幕上
第二步:將默認的AndroidManifest.xmlApplication設置為如下:
<application
android:name=".FunctionApplication"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:configChanges="locale" >
第三步,添加相應權限:
<uses-permission android:name="android.permission.CHANGE_CONFIGURATION"/>