大家好,我是小黑,一个还没秃头的程序员~~~
只要以积极的心态去观察、去思考,就会发现,事情远没有想像中的那样困难。
现在很多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文件上右键选择转换语言,选择想要的语言即可,之后就会自动生成不同语言的资源文件, 如图所示
三:编写代码进行切换,这里只贴出主要代码,其他代码想要的可以去下载源代码查看:https://gitee.com/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应用多语言切换的功能也就完成了,还是很简单的,这里就更加得注意平时的编码习惯了,尽量把字符串都放到资源文件中,方便以后进行切换语言,最后,也希望喜欢我文章朋友们可以帮忙点赞、收藏、评论,也可以关注一下,如果有问题可以在评论区提出,谢谢大家的支持!