文章目录

  • 背景
  • 实现
  • 验证
  • 总结

背景

有一个项目,需要提供英文版 app 给到海外客户使用,正常来说切换系统语言为英文即可(因为原来就有做多语言适配,支持英文语言)。

但是为了方便海外客户,就提了个变态需求给到开发:不管系统语言设置是啥,都使用英文语言展示。


实现

关于 app 多语言适配的方案这里就不再提了,网上有很多解决方案供同学们自己参考学习。

工具类代码如下:

package com.example.multilangfitdemo.util;import android.content.Context;
import android.content.res.Configuration;
import android.os.Build;
import android.text.TextUtils;
import android.util.DisplayMetrics;import java.util.Locale;public class LanguageUtil {private volatile static LanguageUtil languageUtil;private LanguageUtil(){}// instancepublic static LanguageUtil instance(){if (languageUtil == null){synchronized (LanguageUtil.class){if (languageUtil == null){languageUtil = new LanguageUtil();}}}return languageUtil;}/**** @param context* @param language*/public static void setDefaultLanguage(Context context, String language){if (TextUtils.isEmpty(language)){return;}Locale locale = new Locale(language);Locale.setDefault(locale);Configuration configuration = context.getResources().getConfiguration();DisplayMetrics metrics = context.getResources().getDisplayMetrics();// 不为 en 的值,默认为使用中文。(有需要同学可自行修改逻辑)Locale loc = Locale.CHINA;if (language.equals("en")){loc = Locale.ENGLISH;}if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1){configuration.setLocale(loc);}else {configuration.locale = loc;}context.getResources().updateConfiguration(configuration, metrics);}}

Activity 基类的 onCreate() 生命周期方法中调用:

public class BaseActivity extends AppCompatActivity {@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);LanguageUtil.setDefaultLanguage(this, "en");}
}

验证



运行后如上图示,系统语言为中文,不过 app 展示的也是英文语言版本。


总结

另外不要在自定义的 Application 类中获取 getResources() ,亲自测试后发现设置指定语言功能并没有生效,后面发现是 getResources 这个方法导致。

想深入了解的同学参考如下:

Android Appication及Activity的 Resource 生成代码分析

千万不要在application里面重写getResources


技术永不眠!我们下期见!

Android 中设置指定语言相关推荐

  1. android中设置默认语言、默认时区

    1. 设置默认时区: /build/tools/buildinfo.sh安卓本来应该在这里面加: +    echo "persist.sys.timezone=XXX"      ...

  2. android指定日期闹钟,如何在android中设置特定日期的闹钟?

    嗨我需要使用时间选择器来设置特定日期的闹钟.当我给出静态输入时,闹钟设置不正确并响铃. 例如:我给静态输入(与日期,月份和年份),但它不振铃.这是我的代码.如何在android中设置特定日期的闹钟? ...

  3. android 自定义menu 背景颜色,Android中设置Menu菜单的文字颜色为白色

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 开发者交流裙: 188168040 Android中设置Menu菜单的文字颜色为白色,一般情况下,Android中Menu菜单的title文字颜色为黑色, ...

  4. Android 中设置线程优先级的正确方式(2种方法)

    Android 中设置线程优先级的正确方式(2种方法) 在 Android 中,有两种常见的设置线程优先级的方式: 第一种,使用 Thread 类实例的 setPriority 方法,来设置线程优先级 ...

  5. Android中设置TextView的颜色setTextColor

    tv.setTextColor(Color.parseColor("#FFFFFF")); tv.setTextColor(Color.WHITE); tv.setTextColo ...

  6. TIA博途Wincc中设置不同语言下字体大小的具体方法

    TIA博途Wincc中设置不同语言下字体大小的具体方法 大家在做多语言的项目时,可能会遇到这样的情况: 即博图编写的触摸屏语言切换时,中文翻译成英文太长了,遮挡了其他地方,那么如何设置不同语言下的字体 ...

  7. [Android] Eclipse Android中设置模拟器屏幕大小几种方法

    在Eclipse Android中设置模拟器屏幕大小是本文要介绍的内容,主要是来了解并学习Eclipse Android中模拟器的设置,具体关于Eclipse Android内容的详解来看本文  . ...

  8. android中设置控件的搞,Android中如何自定义控件

    Android开发中难免遇到需要自定义控件的需求,有些是产品的要求在Android标准控件库中没有满足要求的,有些是开发过程中没有代码的可复用,自己定义的. 一个好的自定义控件应当和Android本身 ...

  9. java安卓计时器_如何在android中设置计时器

    通过java.util.Timer和java.util.TimerTask使用计时器的标准Java方法在Android中运行良好,但是你应该知道这个方法创建了一个新线程. 您可以考虑使用非常方便的Ha ...

最新文章

  1. 分站实现php,php城市分站是什么原理
  2. mysql 连接查询两个条件_MySQL之多表查询一 介绍 二 多表连接查询 三 符合条件连接查询 四 子查询 五 综合练习...
  3. 机器人抓取方式,值得研究。
  4. 什么镜头最适合拍风景_为什么您的风景摄影套件中应始终装有远摄镜头
  5. saas物资管理界面设计_大型物流企业都在用的SaaS系统,看大规模运配网络如何实现精细化管理?...
  6. Linux 多线程开发-线程的属性-分离detached和连接joinable
  7. 基本类型赋值和普通对象赋值的不同
  8. java对象添加字段_99.9%的Java程序员都说不清的问题:JVM中的对象内存布局?
  9. StringUtil.isEmpty(str)、StringUtil.isNotEmpty(str)和StringUtil.isBlank(str)区别
  10. 微软收购雅虎要中国政府审批?
  11. python 3 12306余票查询脚本
  12. win10桌面的计算机图标怎么删除,win10电脑桌面图标如何去掉快捷箭头。
  13. osm地图数据 mysql_一种OSM地图数据中路网交叉口节点自动合并方法与流程
  14. php车牌识别,跨平台车牌识别应用 Light-LPR
  15. 在头条号和西瓜视频发布视频,播放量20万,却是零收益?
  16. 原生js实现运维小姐姐的九宫格抽奖活动、心跳快了
  17. 对旅游行业APP前五名(个人观点)优缺点的简析
  18. Win11新电脑怎么跳过联网
  19. MySQL数据库操作-查看数据库 (SHOW DATABASES)
  20. 【Spring Boot】21.集成elasticsearch

热门文章

  1. 《麦肯锡方法》第5章 组建团队-思维导图
  2. 重建windows系统的引导盘(亲测可用)
  3. 要学就学透彻!Spring Security 中 CSRF 防御源码解析
  4. 听劝!不要啥都不懂就学PMP!这100个考试关键点,带你直击考试现场
  5. Spark SQL原理及常用方法详解(二)
  6. ueditor+实现word图片自动上传
  7. Java前叉夹器_新手知识:为什么说公路直装夹器更好呢?
  8. win 7 安装python 失败 提示Service Pack 1
  9. ODOO 进出口外贸行业解决方案
  10. 保研被鸽,去了自己不理想的学校怎么办?