900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > Android实现应用内多语言切换

Android实现应用内多语言切换

时间:2019-02-17 05:54:49

相关推荐

Android实现应用内多语言切换

本文地址:/qq_40785165/article/details/113901406,转载需附上此地址

大家好,我是小黑,一个还没秃头的程序员~~~

只要以积极的心态去观察、去思考,就会发现,事情远没有想像中的那样困难。

现在很多App内都具备了多语言切换的功能,今天的内容就是实现这个功能,效果如下:

话不多说,直接上步骤

一.准备一个string.xml文件,里面随便准备一些中文字符串

<resources><string name="app_name">多语言翻译案例</string><string name="str1">你好</string><string name="str2">我是</string><string name="str3">多语言</string><string name="str4">翻译</string><string name="str5">切换成中文</string><string name="str6">切换成英文</string><string name="str7">切换成法语</string><string name="str8">跳转到下个页面</string></resources>

二.在AndroidStudio中安装一个插件,搜索“AndroidLocalize”,这个插件是用来翻译文本资源文件的,在string.xml文件上右键选择转换语言,选择想要的语言即可,之后就会自动生成不同语言的资源文件, 如图所示

三:编写代码进行切换,这里只贴出主要代码,其他代码想要的可以去下载源代码查看:/fjjxxy/multi-language-demo.git

切换语言是通过修改Locale属性进行修改语言的,这里有个地方需要注意,如果你只是单纯的切换语言,之前没有finish的页面还是会保留原来的语言,所以你也可以对所有的activity进行堆栈管理,将所有的activity进行重新创建(recreate),即可将原先的页面的语言一并更新,下面分别是两种做法的代码

/*** 这个方法虽然更新了资源但是只能以后的界面生效,之前没有finish的页面还是保留原来的语言** @param locale* @param context*/public static void shiftLanguage(Locale locale, Context context) {Resources resources = context.getResources();Configuration config = resources.getConfiguration();DisplayMetrics dm = resources.getDisplayMetrics();config.locale = locale;resources.updateConfiguration(config, dm);}

private void changeAllActivitysLanguage(Locale locale) {//使用堆栈管理器进行遍历重新创建Stack<Activity> allActivityStacks = AppManager.getInstance().getAllActivityStacks();for (Activity allActivityStack : allActivityStacks) {shiftLanguage(locale, allActivityStack, this);}}/*** 这个方法是为了让全部的activity都修改语言** @param locale* @param activity* @param context*/public static void shiftLanguage(Locale locale, Activity activity, Context context) {Resources resources = context.getResources();Configuration config = resources.getConfiguration();DisplayMetrics dm = resources.getDisplayMetrics();config.locale = locale;resources.updateConfiguration(config, dm);if (!(activity instanceof SecondActivity)) {activity.recreate();}}

将相关的Locale参数传入方法中即可,例如

mTvChangeToChinese.setOnClickListener(v -> shiftLanguage(Locale.CHINESE,this))

到此,Android应用多语言切换的功能也就完成了,还是很简单的,这里就更加得注意平时的编码习惯了,尽量把字符串都放到资源文件中,方便以后进行切换语言,最后,也希望喜欢我文章朋友们可以帮忙点赞、收藏、评论,也可以关注一下,如果有问题可以在评论区提出,谢谢大家的支持!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。