Android学习–Android app 语言切换功能
生活随笔
收集整理的這篇文章主要介紹了
Android学习–Android app 语言切换功能
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
功能:
app用戶根據自己的語言喜好,設置app語言。語言設置只針對本app,并在下次啟動應用時保留前一次啟動設置。
更新語言:
public static void changeAppLanguage(Resources resources, String lanAtr) { Configuration config = resources.getConfiguration(); DisplayMetrics dm = resources.getDisplayMetrics(); if (lanAtr.equals("ru_RU")) { config.locale = new Locale("ru", "RU"); } else if (lanAtr.equals("en_US")) { config.locale = Locale.ENGLISH; } else if (lanAtr.equals("pt")) { config.locale = new Locale("pt"); } else { config.locale = Locale.getDefault(); } resources.updateConfiguration(config, dm); }sharePreferences存入設置語言:
Sharences sharedPreferences = getActivity().getSharedPrefeivity().getPackageName(), 0); sharedPreferences.edit().putString("language", lanAtr).commit();語言更新后,對于之前出現且目前仍舊存活的activity,語言設置是不生效的。可以通過重啟對應的activity,讓語言及時生效。
private void restart() { Intent it = new Intent(getActivity(), MainActivity.class); //MainActivity是你想要重啟的activity it.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); it.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); getActivity().startActivity(it); }NOTE:
- 一般,從用戶體驗角度講,語言設置功能入口會放在App的前幾層,如果入口太深,導致用戶無法快速找到語言設置入口,并且如果要講應用重啟的話,用戶行為操作記錄會比較麻煩。
- 重啟對應Activity有幾種方式:
- 如果用戶進入語言設置需要太多的層級,或者在操作語言設置之前操作的其他行為,APP想保存的,那可以通過廣播的方式(sendBroadcast()),語言改變時發送廣播,所有activity接受到廣播后(BroadcastReceiver),都進行重啟操作;
- 如果允許用戶設置語言后,app回到主目錄,這樣就簡單很多,直接調用上面的restart()方法即可。
重啟singleTask activity:
如果你的啟動activity是singleTask,向上面那樣重啟,語言還是不生效的。這種情況如何呢?可以通過了解、利用其生命周期來解決,在切回singleTask屬性的activity時,activity會調用onNewIntent()方法。 重寫該方法就可以。以下是一種解決方法,先finish自己,然后重啟自己。
@Overrideprotected void onNewIntent(Intent intent) { if (intent.getAction() == null) { finish(); Intent i = new Intent(this, MainActivity.class); startActivity(i); // overridePendingTransition(0, 0); } else { //其他邏輯 } }結束語:
APP語言設置不復雜,主要是如何將語言設置及時生效,涉及activity重啟,廣播等。
轉載于:https://www.cnblogs.com/Free-Thinker/p/5395303.html
總結
以上是生活随笔為你收集整理的Android学习–Android app 语言切换功能的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: apache 支持.htaccess重写
- 下一篇: httpservlet获取请求端IP地址