不想废话,直接上干货

@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国际化-中英文切换相关推荐

  1. uni-app使用vue-i18n实现国际化(中英文切换)

    uni-app使用vue-i18n实现国际化(中英文切换) 1.导入vue-i18n(npm install vue-i18n) 2.创建common文件夹 --> lang.js export ...

  2. react国际化中英文切换

    欢迎关注微信公众号:[ 全栈攻略 ] react项目需要支持国际化,推荐插件"react-intl-universal",原因是"react-intl"存在一些 ...

  3. android中英文切换功能,Android APP 中英文切换

    实习期间,师父要求做app的中英文切换,就顺便记录了下. 一.AndroidManifest.xml文件(清单文件) 在每个要切换语言的Activity下面添加: android:configChan ...

  4. android app英文 英文模式,Android APP 中英文切换

    实习期间,师父要求做app的中英文切换,就顺便记录了下. 一.AndroidManifest.xml文件(清单文件) 在每个要切换语言的Activity下面添加: android:configChan ...

  5. SpringMVC 国际化-中英文切换

    国际化是为了实现不同地区页面呈现不同的语言问题: 编写程序实现国际化,在xml文件中做响应的配置,然后编写.properties文件即可. 实现登录界面的中英文切换: xml文件配置: <!-- ...

  6. Qt Quick实现国际化 中英文切换简明图文步骤

    目录 前言 一.步骤 1.在pro文件中添加需要生成的ts文件: 2.通过工具-外部-语言家-update 生成zh_CN.ts和en_US.ts 3.通过语言家打开生成的ts文件进行翻译 4.将zh ...

  7. Android实现中英文切换(”傻瓜式“操作)

    一.配置AndroidManifest文件 二.新建values-en-rUS和values-zh-rCN文件夹,并且在两个文件夹中都新建一个strings.xml文件 三.values.values ...

  8. android 错误中英互译,Android 中英文切换及遇到的问题

    Android 中英文切换及遇到的问题 背景:近期由于项目上的需求接受到了一个中英文切换需求.只需要在切换中英系统语言的时候改变app的名称为中文或英文就可以.关于如何实现这些可以参考如下文章: 实现 ...

  9. Android 中英文切换及遇到的问题

    Android 中英文切换及遇到的问题 背景:近期由于项目上的需求接受到了一个中英文切换需求.只需要在切换中英系统语言的时候改变app的名称为中文或英文就可以.关于如何实现这些可以参考如下文章: 实现 ...

最新文章

  1. 机器学习中的数据不平衡问题----通过随机采样比例大的类别使得训练集中大类的个数与小类相当,或者模型中加入惩罚项...
  2. 数据结构:O(nlogn)算法
  3. Jboss7或者wildfly部署war包的问题
  4. 遇到填报无计可施?一文讲透自由表填报,数据分析效率直线提升
  5. C/C++字符串使用整理
  6. import numpy as np_纪录27个NumPy操作
  7. ubuntu 中 ROS 一些报错的解决
  8. 报表通过url向数据集传参
  9. 如何使用VS2012进行简单程序的DEBUG(入门级)
  10. 好的串行代码与好的并行代码的区别(Zz)
  11. 软件观念革命:交互设计精髓_2021年中国传媒大学设计学考研招生分析、参考书目、复试线、真题回忆、考研经验指南篇...
  12. windows屏幕放大镜
  13. 毕业生登记表特长填写计算机,大学生毕业登记表中有何特长该怎么填啊。
  14. 如何用Python制作词云,对1000首古诗做词云分析!
  15. 软件测试工程师岗位职责、岗位要求
  16. R语言之导入数据源(二)
  17. 微信小程序:微擎开发飞鹅打印机配置
  18. 令克软件再推OpenAPI与MAS系统服务,强大引擎赋能券商多元化发展
  19. 基于Linux内核的纯手工极简系统研究
  20. android adb 存储权限,android adb 权限修改

热门文章

  1. 10G网络硬盘免费领 唯一款不用翻墙就能用的良心网络硬盘
  2. JS实现IE11浏览器中打开Chrome浏览器(含IE配置启用ActiveX控件配置)
  3. linux ls -l命令含义
  4. 通达信自动交易接口怎么显示大宗流入?
  5. java for循环 fanxing_【Java】泛型(二)
  6. [译]使用 Siesta 处理 Swift 网络请求
  7. 第1课:BPMN介绍
  8. IDEA中报错“Cannot resolve symple”解决办法
  9. linux 有线网络已断开,Ubuntu有线网络已断开的另一种解决方法
  10. php文件阅读器下载,蓝白清爽阅读器软件官网模板