Android应用内设置多语言,可随系统语言改变而改变,也可设置app为固定语言不受系统语言影响

本文介绍如何在Android应用中实现多语言支持,包括自动跟随系统语言变化和设置固定应用语言。通过MultiLanguageUtil工具类,结合Application的生命周期方法进行初始化和切换,确保应用内的所有页面都能正确显示选定的语言。详细实现代码已上传至GitHub。
摘要由CSDN通过智能技术生成

转载请标明出处: Android应用内设置多语言,可随系统语言改变而改变,也可设置app为固定语言不受系统语言影响_安卓app 默认都可以跟随系统语言吗-CSDN博客,本文出自:【陈少华的博客】

一、效果图

效果图

https://github.com/hnsycsxhzcsh/MultiLanguage/blob/master/myres/multilanguage.gif

二、实现原理

1、Application的onCreate中初始化,根据本地sp保存的多语言信息来确定app中显示哪种语言

2、在设置界面选择对应语言,然后把语言信息保存到sp中,重启应用

三、实现代码

1、首先要有一个多语言方法类MultiLanguageUtil


import android.annotation.TargetApi;
import android.content.Context;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.os.Build;
import android.os.LocaleList;
import android.text.TextUtils;
import android.util.DisplayMetrics;
import com.multilanguage.ConstantGlobal;
import java.util.Locale;

/**
 * Created by HARRY on 2018/6/5 0005.
 */

public class MultiLanguageUtil {

    public static Context attachBaseContext(Context context) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
            return createConfigurationResources(context);
        } else {
            setConfiguration(context);
            return context;
        }
    }

    /**
     * 设置语言
     *
     * @param context
     */
    public static void setConfiguration(Context context) {
        Locale appLocale = getAppLocale(context);

        //如果本地有语言信息,以本地为主,如果本地没有使用默认Locale
        Locale locale = null;
        String spLanguage = SpUtil.getString(context, ConstantGlobal.LOCALE_LANGUAGE);
        String spCountry = SpUtil.getString(context, ConstantGlobal.LOCALE_COUNTRY);
        if (!TextUtils.isEmpty(spLanguage) && !TextUtils.isEmpty(spCountry)) {
            if (isSameLocal(appLocale, spLanguage, spCountry)) {
                locale = appLocale;
            } else {
                l
  • 6
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值