前言
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中的文本没有改变》
历史上的今天
暂无评论...
随机推荐
Beyond Compare4 30天试用到期的解决办法
网上有很多关于Beyond Compare4破解方法,国内还是没有习惯付费软件,也有偶尔跟着潮流。这个软件功能太强大了,有时候不得不佩服开发者,我只是偶尔用一下,下面是摘抄网络的内容,记录于此,方便自己查阅。隐藏内容!密码验证后才能查看!提交PS: 上面只是个人观点,也就偶尔使用此工具,如果是...
顾城:远和近
你一会看我一会看云 我觉得你看我时很远你看云时很近
Google Nexus 7 adb devices时出现 ???????????? no permissions
我在使用Nexus 7平板时,在使用adb devices后出现如下:List of devices attached???????????? no permissions同时在DDMS中显示设备名也显示????????????,也无法显示进程名,无法查看log。解决方法如下:...
季羡林:漫谈人生的意义和价值
当我还是一个青年大学生的时候,报纸杂志上曾刮起一阵讨论人生的意义与价值的微风,文章写了一些,议论也发表了一通。我看过一些文章,但自己并没有参加进去。原因是,有的文章不知所云,我看不懂。更重要的是,我认为这种讨论本身就无意义,无价值,不如实实在在地干几件事好。时光流逝,一转眼,自己已经到了望九之年,...
穆旦:春
绿色的火焰在草上摇曳,他渴求着拥抱你,花朵。反抗着土地,花朵伸出来,当暖风吹来烦恼,或者欢乐。如果你是醒了,推开窗子,看这满园的欲望多么美丽。 蓝天下,为永远的谜蛊惑着的是我们二十岁的紧闭的肉体,一如那泥土做成的鸟的歌,你们被点燃,卷曲又卷曲,却无处归依。呵,光,影,...
[摘]WindowManger层级记录
前言记录一下Android中WindowManger的层级相关知识。摘抄于此,方便自己查阅。本文摘抄于《Android中WindowManger的层级分析》正文Window 分类应用 Window(ApplicationWindow: 对应一个 Acitivity)子 Window...