安卓语言适配

本文介绍了一个安卓语言适配的简单demo,通过新建不同语言的values文件夹并更新strings.xml实现。流程包括创建BaseActivity,切换语言时调用recreate()方法。列举了多种语言对应的Values文件名,如中文(香港):values-zh-rHK,英语(美国):values-en-rUS等。
摘要由CSDN通过智能技术生成

最近接触到了语言适配的需求,所以分享个简单的demo介绍一下流程

demo示意:



流程:

1.新建不同的values文件夹,不同的语言使用不同values中的strings.xml

具体语言分类文末会附带



2.新建BaseActivity,所有涉及语言适配的Activity继承此基类(其他类型界面同理)

public class BaseActivity extends AppCompatActivity
{
    @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
    public void changeAppLanguage(String tag){
        Resources res = getResources();
        DisplayMetrics dm = res.getDisplayMetrics();
        Configuration conf = res.getConfiguration();

        switch (tag) {
            case "简体中文":
                conf.setLocale(Locale.CHINA);
                break;
            //开启日本的语音
            case "日本语":
                conf.setLocale(Locale.JAPAN);
                break;
            case "English":
                conf.setLocale(Locale.US);
                break;
            case "繁體中文":
                conf.setLocale(Locale.TAIWAN);
                break;
        }
        res.updateConfiguration(conf, dm);
    }

MainActivity中:

点击切换语言按钮,显示选择语言弹框:


/**
 * 切换语言
 */
public void languageDialog()
{
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setTitle(R.string.title).setItems(this.getResources().getStringArray(R.array.language), new DialogInterface.OnClickListener()
    {
        @Override
        public void onClick(DialogInterface dialog, int which)
        {
            String name = MainActivity.this.getResources().getStringArray(R.array.language)[which];
            MainActivity.super.changeAppLanguage(name);
            recreate();
        }
    });
    AlertDialog alertDialog = builder.create();
    alertDialog.show();
    alertDialog.getWindow().setGravity(Gravity.CENTER);
}
可以看到,选择某种语言后,调用BaseActivity的changeAppLanguage()方法,改变系统语言,

然后调用recreate()方法重建MainActivity,达到了切换语言的效果


Demo下载链接

附:一些国家的Values文件名

中文(中国):values-zh-rCN

中文(香港):values-zh-rHK

中文(台湾):values-zh-rTW

英语(美国):values-en-rUS

英语(英国):values-en-rGB

英文(澳大利亚):values-en-rAU

英文(加拿大):values-en-rCA

英文(爱尔兰):values-en-rIE

英文(印度):values-en-rIN

英文(新西兰):values-en-rNZ

英文(新加坡):values-en-rSG

英文(南非):values-en-rZA

阿拉伯文(埃及):values-ar-rEG

阿拉伯文(以色列):values-ar-rIL

保加利亚文:  values-bg-rBG

加泰罗尼亚文:values-ca-rES

捷克文:values-cs-rCZ

丹麦文:values-da-rDK

德文(奥地利):values-de-rAT

德文(瑞士):values-de-rCH

德文(德国):values-de-rDE

德文(列支敦士登):values-de-rLI

希腊文:values-el-rGR

西班牙文(西班牙):values-es-rES

西班牙文(美国):values-es-rUS

芬兰文(芬兰):values-fi-rFI

法文(比利时):values-fr-rBE

法文(加拿大):values-fr-rCA

法文(瑞士):values-fr-rCH

法文(法国):values-fr-rFR

希伯来文:values-iw-rIL

印地文:values-hi-rIN

克罗里亚文:values-hr-rHR

匈牙利文:values-hu-rHU

印度尼西亚文:values-in-rID

意大利文(瑞士):values-it-rCH

意大利文(意大利):values-it-rIT

日文:values-ja-rJP

韩文:values-ko-rKR

立陶宛文:valueslt-rLT

拉脱维亚文:values-lv-rLV

挪威博克马尔文:values-nb-rNO

荷兰文(比利时):values-nl-BE

荷兰文(荷兰):values-nl-rNL

波兰文:values-pl-rPL

葡萄牙文(巴西):values-pt-rBR

葡萄牙文(葡萄牙):values-pt-rPT

罗马尼亚文:values-ro-rRO

俄文:values-ru-rRU

斯洛伐克文:values-sk-rSK

斯洛文尼亚文:values-sl-rSI

塞尔维亚文:values-sr-rRS

瑞典文:values-sv-rSE

泰文:values-th-rTH

塔加洛语:values-tl-rPH

土耳其文:values--r-rTR

乌克兰文:values-uk-rUA

越南文:values-vi-rVN


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值