Android 程序语言切换

本文介绍了如何在Android应用中实现多语言切换功能,包括语言文件夹的命名规则,如values-xx,以及在MainActivity中进行配置的步骤。提供了一个名为LanguageDemo的示例项目,其源码已上传至github,读者可以通过查看源码和截图来理解具体实现,切换语言后需刷新或重启Activity。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在我们自己的Android应用程序内,可以实现多语言切换的功能。

首先我们先了解多国语言文件夹命名方式

当然你也可以创建一些特定的文件夹,一般命名规则:values-xx。

好了,现在来看看具体实现吧(有不足的地方欢迎大家留言);我自己写了demo,源码托管在github上:LanguageDemo

先看demo的截图吧:




现在来看看具体实现吧:



在功能清单文件中对要进行切换MainAcitivity 进行配置:


android:launchMode="singleTop"
android:configChanges="locale|layoutDirection"


切换语言的关键代码:

 /**
     * 设置语言
     */
    private void setLanguage(int index){
        Log.d("setLanguage",""+index);
        Resources resources = getResources();
        Configuration config = resources.getConfiguration();
        DisplayMetrics dm = resources .getDisplayMetrics();
        switch (index){
            case 0:
                //跟随系统
                config.locale = Locale.getDefault();
                break;
            case 1:
                //简体中文
                config.locale = Locale.SIMPLIFIED_CHINESE;
                break;
            case 2:
                //英文
                config.locale = Locale.ENGLISH;
                break;
            case 3:
                //德文
                config.locale = Locale.GERMAN;
                break;
            case 4:
                //法文
                config.locale = Locale.FRENCH;
                break;
            case 5:
                //其他语言 本地语言
                config.locale = new Locale("xj");
                break;

        }
        resources.updateConfiguration(config, dm);
        SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
        sp.edit().putString("local",config.locale.getLanguage()).commit();
        startActivity(new Intent(this,MainActivity.class));
    }

选择完语言后,必须要刷新或重启Activity,

在Application OnCreate中:


@Override
    public void onCreate() {
        SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
        String localconfig = sp.getString("local","");
        Configuration config = getResources().getConfiguration();
        DisplayMetrics metrics = getResources().getDisplayMetrics();

        if(null!=localconfig&&!"".equals(localconfig)){
            mlocale = new Locale(localconfig);
        }else{
            mlocale = Locale.getDefault();
        }
        config.locale = mlocale;
        getResources().updateConfiguration(config, metrics);


    }

这样进入或打开程序都可以应用之前用户的设置了;



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值