Android如何实现中英文语言切换
短信预约 -IT技能 免费直播动态提醒
这篇文章主要介绍Android如何实现中英文语言切换,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
代码
@Override protected void attachBaseContext(Context newBase) { Locale newLocale; if (SPUtil.getBoolean(newBase,"isEN")) { //设置英文 newLocale = Locale.ENGLISH; } else { //设置中文 newLocale = Locale.SIMPLIFIED_CHINESE; } Context context = MyContextWrapper.wrap(newBase, newLocale); super.attachBaseContext(context); }
是的,直接在你继承的BaseActivity里面重载(@Override)attachBaseContext方法即可。
里面有一个自定义的MyContextWrapper:
import android.content.Context;import android.content.ContextWrapper;import android.content.res.Configuration;import android.content.res.Resources;import android.os.Build;import android.os.LocaleList; import java.util.Locale; public class MyContextWrapper extends ContextWrapper { public MyContextWrapper(Context base) { super(base); } public static ContextWrapper wrap(Context context, Locale newLocale) { Resources res = context.getResources(); Configuration configuration = res.getConfiguration(); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { configuration.setLocale(newLocale); LocaleList localeList = new LocaleList(newLocale); LocaleList.setDefault(localeList); configuration.setLocales(localeList); context = context.createConfigurationContext(configuration); } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { configuration.setLocale(newLocale); context = context.createConfigurationContext(configuration); } return new ContextWrapper(context); }}
关于SPUtil,就是一个简单的SharedPreferences内容存取类:
import android.content.Context;import android.content.SharedPreferences; public class SPUtil { public static void put(Context context, String key, Object value) { SharedPreferences sp = context.getSharedPreferences("config", Context.MODE_PRIVATE); SharedPreferences.Editor edit = sp.edit(); if (value instanceof String) { edit.putString(key, (String) value); } else if (value instanceof Integer) { //JDK1.7之后可以把引用数据类型转为基本数据类型 edit.putInt(key, (int) value); } else if (value instanceof Boolean) { edit.putBoolean(key, (boolean) value); } edit.apply(); } public static String getString(Context context, String key) { SharedPreferences sp = context.getSharedPreferences("config", Context.MODE_PRIVATE); return sp.getString(key, ""); } public static int getInt(Context context, String key) { SharedPreferences sp = context.getSharedPreferences("config", Context.MODE_PRIVATE); return sp.getInt(key, 0); } public static boolean getBoolean(Context context, String key) { SharedPreferences sp = context.getSharedPreferences("config", Context.MODE_PRIVATE); return sp.getBoolean(key, false); } public static void clearData(Context context){ SharedPreferences sp = context.getSharedPreferences("config", Context.MODE_PRIVATE); sp.edit().clear().apply(); } }
代码到这里也就结束了,下面是添加国际化语言的简单步骤:
切记修改语言之后一定要重新加载页面,不然不会立即生效
SPUtil.put(SettingActivity.this,"isEN",isChecked);recreate();
以上是“Android如何实现中英文语言切换”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网行业资讯频道!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341