从例子开始看:
1.
case R.id.english:
englishImg.setVisibility(View.VISIBLE);
chineseImg.setVisibility(View.GONE);
germanImg.setVisibility(View.GONE);
LanguageUtil.changeAppLanguage(this,LanguageUtil.ENGLISH,true);
finish();
updateLanguage();
break;
2.
public static void changeAppLanguage(Context context, String locale,
boolean persistence) {
Resources resources = context.getResources();
DisplayMetrics metrics = resources.getDisplayMetrics();
Configuration configuration = resources.getConfiguration();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
configuration.setLocale(new Locale(locale));
} else {
configuration.locale = new Locale(locale);
}
resources.updateConfiguration(configuration, metrics);
if (persistence) {
saveLanguageSetting(context, locale);
}
}
3.
private static void saveLanguageSetting(Context context, String locale) {
SharedPreferences share = context.getSharedPreferences(SP_MANE, Activity.MODE_PRIVATE);
SharedPreferences.Editor editor = share.edit();
editor.putString(LANGUAGE, locale);
editor.commit();
}
4.
private void updateLanguage(){
Intent intent = new Intent(this, LauncherActivity.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);
}
5.
public class LauncherActivity extends BaseActivity {
private Locale locale;
@Override
protected int getContentViewLayout() {
return R.layout.activity_launcher;
}
@Override
protected void initViews() {
/*获取系统语言设置*/
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
locale = getResources().getConfiguration().getLocales().get(0);
} else {
locale = getResources().getConfiguration().locale;
}
String lang = locale.getLanguage() + "-" + locale.getCountry();
String languager = LanguageUtil.getLanguageSet(this);
if (languager == null) {
if ("zh-CN".equals(lang)) {
LanguageUtil.changeAppLanguage(this, LanguageUtil.CHINESE, true);
} else if("en".equals(locale.getLanguage())){
LanguageUtil.changeAppLanguage(this, LanguageUtil.ENGLISH, true);
}else{
LanguageUtil.changeAppLanguage(this, LanguageUtil.GERMAN, true);
}
} else {
LanguageUtil.changeAppLanguage(this, languager, false);
}
}
@Override
protected void initDate() {
skitIntent();
}
private void skitIntent(){
RxTimeUtil.timer(2 * 1000, number -> {
startActivity(new Intent(LauncherActivity.this, LoginActivity.class));
finish();
});
}
@Override
protected void incoDate() {
}
@Override
protected void onDestroy() {
super.onDestroy();
RxTimeUtil.cancel();
}
}