Android国际化-中英文切换
不想废话,直接上干货
@Overrideprotected 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 {/*** 万能的put方法 (能存储String/int/boolean类型的值)* @param context* @param key* @param value*/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();}/*** 获取String* @param context* @param key* @return*/public static String getString(Context context, String key) {SharedPreferences sp = context.getSharedPreferences("config", Context.MODE_PRIVATE);return sp.getString(key, "");}/*** 获取int* @param context* @param key* @return*/public static int getInt(Context context, String key) {SharedPreferences sp = context.getSharedPreferences("config", Context.MODE_PRIVATE);return sp.getInt(key, 0);}/*** 获取Boolean* @param context* @param key* @return*/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国际化-中英文切换相关推荐
- uni-app使用vue-i18n实现国际化(中英文切换)
uni-app使用vue-i18n实现国际化(中英文切换) 1.导入vue-i18n(npm install vue-i18n) 2.创建common文件夹 --> lang.js export ...
- react国际化中英文切换
欢迎关注微信公众号:[ 全栈攻略 ] react项目需要支持国际化,推荐插件"react-intl-universal",原因是"react-intl"存在一些 ...
- android中英文切换功能,Android APP 中英文切换
实习期间,师父要求做app的中英文切换,就顺便记录了下. 一.AndroidManifest.xml文件(清单文件) 在每个要切换语言的Activity下面添加: android:configChan ...
- android app英文 英文模式,Android APP 中英文切换
实习期间,师父要求做app的中英文切换,就顺便记录了下. 一.AndroidManifest.xml文件(清单文件) 在每个要切换语言的Activity下面添加: android:configChan ...
- SpringMVC 国际化-中英文切换
国际化是为了实现不同地区页面呈现不同的语言问题: 编写程序实现国际化,在xml文件中做响应的配置,然后编写.properties文件即可. 实现登录界面的中英文切换: xml文件配置: <!-- ...
- Qt Quick实现国际化 中英文切换简明图文步骤
目录 前言 一.步骤 1.在pro文件中添加需要生成的ts文件: 2.通过工具-外部-语言家-update 生成zh_CN.ts和en_US.ts 3.通过语言家打开生成的ts文件进行翻译 4.将zh ...
- Android实现中英文切换(”傻瓜式“操作)
一.配置AndroidManifest文件 二.新建values-en-rUS和values-zh-rCN文件夹,并且在两个文件夹中都新建一个strings.xml文件 三.values.values ...
- android 错误中英互译,Android 中英文切换及遇到的问题
Android 中英文切换及遇到的问题 背景:近期由于项目上的需求接受到了一个中英文切换需求.只需要在切换中英系统语言的时候改变app的名称为中文或英文就可以.关于如何实现这些可以参考如下文章: 实现 ...
- Android 中英文切换及遇到的问题
Android 中英文切换及遇到的问题 背景:近期由于项目上的需求接受到了一个中英文切换需求.只需要在切换中英系统语言的时候改变app的名称为中文或英文就可以.关于如何实现这些可以参考如下文章: 实现 ...
最新文章
- 机器学习中的数据不平衡问题----通过随机采样比例大的类别使得训练集中大类的个数与小类相当,或者模型中加入惩罚项...
- 数据结构:O(nlogn)算法
- Jboss7或者wildfly部署war包的问题
- 遇到填报无计可施?一文讲透自由表填报,数据分析效率直线提升
- C/C++字符串使用整理
- import numpy as np_纪录27个NumPy操作
- ubuntu 中 ROS 一些报错的解决
- 报表通过url向数据集传参
- 如何使用VS2012进行简单程序的DEBUG(入门级)
- 好的串行代码与好的并行代码的区别(Zz)
- 软件观念革命:交互设计精髓_2021年中国传媒大学设计学考研招生分析、参考书目、复试线、真题回忆、考研经验指南篇...
- windows屏幕放大镜
- 毕业生登记表特长填写计算机,大学生毕业登记表中有何特长该怎么填啊。
- 如何用Python制作词云,对1000首古诗做词云分析!
- 软件测试工程师岗位职责、岗位要求
- R语言之导入数据源(二)
- 微信小程序:微擎开发飞鹅打印机配置
- 令克软件再推OpenAPI与MAS系统服务,强大引擎赋能券商多元化发展
- 基于Linux内核的纯手工极简系统研究
- android adb 存储权限,android adb 权限修改
热门文章
- 10G网络硬盘免费领 唯一款不用翻墙就能用的良心网络硬盘
- JS实现IE11浏览器中打开Chrome浏览器(含IE配置启用ActiveX控件配置)
- linux ls -l命令含义
- 通达信自动交易接口怎么显示大宗流入?
- java for循环 fanxing_【Java】泛型(二)
- [译]使用 Siesta 处理 Swift 网络请求
- 第1课:BPMN介绍
- IDEA中报错“Cannot resolve symple”解决办法
- linux 有线网络已断开,Ubuntu有线网络已断开的另一种解决方法
- php文件阅读器下载,蓝白清爽阅读器软件官网模板