前言
Android切换语言是很常用的功能,项目中一般都会要做做英文和中文两种语言的切换,这里就简单的记录一下改变语言相关的问题。
正文
圆规正传
监听语言切换的广播
Intent.ACTION_LOCALE_CHANGED
//如下是完整的定义
public static final String ACTION_LOCALE_CHANGED = "android.intent.action.LOCALE_CHANGED";
改变语言后Activity被重启了
一般情况下,改变语言Activity是不让其重启的。这个是Android的一个机制,比如地区、语言、屏幕旋转等的改变需要重新刷新。
改变语言,为了不让重启,可在AndroidMainfest.xml中Activity中配置如下:
//只针对语言改变
android:configChanges="locale|layoutDirection|keyboard"
当然,为了针对其他的改变导致Activity的改变,可以考虑多配置一些,如下:
<activity
android:configChanges="orientation|uiMode|keyboard|keyboardHidden|fontScale|mcc|mnc|locale|touchscreen|navigation|screenLayout|colorMode"
android:name=".MainActivity"
android:launchMode="singleInstance">
</activity>
获取当前系统的语言
String language = Locale.getDefault().getLanguage();
或者
Configuration config = MyApp.getContext().getResources().getConfiguration();
config.getLocales(); // 输出 en_US 或者zh_CN
这个MyApp.getContext()是Application中定义的,也就是当前的this。
改变语言后推荐使用Application的context获取资源文件
在Activity或者Fragment中通过语言改变后,如果在监听语言变化广播中改变语言。
获取资源文件时,推荐使用Application的context,(上一篇文《Android系统切换语言后,Activity中的文本没有改变》有简单测试)
MyApp.getContext().getResources()
参考文章
- 《Android 获取当前系统语言及地区》
- 《[Android] 切换语言后避免Activity重启方法》
- 《AndroidManifest.xml的configChanges配置简介》
- 《Android系统切换语言后,Activity中的文本没有改变》
历史上的今天
暂无评论...
随机推荐
Android studio优先引用framework.jar
前言记录一下Android Studio中编译apk优先使用自己编译的framework_classes.jar,这样就不会提示找不到资源啥的。网上也很多,但我这没成功,猜测可能跟Android Studio版本有关系。下面时我当前使用的版本,虽然又新版本,懒得更新。Android St...
顾城:远和近
你一会看我一会看云 我觉得你看我时很远你看云时很近
[摘]repo命令参考手册
前言本文是摘抄的,主要是需要一些repo的使用。记录一下,方便自己查阅。正文repo用法的基本形式为:repo <COMMAND> <OPTIONS>可选项在[]中表示,例如许多命令接收一个项目列表作为参数,你可以通过一组名字或者p本地源目录的path来指定项目...
U盘分区格式的优缺点简介
FAT16、FAT32、NTFS、ExFAT正文FAT16:优点:兼容性最好,某些数码设备可能对FAT32和NTFS格式的存储卡支持不太好,因此只能使用FAT16。缺点:最大仅支持2GB分区,空间浪费大。FAT32:优点:兼容性好。缺点:单个文件不能超过4GB,不支...
苏童:我从来不敢夸耀童年的幸福
我从来不敢夸耀童年的幸福,事实上我的童年有点孤独,有点心事重重。我父母除了拥有四个孩子之外基本上一无所有。父亲在市里的一个机关上班,每天骑着一辆破旧的自行车来去匆匆;母亲在附近的水泥厂当工人,她年轻时曾经美丽的脸到了中年以后经常是浮肿着的,因为疲累过度,也因为身患多种疾病。多少年来,父母亲靠80多元...
Log工具类
抱歉,好久没更新了,主要是在折腾91易搜(直通车:https://www.91es.com/)。最近发现项目中很多都用重复的类,因此后续多整理一下常用的实用的工具类。或许以后直接复用即可。今天重新定义了一个Log工具类VLog。(这个网上一大把),直接上代码:public class...