編輯:關於Android編程
本文實例為大家分享了Android app應用實現多語言切換功能,供大家參考,具體內容如下
1.添加多語言文件
在不同的 value 文件夾下(例如 value 、value-en、values-zh-rTW 文件夾)添加不同語言的 string.xml 文件,我們的項目添加了英文、簡體中文、繁體中文三種語言,如下圖所示:
Project模式:
Android模式:
其中英文需要翻譯,繁體如果沒有專門翻譯的話,可以找個簡繁轉換網站,直接將簡體中文轉成繁體中文,推薦一個網站:
http://www.vifo.com.cn/fanti/
下面我只講解簡體中文和英文的做法;
2.現在我們可以在activity啟動裡面(onCreate()或者onResume())獲取系統的語言:
Locale locale = Locale.getDefault();
String language = locale.getLanguage();
language就是我們從系統拿到的語言,這裡如果是中文,拿到的是“zh”,如果是英文是“cn”;
3.拿到了系統語言,那麼我們就要通過系統語言的判斷改變我們app對應的系統語言:
protected void showLanguage(String language) { //設置應用語言類型 Resources resources = getResources(); Configuration config = resources.getConfiguration(); DisplayMetrics dm = resources.getDisplayMetrics(); if (language.equals("zh")) { config.locale = Locale.SIMPLIFIED_CHINESE; } else { config.locale = Locale.ENGLISH; } resources.updateConfiguration(config, dm); //保存設置語言的類型(這個裡面我先保存一下,下面會講到他的用處) PreferenceUtil.commitString("language", language); }
這樣子,如果你的手機開始的時候系統是中文,那麼你的app就是中文,如果開始的時候系統是英文,那麼你的app就是英文,這個只是適用開始的時候語言就已經設定好了,但是如果你現在的app用的是中文,app沒有退出的情況下,直接去把系統設置成英文,那麼你返回到你的app的時候並不會是英文,依然是中文,必須在程序退出之後,再進來的時候才會成為英文,這樣子的體驗一點都不好,那麼我們怎麼樣才能做到你改系統語言,我的app就跟著去改變呢,所謂的動態改變。那麼我們可以這樣子做。
@Override protected void onResume() { super.onResume(); String LAN = PreferenceUtil.getString("language",""); Locale locale = Locale.getDefault(); String language = locale.getLanguage(); Log.i("語言————————",language); if(!language.equals("")){ if(!LAN.equals(language)){ freshView();//重新啟動MainActivity } } showLanguage(language); } private void freshView(){ Intent intent = new Intent(this, MainActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); startActivity(intent); }
首先PreferenceUtil這個是我自己寫的工具類,就是SharedPreferences存儲,在onResume()裡面,重要的就是做個判斷,拿到的language是不是和之前保存系統的language一樣,如果不一樣,重新啟動MainActivity,這樣子就做到了重新獲取系統language。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持本站。
Dev Club 是一個交流移動開發技術,結交朋友,擴展人脈的社群,成員都是經過審核的移動開發工程師。每周都會舉行嘉賓分享,話題討論等活動。本期,我們邀請了騰訊WXG A
這裡先貼出原文,下次再來翻譯;:p 原文地址:http://developer.android.com/training/basics/actionbar/styli
小米手機的WIFI設置是在沒有某WIFI熱點的情況下,即使已經保存了的WIFI密碼也是不顯示的,這樣就造成我們沒法將其刪除.只能再回到原來的WIFI熱點下才
廢話不多說,先看效果圖: package com.example.circlemenuofbottom.anim;import android.v