注意:你App內顯示的字不應直接打上去,應添加在string然後引用,否則無法做到語言切換
以最普遍的英文作為例子,新建一個values-en file,建立string.xml把你原本在string的所有內容製作一個英文版本
這時候,App已經會根據系統設置來顯示語言,即是說如果你的手機系統語言是英文,App就會自動轉換成英文顯示,你也可以加入設定功能來手動選擇語言
在activity_main.xml加入一個按鈕,這個很簡單不詳細講
然後在MainActivity,java加入以下代碼
(1)
setLanguage();
(2)
Button language = (Button) findViewById(R.id.language);language.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setSingleChoiceItems(new String[]{"中文", "English"},
getSharedPreferences("Language", Context.MODE_PRIVATE).getInt("Language",0),
new DialogInterface.OnClickListener() {
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();
Intent intent = new Intent(MainActivity.this, MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
}
});
AlertDialog dialog = builder.create();
dialog.show();
}
});
(3)
private void setLanguage() {SharedPreferences preferences = getSharedPreferences("Language", Context.MODE_PRIVATE);
int language = preferences.getInt("Language", 0);
Resources resources = getResources();
DisplayMetrics displayMetrics = resources.getDisplayMetrics();
Configuration configuration = resources.getConfiguration();
switch (language){
case 0:
configuration.setLocale(Locale.CHINESE);
break;
case 1:
configuration.setLocale(Locale.ENGLISH);
break;
default:
break;
}
resources.updateConfiguration(configuration,displayMetrics);
}
完成!現在按下按鈕就可以選擇語言,選擇後整個App都會顯示選擇的語言,日後再開啟App也會自動顯示最後使用時顯示的語言。
~~~ 歡迎留言一起討論交流^^ ~~~
沒有留言:
張貼留言