前提:创建英文版对应的string.xml
第一步:添加EventBus引用
implementation 'org.greenrobot:eventbus:3.0.0'
第二步:在BaseActivity中
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (isRegisterEventBus()) {
EventBus.getDefault().register(this);
}
changeAppLanguage();
}
public void changeAppLanguage() {
String languageType = SPUtils.getString(this,MyConstaints.LANGUAGE_SETTING,"");
// 本地语言设置
Locale myLocale = new Locale(languageType);
Resources res = getResources();
DisplayMetrics dm = res.getDisplayMetrics();
Configuration conf = res.getConfiguration();
conf.locale = myLocale;
res.updateConfiguration(conf, dm);
}
protected boolean isRegisterEventBus(){
return false;
}
public void onEvent(String str) {
switch (str) {
case MyConstaints.EVENT_REFRESH_LANGUAGE:
changeAppLanguage();
recreate();//刷新界面
break;
}
}
第三步:在设置语言的地方调用
private String[] languageId = {"zh", "en"};
SPUtils.putString(TwoLevelMenuActivity.this,MyConstaints.LANGUAGE_SETTING, languageId[which]);
EventBus.getDefault().post(MyConstaints.EVENT_REFRESH_LANGUAGE);
到这就已经OK啦,如果对您有一点点帮助,还请给个赞,谢谢!