Android应用内语言切换实现
来源:互联网 发布:剑倚天下进阶数据最新 编辑:程序博客网 时间:2024/05/21 10:21
Android应用内语言切换实现
转http://my.oschina.net/jack1900/blog/290694在一款应用里面有个设置页面,其中有一项“语言切换”功能,就是在使用APP的过程中,动态的去切换APP的语言,具体参照微信设置页面。起先想来是很简单的事情嘛,不就是个简单的资源国际化嘛,strings.xml资源文件一整还不给OK?真正动起手来就真不是这么一回事了,国际化是没问题,但是怎样能更改所有页面的文字资源呢,这是一个问题。下面介绍下网上找的几个方案。
一、API欺骗
烧制到手机中的android.jar包含了Android所需的各种类与方法;而供开发者使用的android.jar只是其中的一部分。API欺骗是指在应用中去模拟未公开的类和方法让应用编译通过并生成APK,然而在应用实际运行中调用的却仍是烧制到手机中真实的android.jar。
二、使用Java反射机制
IActivityManager与ActivityManagerNative都是非公开类,使用Java反射去调用其中的方法。
但是这个弊端是显而易见的,上述两种方法都是去更改系统的语言的类型,功能和你去设置页面去设置语言类型的效果一样。发现对当前系统设置了新的Locale后,不单自己的应用语系改变了,系统所有的应用语系都改变了。这肯定是不合理的。或许你会说,在退出app的时候,大不了再把语言给改回来呗。可是在Android里面,杀死APP的原因多种多样,有内存杀,有用户强杀,有滑动侧滑杀,你又能如何判断APP是何时被Kill的呢。下面介绍下我的解决方案,实现的效果还是不错的。依旧Github代码地址在最下方,有兴趣的同学可以去下载看下。
第一步、使用Android开放的api更改Configuration,同时把语言类型保存下来
第二步、Destroy当前页面,重新绘制才能更改语言类型
如果你的页面不是首页,你调用上述代码只会更新当前页面,压在栈中的Activity依然不会更新界面。比如微信设置语言成功后,会自动跳转到首页,当然首页的内容也是更新后的,它的实现方式也很简单,与我们上面写的大同小异。就是监听设置成功后,destroy所有存在的页面,再跳转到首页。这时你的app就能满足了上面的需求了,可是别急还有第三步。
第三步、只要你的应用不彻底从Dalvik或者ART中彻底移除,上述都没问题。但是如果重新开机,或者强制杀掉应用,再次启动,就恢复到以前的语言类型了。
这会我们就用到第一步中保存的语言的类型了,在所有页面的基类BaseActivity中,每次都调用下语言设置的方法,这样就能把页面给强制设置成业务需求的语言类型了。OK,这个问题就完满解决了,要为你的APP添加这个功能的话,对代码的改动是非常小的。下面附上代码地址:https://github.com/JackCho/SwitchLanguageDemo
git地址:https://github.com/JackCho/SwitchLanguageDemo.git
- Android应用内语言切换实现
- Android应用内语言切换实现
- Android应用内语言切换实现
- Android应用内语言切换实现
- Android应用内语言切换实现
- android 实现应用内语言切换
- Android 应用内切换语言
- android 应用内切换语言
- android 应用内切换语言
- android 应用内语言切换
- android 应用内切换语言
- android 应用内切换语言
- Android多语言,应用内切换语言
- Android应用内切换应用语言
- Android应用内即时切换语言
- android 2种切换语言方式:应用内切换和随系统而切换 代码实现重启应用
- 应用内切换语言
- 新应用的知识整理-Android studio中应用多语言支持及应用内语言切换的实现
- Java学习笔记之IO 4
- hdu 1011 Starship Troopers
- Servlet生命周期
- gsoap 注意事项
- Hadoop深入研究(HDFS)---HDFS介绍
- Android应用内语言切换实现
- Android的RadioButton和checkBox的用法-android学习之旅(十九)
- 封装分页类
- poj1436 Horizontally Visible Segments
- uva 10106 Product(高精度大数乘法)
- maven基本使用
- Linux下使用Supervise
- Gh0st源码学习(三)生成DLL和DAT文件
- 使用javaswing设定背景图片为窗体大小(原创)