最常見的就是中英文切換
補充:圖片也可以做國際化->比如各國國旗(通過drawable-xxx)
效果如下:
步驟如下:
1、res右鍵,按照下面操作中所需語言即可
2、再將之前strings.xml複製到新建的value-en 和 value-zh
strings.xm(zh)
<resources>
<string name="app_name">Test</string>
<string name="chinese">中文</string>
<string name="english">英文</string>
</resources>
strings.xm(en)
<resources>
<string name="app_name">Test</string>
<string name="chinese">Chinese</string>
<string name="english">English</string>
</resources>
3、在控件中通過@string/xxx 引用
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20sp"
android:text="@string/chinese" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20sp"
android:text="@string/english"/>
<Button
android:id="@+id/switchLanguage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/switch_language"/>
</LinearLayout>
4、設置好切換功能
public class MainActivity extends AppCompatActivity {
@BindView(R.id.switchLanguage)
Button SwitchLanguage;
private String sta;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
SwitchLanguage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//獲取上次保存的語言
// SharedPreferences sp = getSharedPreferences("fileName", MODE_PRIVATE);
// sp.getString("laguage", "zh");
//獲取當前語言
sta = getResources().getConfiguration().locale.getLanguage();
shiftLanguage(sta);
}
});
}
//切換語言
public void shiftLanguage(String sta) {
Resources resources = getResources();// 獲得res資源對象
Configuration config = resources.getConfiguration();// 獲得設置對象
DisplayMetrics dm = resources.getDisplayMetrics();// 獲得屏幕參數:主要是分辨率,像素等。
if (sta.equals("zh")) {
//轉換爲英文
config.locale = Locale.US; // 英文
resources.updateConfiguration(config, dm);
recreate();
// sp.putString("laguage", "zh"); //保存語言選擇
} else {
//轉換爲中文
config.locale = Locale.SIMPLIFIED_CHINESE; // 英文
resources.updateConfiguration(config, dm);
recreate();
// sp.putString("laguage", "en"); //保存語言選擇
}
}