安卓国际化【多语言以及不同语言下的图片适配】

前言:
在一些场合中,比如即将到来的冬奥会,我们做的APP就可能需要面对别的国家的用户,这个时候如果你的APP只支持中文那就太尴尬了。废话不多说:

一.多语言文字适配

我们用英文举例,首先在我们的app\src\main\res目录下新建values-en文件夹,然后在该文件夹下新建一个叫做strings的xml文件,用来存放英文string资源。如果你的命名是正确的,那么你的strings文件上会出现一面小国旗,如下图。这里我们需要注意两点:
1.我们默认的原来的那个文件夹隐含的意思是values-ch,两个文件夹中的strings文件的内容(name)应该一致,否则编译器会提示错误,例如:

<string name="choose_language">"Choice language"</string>//这个是values-en里的资源
<string name="choose_language">"选择语言"</string>//这个是原来的values文件夹中的资源

2.在情况1时,当有一些资源你觉得在英文环境下不需要使用,当放在原来的文件夹下还会报错,那我们可以在原来的values文件夹下新建一个叫做donottranslate.xml的文件,将不需要翻译的资源拷贝到其中。文件结构如下:

在这里插入图片描述
3.安卓7.0之前:

 1.1.第一步:
 private void chooseLanguage(Locale locale) {
        Resources resources = getResources();
        DisplayMetrics dm = resources.getDisplayMetrics();
        Configuration config = resources.getConfiguration();
        config.locale = locale;
        resources.updateConfiguration(config, dm);
        reStart();
    }

    private void reStart() {
         Intent intent = new Intent(this, MainActivity.class);
         intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
         startActivity(intent);
    }

2.在安卓7.0之后,比较相似,贴一个别的博主的(侵权删)
在这里插入图片描述

二.多语言图片适配

图片和文字的操作基本类似,只需保持两个文件夹的的图片资源命名一致即可。但是在获取图片资源时系统会根据语言在两个文件夹中选择,当我们的环境是英文时,如果英文文件夹中没有所需要的图片文件,则会用中文文件夹中的图片替换。
在这里插入图片描述

发布了47 篇原创文章 · 获赞 15 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_41525021/article/details/103355167