前言:
在一些场合中,比如即将到来的冬奥会,我们做的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之后,比较相似,贴一个别的博主的(侵权删)
二.多语言图片适配
图片和文字的操作基本类似,只需保持两个文件夹的的图片资源命名一致即可。但是在获取图片资源时系统会根据语言在两个文件夹中选择,当我们的环境是英文时,如果英文文件夹中没有所需要的图片文件,则会用中文文件夹中的图片替换。