Android 仿微信多语言切换

本文介绍了在Android中仿微信实现多语言切换的详细步骤,包括功能实现、配置多语言文件、使用MultiLanguageUtils工具类,以及在Application中监听语言变化。文中还提供了Demo地址和相关的内容推荐。

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

 

目录

一、简介

二、效果预览

三、实现步骤

1、功能实现

2、配置多语言文件

四、MultiLanguageUtils分析

五、Demo地址

六、内容推荐


一、简介

我想搜到这篇文章的朋友应该不需要我多介绍,也明白多语言是用来干嘛。。。

当一个应用越做越大之后,用的人越来越多,要满足不同的群体所以都会有这一功能。

不过你会发现越到后面添加这功能会比较麻烦。所以前期做好准备为佳。

不扯这乱七八糟的东西了。。。。亮剑吧!!!

二、效果预览

是不是要先看看大招是咋样的,万一是花拳绣腿。不满意,就浪费大家时间了。

大家可可能会奇怪,不是切换成英文了吗?  怎么还有中文字体。

其实我只是对首页的 标题 底部导航栏  做了处理 其他的没有变

所以大家看效果的话 只需观察 那两处地方即可。

如果对这个功能有兴趣可以继续往下观察。。没兴趣的也请往下看 ,看完可能会更没兴趣。哈哈 开个玩笑

三、实现步骤

1、功能实现

布局我就不解释了,就随便搭搭。源码地址就贴在最下面,想copy的同学自己去下载哈。对了,如果不错。别忘了 Star

主要的功能就在于当我选中某个语言时,点击保存(上图是“打钩”的图片)的时候去实现语言的切换。 那么,是怎么实现的呢?预知后事如何且看下文分解!!

上菜:点击保存执行事假

     //区分是选中哪种语言
    switch (datas.get(checkPos)) {
        case "跟随系统"://切换到 跟随系统
            //获取手机系统语言
            Locale locale = MultiLanguageUtils.getSystemLanguage().get(0);
            String language = locale.getLanguage();
            String country = locale.getCountry();
            //切换成手机系统语言  例:手机系统是中文则换成中文
            MultiLanguageUtils.changeLanguage(activity,language, country);
            //清空SP数据 ,用于当系统切换语言时 应用可以同步保持切换 例:系统转换成英文 则应用语言也会变成英文
            MultiLanguageUtils.changeLanguage(activity,null,null);
             break;
        case "简体中文":// 切换到 中文
            MultiLanguageUtils.changeLanguage(activity, "zh", "ZH");
            break;
        case "English"://切换到 英文
            MultiLanguageUtils.changeLanguage(activity, "en", "US");
            break;
        default://默认切换成中文
            MultiLanguageUtils.changeLanguage(activity, "zh", "ZH");
            break;
    }
    //关闭应用所有Activity
    //AppManager.getAppManager().finishAllActivity();
    //启动 MainActivity
    //IntentUtils.toActivity(activity, MainActivity.class,true);

上面的切换语言功能都已经封装成一个工具类,当需要执行切换语言的时候 只需调用一行代码即可。是不是很兴奋 ,其实更麻烦的在后面,先安慰一下大家。

要让切换语言起效果,还需要重启APP。

例:上面代码是先调用了个人封装的一个Activity管理类来关闭所有的页面,然后再重启MainActivity。大家可以根据情况自己写,也可以到源码地址找到相关工具类拿去用。

大餐来了 MultiLanguageUtils.class  先感谢下大神提供的这个类:https://blog.csdn.net/m0_38074457/article/details/84993366

个人做了调整,改的有点面目全非,现在分享给大家。如果还行。。。你们懂得 点个赞意思一下就行 ,,关注,分享,打赏 我是不敢想的。

import android.app.Activity;
import android.app.Application;
import android.content.Context;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.os.Build;
import android.os.Bundle;
import android.os.LocaleList;
import android.support.v4.os.ConfigurationCompat;
import android.support.v4.os.LocaleListCompat;
import android.text.TextUtils;
import android.util.DisplayMetrics;

import java.util.Locale;

import blcs.lwb.lwbtool.Constants;

/**
 * Todo 多语言设置
 * 来自:https://blog.csdn.net/m0_38074457/article/details/84993366
 * 使用步骤:
 * 1、Application中onCreate添加registerActivityLifecycleCallbacks(MultiLanguageUtils.callbacks);
         @Override
         protected void attachBaseContext(Context base) {
         //系统语言等设置发生改变时会调用此方法,需要要重置app语言
         super.attachBaseContext(MultiLanguageUtils.attachBaseContext(base));
         }
 * 2、改变应用语言调用MultiLanguageUtils.changeLanguage(activity,type,type);
 */
//public final static String SP_LANGUAGE="SP_LANGUAGE";
//public final static String SP_COUNTRY="SP_COUNTRY";
public class MultiLanguageUtils {
    /**
     * TODO 1、 修改应用内语言设置
     * @param language    语言  zh/en
     * @param area      地区
     */
    public static void changeLanguage(Context context,String language, String area) {
        if (TextUtils.isEmpty(language) && TextUtils.isEmpty(area)) {
            //如果语言和地区都是空,那么跟随系统s
            SPUtils.put(context, Constants.SP_LANGUAGE,"");
            SPUtils.put(context, Constants.SP_COUNTRY,"");
        } else {
            //不为空,那么修改app语言,并true是把语言信息保存到sp中,false是不保存到sp中
            Locale newLocale = new Locale(language, area);
            setAppLanguage(context,newLocale);
            saveLanguageSetting(context, newLocale);
        }
    }


    /**
     * Todo 更新应用语言
     * @param context
     * @param locale
     */
    private stati
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值