Android app内语言环境切换
生活随笔
收集整理的這篇文章主要介紹了
Android app内语言环境切换
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
邏輯很簡單:
? ? ? 1 ?app內所有activity繼承自BaseActivity或BaseActivity派生出來的子類,BaseActivity中維護了一個靜態的 app Activity訪問棧,在創建和銷毀時會執行壓棧和出棧操作,所以mLocalStack內維持的是app中正在運行的activity。
? ? ? 2 ?將app的語言環境存儲在SharedPreferences中,避免app重啟時修改狀態不改變;在BaseActivity創建時取出語言環境字符串并初始化Activity語言環境(initLang方法)。
? ? ? 3 ?在頁面切換語言時,調用BaseActivity的switchLang方法,finish當前運行的所有activity,并跳轉到app主頁面。
?
?| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | public?abstract?class?BaseActivity?extends?Activity?{ ????//?activity訪問棧 ????private?static?Stack<BaseActivity>?mLocalStack?=?new?Stack<BaseActivity>(); ????protected?BaseActivity?????????????mContext; ? ????@Override ????protected?void?onCreate(Bundle?savedInstanceState)?{ ????????super.onCreate(savedInstanceState); ????????mContext?=?this; ? ????????//?壓棧 ????????mLocalStack.add(this); ? ????????initLang(); ????} ? ????@Override ????protected?void?onDestroy()?{ ????????//?出棧 ????????mLocalStack.remove(this); ????????super.onDestroy(); ????} ? ????private?void?initLang()?{ ????????Resources?res?=?getResources(); ????????Configuration?config?=?res.getConfiguration(); ????????Locale?locale?=?Locale.getDefault(); ????????String?langStr?=?""; ????????//TODO?獲取Sharedpreferences中存儲的app語言環境 ????????if("zh".equals(langStr)){ ????????????locale?=?Locale.CHINA; ????????}else?if("en".equals(langStr)){ ????????????locale?=??Locale.ENGLISH; ????????}else?if{ ????????????//..... ????????} ????????config.locale?=?locale; ????????res.updateConfiguration(config,?res.getDisplayMetrics()); ????} ????? ????protected?void?switchLang(String?newLang){ ????????//TODO?更新Sharedpreferences中存儲的app語言環境 ????????? ????????//?finish?app內存中的所有activity ????????while?(0?!=?mLocalStack.size())?{ ????????????mLocalStack.pop().finish(); ????????} ????????? ????????//?跳轉到app首頁 ????????startActivity(MainActivity.class); ????} ????? ????public?void?startActivity(Class<??extends?BaseActivity>?cls)?{ ????????startActivity(new?Intent(this,?cls)); ????} } |
?
轉載于:https://www.cnblogs.com/Free-Thinker/p/5395314.html
總結
以上是生活随笔為你收集整理的Android app内语言环境切换的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Matlab中数组元素引用——三种方法
- 下一篇: 【转】TCP协议中的三次握手和四次挥手(