封面.png
用李白的一首詩來做本次演示
language.gif
1.res下新建values-zh (中文文件夾)并且新建一個(gè)strings.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="poetry">朝辭白帝彩云間择葡,\n千里江陵一日還丐谋。\n兩岸猿聲啼不盡伴澄,\n輕舟已過萬重山尤辱。</string>
<string name="language">語言</string>
<string name="title_activity_5">5.多語言適配</string>
</resources>
2.res下新建values-en (英文文件夾)并且新建一個(gè)strings.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="poetry">Energy-saving,\nTrinidad Jiangling day also.\nTwo monkeys do,\nHas been in a canoe.</string>
<string name="language">Language</string>
<string name="title_activity_5">5.Multilingual adaptation</string>
</resources>
3.res/layout下新建activity_5.xml 布局文件 引用資源文件中的string
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:gravity="center_horizontal"
android:layout_height="match_parent"
android:orientation="vertical">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="setLanguage"
android:layout_marginTop="10dp"
android:textAllCaps="false"
android:text="@string/language"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_marginLeft="10dp"
android:textSize="16sp"
android:text="@string/poetry"/>
</LinearLayout>
4.新建Activity_5.class
public class _5_Activity extends BaseActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setLanguage();
setContentView(R.layout.activity_5);
setTitle(R.string.title_activity_5);
}
public void setLanguage(View v){
String[] strings = {"簡體中文","English"};
//首次進(jìn)入判斷是否是中文語言
int selected = getSharedPreferences("language", Context.MODE_PRIVATE).getInt("language",-1);
if (selected==-1){
String defaultLanguage = Locale.getDefault().toString();
if (defaultLanguage.equals(Locale.CHINESE.toString())
|| defaultLanguage.equals(Locale.SIMPLIFIED_CHINESE.toString())
||defaultLanguage.equals(Locale.TRADITIONAL_CHINESE.toString()) ){
selected = 0;
}else{
selected = 1;
}
}
new AlertDialog.Builder(this)
.setSingleChoiceItems(strings,selected,
new DialogInterface.OnClickListener() {
//點(diǎn)擊單選框某一項(xiàng)以后
public void onClick(DialogInterface dialogInterface, int i) {
SharedPreferences preferences = getSharedPreferences("language", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.putInt("language",i);
editor.apply();
dialogInterface.dismiss();
//重啟activity
Intent intent = new Intent(_5_Activity.this, _5_Activity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
}
})
.create()
.show();
}
/** 設(shè)置語言 */
private void setLanguage() {
SharedPreferences preferences = getSharedPreferences("language", Context.MODE_PRIVATE);
int language = preferences.getInt("language", 0);
//根據(jù)讀取到存放在sp里面的數(shù)據(jù) 進(jìn)行設(shè)置
Configuration configuration = getResources().getConfiguration();
switch (language){
case 0:
configuration.setLocale(Locale.CHINESE);
break;
case 1:
configuration.setLocale( Locale.ENGLISH);
break;
}
getResources().updateConfiguration(configuration,getResources().getDisplayMetrics());
}
}
多語言的配置很簡單召边,在于繁瑣,當(dāng)有幾百個(gè)string的時(shí)候...如果您有改進(jìn)的建議赶促,歡迎在github上提交.