因為公司的產品大部分是銷售到國外的,所以領導要求app有語言切換功能。我在網上搜了些相關知識并實現了功能,在這里做個中英文切換的demo記錄下來。
創新互聯建站專注于永安企業網站建設,響應式網站,成都商城網站開發。永安網站建設公司,為永安等地區提供建站服務。全流程按需定制,專業設計,全程項目跟蹤,創新互聯建站專業和態度為您提供的服務
先看看demo的效果:
效果就是這樣子。當然也可以做成其他語言的切換,具體根據需求而定。
原理其實很簡單,就是多個strings.xml進行切換然后在刷新Activity。
首先,在AndroidManifest.xml文件中的每個需要切換語言的Activity中加入android:configChanges="locale"。
然后在res文件夾下添加對應語種的values文件:
比如中文簡體就是values-zh-rCN、英文就是values-en。
當然還有其他語種的,這里我只做了兩個常用的有需要的可以去查看各國語言縮寫、各國語言簡稱。其原理都是一樣的。
values-zh-rCN/strings.xml:
LanguageDemo 中文 英文 紅色 ××× 藍色 綠色 紫色
values-en/strings.xml:
LanguageDemo Chinese English Red Orange Blue Green Purple
布局文件:
最后是切換語言的核心代碼:
private Configuration configuration; private DisplayMetrics displayMetrics; private Resources resources; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); resources = getResources();// 獲得res資源對象 configuration = resources.getConfiguration();// 獲得設置對象 displayMetrics = resources.getDisplayMetrics(); } //中文 public void Chinese(View view) { configuration.locale = Locale.SIMPLIFIED_CHINESE; resources.updateConfiguration(configuration, displayMetrics); startActivity(new Intent(MainActivity.this,MainActivity.class)); finish(); } //英文 public void English(View view) { configuration.locale = Locale.US; resources.updateConfiguration(configuration, displayMetrics); startActivity(new Intent(MainActivity.this,MainActivity.class)); finish(); }
當然刷新頁面也不止這一種方法可以用onCreate(),不過這個方法限制比較多。還有recreate(),使用這個方法屏幕會閃一下。
那么源碼地址:http://down.51cto.com/data/2229088
如果你喜歡我的文章就關注我的博客吧!