最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android實現(xiàn)app應用多語言切換功能

 更新時間:2016年08月04日 11:46:38   作者:木偶然  
這篇文章主要為大家詳細介紹了Android實現(xiàn)app應用多語言切換功能的相關資料,類似于微信的語言切換,感興趣的小伙伴們可以參考一下

最近在做一個多語言切換的功能,類似于微信的語言切換,搜了下資料基本上都是以下這種:

1. 實現(xiàn)的效果

 

和微信類似,在設置界面打開切換語言的界面,選擇語言后重啟 HomeActivity,語言切換完成,下次重新打開 App ,也是用戶設置的語言。 

2. 實現(xiàn)步驟
 1). 添加多語言文件 
在不同的 value 文件夾下(例如 value 、value-en、values-zh-rTW 文件夾)添加不同語言的 string.xml 文件,我們的項目添加了英文、簡體中文、繁體中文三種語言,如下圖所示:

 

其中英文需要翻譯,繁體如果沒有專門翻譯的話,可以找個簡繁轉(zhuǎn)換網(wǎng)站,直接將簡體中文轉(zhuǎn)成繁體中文,我用的這個網(wǎng)站:在線中文簡體轉(zhuǎn)繁體。 

2). 更新 Configuration 中的 locale 屬性 
參照 Android 開發(fā)者官網(wǎng) 上 的描述,Configuration 包含了設備的所有的配置信息,這些配置信息會影響應用獲取的資源。例如 string 資源,就是根據(jù) Configuration 的 locale 屬性來判斷該取哪種語言的 string 資源,默認是 value 文件夾下的。 

主要代碼如下:

Resources resources = getContext().getResources();
DisplayMetrics dm = resources.getDisplayMetrics();
Configuration config = resources.getConfiguration();
 // 應用用戶選擇語言
 config.locale = Locale.ENGLISH;
 resources.updateConfiguration(config, dm); 

我們用了 Locale 中的預設值 Locale.ENGLISH、Locale.TRADITIONAL_CHINESE和 Locale.SIMPLIFIED_CHINESE,如果你需要設置的語言沒有預設值,你可以自己新建一個 Locale 對象,具體自行 Google 吧。 

注:跟隨系統(tǒng)設置是 Locale.getDefault() 

3). 重啟 HomeActivity
 我 們的 App 有個啟動頁 WelcomeActivity,類似微信那個小人啟動頁,如果從歡迎頁重啟,并不是一個好的體驗,應該和微信的語言設置一樣,直接回到 HomeActivity ,而不是從 WelcomeActivity 重新打開。實現(xiàn)其實也很簡單,代碼如下: 

Intent intent = new Intent(this, HomeActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
getActivity().startActivity(intent); 

正常來說這段代碼應該是沒問題的,但是假如你的 App 存在某個 activity 和當前設置頁 activity 不在一個 task 棧內(nèi)的話(比如你從某個通知頁用 FLAG_ACTIVITY_NEW_TASK 啟動的一個 activity),就不會應用語言設置。因此可以直接殺掉當前 App 的進程,保證是“整個”重啟了: 

 Intent intent = new Intent(this, HomeActivity.class);
 intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
 startActivity(intent);
 // 殺掉進程
 android.os.Process.killProcess(android.os.Process.myPid());
 System.exit(0); 

按道理殺掉進程的兩行代碼任意一行即可,但是查閱相關資料,還是兩個都加上吧,如果有詳細了解歡迎溝通。此段代碼其實參考自 CustomActivityOnCrash 開源項目,有興趣的可以研究下這個開源庫捕捉崩潰信息,重啟應用部分的代碼。

個人覺得這種重啟HomeActivity的方法太粗暴了而且體驗不好,不過貌似微信也是這么重啟了HomeActivity。一般語言切換的設置會藏的比較深,比如微信,如果一個用戶對手機操作不熟或者說對這個應用不熟,不小心切換了不知道什么語言然后給我跳回主頁,再想設回中文就麻煩咯。所以,我認為最好是切完語言立即刷新然后還是停留當前頁比較好。具體實現(xiàn)如下: 
1、還是要添加多語言文件,跟上面的步驟1一樣;
2、在BaseActivity中實現(xiàn)語言切換代碼: 

@Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    EventBus.getDefault().register(this);
    changeAppLanguage();
  } 
public void changeAppLanguage() {
     String sta = Store.getLanuageIsChinese() ? "zh" : "en";//這是SharedPreferences工具類,用于保存設置,代碼很簡單,自己實現(xiàn)吧
     // 本地語言設置
     Locale myLocale = new Locale(sta);
     Resources res = getResources();
     DisplayMetrics dm = res.getDisplayMetrics();
     Configuration conf = res.getConfiguration();
     conf.locale = myLocale;
     res.updateConfiguration(conf, dm);
   } 
 public void onEvent(String str) {
     switch (str) {
       case Constant.EVENT_REFRESH_LANGUAGE:
         changeAppLanguage();
         recreate();//刷新界面
         break;
    }
  } 
 @Override
   protected void onDestroy() {
    super.onDestroy();
     EventBus.getDefault().unregister(this);
  } 

3、設置界面中的實現(xiàn)自然就是更新sharedPreferences 中的設置,然后發(fā)送EventBus就行啦     

 if () {//中文
       Store.setLanuageIsChinese(true);
     } else if () {//英文
       Store.setLanuageIsChinese(false);
     }
     EventBus.getDefault().post(Constant.EVENT_REFRESH_LANGUAGE);

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • Android短信驗證碼監(jiān)聽解決onChange多次調(diào)用的方法

    Android短信驗證碼監(jiān)聽解決onChange多次調(diào)用的方法

    本篇文章主要介紹了Android短信驗證碼監(jiān)聽解決onChange多次調(diào)用的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • Android 5.0+ 屏幕錄制實現(xiàn)的示例代碼

    Android 5.0+ 屏幕錄制實現(xiàn)的示例代碼

    這篇文章主要介紹了Android 5.0+ 屏幕錄制實現(xiàn)的示例代碼,從 5.0 開始,系統(tǒng)提供給了 app 錄制屏幕的一系列方法,不需要 root 權(quán)限,只需要用戶授權(quán)即可錄屏,相對來說較為簡單,感興趣的小伙伴們可以參考一下
    2018-05-05
  • Android中獲取apk安裝包信息的方法

    Android中獲取apk安裝包信息的方法

    這篇文章主要介紹了Android中獲取apk安裝包信息的方法,如圖標、應用包名、版本、安裝路徑等,需要的朋友可以參考下
    2014-05-05
  • android開發(fā)教程之實現(xiàn)滑動關閉fragment示例

    android開發(fā)教程之實現(xiàn)滑動關閉fragment示例

    這篇文章主要介紹了android實現(xiàn)滑動關閉fragment示例,需要的朋友可以參考下
    2014-03-03
  • Android Studio 打包生成APK文件方法

    Android Studio 打包生成APK文件方法

    Android Studio是谷歌推出一個Android集成開發(fā)工具,基于IntelliJ IDEA。這篇文章主要介紹了Android Studio 打包生成APK文件方法,需要的朋友可以參考下
    2018-07-07
  • 基于flutter?sound插件實現(xiàn)錄音與播放功能

    基于flutter?sound插件實現(xiàn)錄音與播放功能

    這篇文章主要介紹了基于flutter?sound插件實現(xiàn)錄音與播放功能,介紹了如何錄音,如何播放本地和遠程音頻文件,以及如何實現(xiàn)動畫,在錄制完音頻文件后如何上傳,這些都是我們平常使用這個功能會遇到的問題。在使用的過程中遇到的問題也有列出,需要的朋友可以參考下
    2022-05-05
  • Android 復制文本內(nèi)容到系統(tǒng)剪貼板的最簡單實例(分享)

    Android 復制文本內(nèi)容到系統(tǒng)剪貼板的最簡單實例(分享)

    下面小編就為大家?guī)硪黄狝ndroid 復制文本內(nèi)容到系統(tǒng)剪貼板的最簡單實例(分享)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-04-04
  • Android實現(xiàn)簡單下拉篩選框

    Android實現(xiàn)簡單下拉篩選框

    這篇文章主要為大家詳細介紹了一款簡單靈活的Android下拉篩選框,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-10-10
  • flutter 微信聊天輸入框功能實現(xiàn)

    flutter 微信聊天輸入框功能實現(xiàn)

    這篇文章主要介紹了flutter 微信聊天輸入框功能實現(xiàn),本文通過實例圖文相結(jié)合給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-03-03
  • android 上傳aar到私有maven服務器的示例

    android 上傳aar到私有maven服務器的示例

    這篇文章主要介紹了android 上傳aar到私有maven服務器,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11

最新評論

民权县| 遵义市| 永安市| 龙游县| 佛冈县| 乳山市| 锡林郭勒盟| 永泰县| 孟州市| 长岭县| 皋兰县| 平昌县| 重庆市| 海丰县| 北票市| 长武县| 金沙县| 浦东新区| 沧州市| 金塔县| 内江市| 台山市| 潞城市| 德庆县| 乐都县| 汶上县| 湟源县| 固镇县| 渭南市| 克什克腾旗| 沐川县| 海淀区| 改则县| 广丰县| 漾濞| 亳州市| 北海市| 仁布县| 新营市| 多伦县| 温州市|