1.首先提供多語言對應的string值 如en對應英語, fr對應法語
兩個文件中包含同樣的key, 對應不同的語言的value
2.java代碼相應用戶切換語言動作
private static void setAppLanguage(Context context, Locale locale) { Resources resources = context.getResources(); DisplayMetrics metrics = resources.getDisplayMetrics(); Configuration configuration = resources.getConfiguration(); //Android 7.0以上的方法 if (VERSION.SDK_INT >= 24) { configuration.setLocale(locale); configuration.setLocales(new LocaleList(locale)); context.createConfigurationContext(configuration); //實測,updateConfiguration這個方法雖然很多博主說是版本不適用 //但是我的生產環境androidX+Android Q環境下,必須加上這一句,才可以通過重啟App來切換語言 resources.updateConfiguration(configuration, metrics); } else if (VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN_MR1) { //Android 4.1 以上方法 configuration.setLocale(locale); resources.updateConfiguration(configuration, metrics); } else { configuration.locale = locale; resources.updateConfiguration(configuration, metrics); } }
3. 將用戶選擇保持到SharedPrefrence中, 通過在BaseActivity中來設置切換的動作
需要注意:在手動觸發切換動作后, 需要退出所有的Activity, 重新啟動,才會生效