語言切換--國際化

最常見的就是中英文切換

補充:圖片也可以做國際化->比如各國國旗(通過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");		//保存語言選擇
		}
	}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章