Android学习–Android app 语言切换功能
功能:
app用户根据自己的语言喜好,设置app语言。语言设置只针对本app,并在下次启动应用时保留前一次启动设置。
更新语言:
public static void changeAppLanguage(Resources resources, String lanAtr) { Configuration config = resources.getConfiguration(); DisplayMetrics dm = resources.getDisplayMetrics(); if (lanAtr.equals("ru_RU")) { config.locale = new Locale("ru", "RU"); } else if (lanAtr.equals("en_US")) { config.locale = Locale.ENGLISH; } else if (lanAtr.equals("pt")) { config.locale = new Locale("pt"); } else { config.locale = Locale.getDefault(); } resources.updateConfiguration(config, dm); }
sharePreferences存入设置语言:
Sharences sharedPreferences = getActivity().getSharedPrefeivity().getPackageName(), 0); sharedPreferences.edit().putString("language", lanAtr).commit();
语言更新后,对于之前出现且目前仍旧存活的activity,语言设置是不生效的。可以通过重启对应的activity,让语言及时生效。
private void restart() { Intent it = new Intent(getActivity(), MainActivity.class); //MainActivity是你想要重启的activity it.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); it.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); getActivity().startActivity(it); }
NOTE:
- 一般,从用户体验角度讲,语言设置功能入口会放在App的前几层,如果入口太深,导致用户无法快速找到语言设置入口,并且如果要讲应用重启的话,用户行为操作记录会比较麻烦。
- 重启对应Activity有几种方式:
- 如果用户进入语言设置需要太多的层级,或者在操作语言设置之前操作的其他行为,APP想保存的,那可以通过广播的方式(sendBroadcast()),语言改变时发送广播,所有activity接受到广播后(BroadcastReceiver),都进行重启操作;
- 如果允许用户设置语言后,app回到主目录,这样就简单很多,直接调用上面的restart()方法即可。
重启singleTask activity:
如果你的启动activity是singleTask,向上面那样重启,语言还是不生效的。这种情况如何呢?可以通过了解、利用其生命周期来解决,在切回singleTask属性的activity时,activity会调用onNewIntent()方法。 重写该方法就可以。以下是一种解决方法,先finish自己,然后重启自己。
@Overrideprotected void onNewIntent(Intent intent) { if (intent.getAction() == null) { finish(); Intent i = new Intent(this, MainActivity.class); startActivity(i); // overridePendingTransition(0, 0); } else { //其他逻辑 } }
结束语:
APP语言设置不复杂,主要是如何将语言设置及时生效,涉及activity重启,广播等。
转载于:https://www.cnblogs.com/Free-Thinker/p/5395303.html
Android学习–Android app 语言切换功能相关推荐
- android locale app内设置,Android app应用多语言切换功能实现
本文实例为大家分享了Android app应用实现多语言切换功能,供大家参考,具体内容如下 1.添加多语言文件在不同的 value 文件夹下(例如 value .value-en.values-zh- ...
- Android实现app内的语言切换功能
我在目前所在的公司负责一个app项目的维护,最近需要对这个项目进行国际化,适配10多个国家的语言,在实现国际化过程中,遇到了很多问题,最麻烦的就是翻译了,得一个个将翻译从excel复制到资源文件中,还 ...
- android的app语言无法切换,Android应用实现多语言切换
关于Android应用实现多语言切换,有好几种办法,网上也搜到很多资料,这里有个简单有效的办法. 步骤如下: 在资源文件中新建一个文件夹values-en,在里面新建一个strings.xml,把默认 ...
- Android 8.0 App内切换语言不生效的问题记录
国内大部分简单应该都只做了中文简体版,但是有部分项目需要面向国际化,甚至可能就是主打国外市场.因此我们有时候会遇到需要APP内做多语言切换的功能需求. 如何做多语言切换,网上资料还是很多的,本文也不是 ...
- Android学习之——APP番茄工作法——小结(1)
2014-4-3补: 最近一直忘记回复:给位需要源码的,请到这里https://github.com/MrFuFuFu/TomatoTask 版本已经更新为1.0.1,且已在豌豆荚,应用宝,360手 ...
- android签到功能开发,Android应用开发之Android简单实现app每月签到功能
本文将带你了解Android应用开发Android简单实现app每月签到功能,希望本文对大家学Android有所帮助. 本文实例为大家分享了Android实现app每月签到功能的具体代码,供大家参考, ...
- uni-app项目使用多语言切换功能
1.下载安装(vue-i18n模块) npm install vue-i18n --save 2.如果项目中没有package.json文件,在根目录下新建package.json文件,并把以下代码加 ...
- html怎么实现多语言图片切换,JavaScript实现--中英语言切换功能
最近弄的项目是面向国际的,所以老总说要有语言切换功能.第一感觉好像不难吧 网上查了下,感觉实现方法就2种: 一:2个版本的HTML.至于怎么切换,方法也很多. 不过这种方法,除了笨,我实在不知道用什么 ...
- Android app应用多语言切换功能实现
最近在做一个多语言切换的功能,类似于微信的语言切换,搜了下资料基本上都是以下这种: 1. 实现的效果 和微信类似,在设置界面打开切换语言的界面,选择语言后重启 HomeActivity,语言切换完成, ...
最新文章
- 【深度学习】NetAug(网络增强)—Dropout的反面
- 邮件列表统计(网站推广)
- squirrel-foundation-demo
- 蚂蚁集团CEO胡晓明宣布辞任
- JS无刷新修改URL类似博客园翻页效果
- python lncrna_分析指令备份.sh
- esp8266作为wifi中继固件 无线信号延展
- vue 循环播放音乐列表 音量控制
- 稿费一般多少钱一千字_写网络小说能挣多少钱,稿费都是怎么算的?
- Linux网卡模块,裁剪Linux并实现网卡模块的安装(附有命令移植的脚本)
- int和integer
- arange()用于生成一维数组 reshape()将一维数组转换为多维数组
- swiper 滚回第一个数据_分散能源数据的区块链应用
- jy-13-LINUX——Linux
- R包circlize:柱状图用腻了?试试好看的弦状图
- 如何处理网站被植入恶意的一些代码导致的被机房拦截提示
- Django之爱鲜蜂项目开发 day06(二)
- 经济基础知识(初级)【4】
- 大航海时代2皮耶德攻略(SFC日版)
- 怎么精炼java代码_网页播放器开发(四)代码精炼提纯(示例代码)
热门文章
- 怎么把程序内部坐标转为屏幕坐标_全网最详细CNC加工中心程序代码大全!
- python学习-日志(logging的定义、参数、format、示例代码、创建logging对象、设置Handler)
- php+如何按文字分割文件夹,PHP实现的大文件切割与合并功能示例
- js中every用法_js数组中的方法 some, every, filter, find,map, reduce讲解及使用场景
- c语言网络在线人数统计,教你用ASP程序实现网站在线人数统计
- linux非守护线程一直不释放,Linux pthread 和 java thread 的是 / 非守护线程的行为
- ajax怎么在html与php中使用,如何使用ajax和php将数据从数据库表放到html表
- java encode in ansi_Java应用中的编码问题
- 35岁电子工程师的艰难抉择
- 基于FPGA的竞赛抢答器