一.AndroidMianFest.xml中配置
<receiver android:name="cn.xm.antrou.broadcast.LanBroadcast">
<intent-filter>
<action android:name="cn.xm.broadcast.language" />
</intent-filter>
</receiver>
二.設置選中的語言
Configuration config = resources.getConfiguration();
DisplayMetrics dm = resources .getDisplayMetrics();
config.locale = locale;
resources.updateConfiguration(config, dm);
this.finish()//設置語言後關閉當前Activity
上面的local參數就是設置語言的,比如:Locale.SIMPLIFIED_CHINESE Locale.ENGLISH,詳細信息你可以查看Local類,其實這裏設置後軟件語言已經變了,不過需要重新進入該界面,所以會用到通知來重啓啓動當前界面
三.發送通知
Intent intent = new Intent("cn.xm.broadcast.language");
sendBroadcast(intent);
注意上面構造Intent參數:cn.xm.broadcast.language與AndroidMainfest.xml中的配置是一致的,這裏發出通知後,系統會在你配置的信息中找到匹配項後執行,android:name指定的類,這個類需要實現 BroadcastReceiver ,並重寫 onReceive()在這個方法裏面去重啓你剛剛的設置語言的界面
第二步:將應用中的字符串替換成從strings.xml中引用的形式,如 getResources().getString(R.string.appname)
第三步:真正的多語言設置了,需要新建一個xml文件,會顯示如圖畫面!
需要注意的地方:
1. 需要選中”values“選項2. 需要設置”Region“和”Language“兩個屬性(注:上圖中這兩個屬性已經設置,所以左邊列表中已不可見),分別指代”區域“與”語言“,通過畫面中的右箭頭添加,對於英語支持,”Region“和”Language“分別對應"us"和"en"
設置完成點擊”Finsh“之後會在res/values目錄下發現多了個目錄:values-en-rUS,然後將對應的strings.xml內容翻譯成英文存儲在該目錄下的strings.xml即可,注意name屬性不要更改。
再添加其他更多語言支持,重複上面的第三步即可(如設置繁體:”Region“和”Language“分別對應"tw"和"zh")!