永发信息网

Android版的微信的多语言是怎么实现的

答案:2  悬赏:70  手机版
解决时间 2021-03-14 10:54
Android版的微信的多语言是怎么实现的
最佳答案
使用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
全部回答
drawable-zh-rcn-mdpi根据语言的不同建立不同的drawble文件夹, 然后图片的名字相同(中文-英文),系统会自动查找对应的图片资源
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
厦门鼓浪屿有什么上海设施吗?比如摩托艇什么
庆云到日照怎么走
一人之下宝姐特辑mv日语歌
绝味鸭脖步行街店我想知道这个在什么地方
深圳至贵阳的动车为什么买不到票了
橙子幼儿园地址有知道的么?有点事想过去
如图,直线y1=x+b和抛物线y2=x²+mx+n都经
由名人撰文而出名的景点
新疆哈蜜桃水蜜瓜战神是谁?
泰安市财源鞋业有限公司地址在什么地方,想过
(15分)二十世纪的战争与和平材料一 1939年
手机刷机之后上wifi能被对方追踪到吗?
财源牛肉拉面怎么去啊,有知道地址的么
北京石景山十字绣装裱、字画装裱地址推荐.
广东肇庆员工最多的电子厂是哪一家?
推荐资讯
如果吃了东西肚子疼怎么找商家维权
如何快速消除室内装修污染
违章代码6022什么意思
漳州市坤生家具有限公司在什么地方啊,我要过
天子朝玉堂地址在什么地方,想过去办事
谁知道怎样用糯米粘上排骨、在这先谢谢了
广东警官学院要获得多少学分才可以毕业?
可以体现兄弟情义的霸气的帮派誓言。在线等。
七夕oppo手机卖场氛围布置
怎样在桌面创建记事本的快捷图标
鱼丸姐姐的微笑读后感(不要介绍)谢谢。急需!
什么类型的人适合跑业务?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?