返回顶部
首页 > 资讯 > 移动开发 >Android开发-应用中英文(语言)切换(二)
  • 490
分享到

Android开发-应用中英文(语言)切换(二)

androidandroidstudioide 2023-09-11 22:09:58 490人浏览 安东尼
摘要

        APP中针对不同国家不同地区的人群使用那么应用的语言自然也要能够随时进行切换,最近做的项目有中文和英文切换的需求,所以在了解了一下网上常用的方法后记录一下我使用的方法,只是简单的应用,后续如果有不同需求需要自己去改。♻  

        APP中针对不同国家不同地区的人群使用那么应用的语言自然也要能够随时进行切换,最近做的项目有中文和英文切换的需求,所以在了解了一下网上常用的方法后记录一下我使用的方法,只是简单的应用,后续如果有不同需求需要自己去改。♻

        一、Android Studio新建工程

         新建工程就不过多赘述了,建好之后记得运行一下,看看是否建立的正确,养成良好习惯。

        二、添加对应语言的配置文件

        在res目录下新建一个对应语言的配置文件(这里以英文为例)。

 好,建立好配置文件后外面可以看看res目录下就多了values-en文件夹。

 然后点击进去这个英文的配置文件,将默认中文中的字符定义全部复制过来替换成英文。

        原默认中文文件:

        需要切换的英文文件:

         接下来定义一下主界面的UI,随便写了几个按键做测试

         代码:

            

         

        三、添加语言切换与保存的工具

        添加两个 LanguageUtil、SpUserUtils java类文件。

        LanguageUtil 代码:

package com.example.my_language_test3;import android.app.Activity;import android.content.Intent;import android.content.res.Configuration;import android.content.res.Resources;import android.os.Build;import android.text.TextUtils;import android.util.DisplayMetrics;import android.util.Log;import org.apache.commons.lang3.StringUtils;import java.util.HashMap;import java.util.Locale;public class LanguageUtil {        private static final String ENGLISH = "en";    private static final String CHINESE = "ch";    private static final String TRADITIONAL_CHINESE = "zh_rTW";    private static HashMap languagesList = new HashMap(3) {{        put(ENGLISH, Locale.ENGLISH);        put(CHINESE, Locale.CHINESE);        put(TRADITIONAL_CHINESE, Locale.TRADITIONAL_CHINESE);    }};        public static void changeAppLanguage(Activity activity, String language, Class cls) {        Resources resources = activity.getResources();        Configuration configuration = resources.getConfiguration();        // app locale 默认简体中文        Locale locale = getLocaleByLanguage(StringUtils.isEmpty(language) ? "zh" : language);        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {            configuration.setLocale(locale);        } else {            configuration.locale = locale;        }        DisplayMetrics dm = resources.getDisplayMetrics();        resources.updateConfiguration(configuration, dm);        Log.e("Log","设置的语言:" + language);        //finish();        // 重启app        Intent intent = new Intent(activity, cls);        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);        activity.startActivity(intent);        //加载动画        //activity.overridePendingTransition(R.anim.anim_right_in, R.anim.anim_left_out);        //activity.overridePendingTransition(0, 0);    }        private static Locale getLocaleByLanguage(String language) {        if (isContainsKeyLanguage(language)) {            return languagesList.get(language);        } else {            Locale locale = Locale.getDefault();            for (String key : languagesList.keySet()) {                if (TextUtils.equals(languagesList.get(key).getLanguage(), locale.getLanguage())) {                    return locale;                }            }        }        return Locale.ENGLISH;    }        private static boolean isContainsKeyLanguage(String language) {        return languagesList.containsKey(language);    }}
SpUserUtils 代码:
package com.example.my_language_test3;import android.content.Context;import android.content.SharedPreferences;public class SpUserUtils {    private static SharedPreferences sp;    private static SharedPreferences getSp(Context context) {        if (sp == null) {            sp = context.getSharedPreferences("SpUtil", Context.MODE_PRIVATE);        }        return sp;    }        public static void putString(Context context, String key, String value) {        SharedPreferences preferences = getSp(context);        //存入数据        SharedPreferences.Editor editor = preferences.edit();        editor.putString(key, value);        editor.commit();    }        public static String getString(Context context, String key) {        SharedPreferences preferences = getSp(context);        return preferences.getString(key, "");    }        public static void clearString(Context context, String key) {        SharedPreferences sp = getSp(context);        SharedPreferences.Editor editor = sp.edit();        editor.remove(key);        editor.apply();//        editor.clear();//        editor.commit();    }}

        注意:    如果 LanguageUtil 类中的 StringUtils 没有添加依赖的话需要自行添加。

        在build.gradle中添加依赖  ‘implementation 'org.apache.commons:commons-lang3:3.7'

implementation 'org.apache.commons:commons-lang3:3.7'

  随后在 MainActivity 中实现功能。

package com.example.mylanguage_test;import androidx.appcompat.app.AppCompatActivity;import android.annotation.SuppressLint;import android.os.Bundle;import android.view.View;import android.widget.Button;public class MainActivity extends AppCompatActivity implements View.OnClickListener {    private Button language1,language2;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        language1 = findViewById(R.id.language1);        language2 = findViewById(R.id.language2);        language1.setOnClickListener(this);        language2.setOnClickListener(this);    }    @SuppressLint("NonConstantResourceId")    public void onClick(View view) {        switch (view.getId()) {            case R.id.language1:                //中文简体                showSaveLanguage("zh");                break;            case R.id.language2:                //英文                showSaveLanguage("en");                break;        }    }        private void showSaveLanguage(String language){        //设置的语言、重启的类一般为应用主入口(微信也是到首页)        LanguageUtil.changeAppLanguage(this, language, MainActivity.class);        //保存设置的语言        SpUserUtils.putString(this, "language", language);    }}

        好了,到这里就可以进行简单的测试了,编译运行APP就可以看到这样的效果。

 

Screenrecorder

        到这里以及可以实现简单的中英文语言切换了,都是可以发现每当外面销毁这个应用程序后这个切换语言的设置并不会保存,在使用中不可能每次都要去选择语言吧!在上面外面添加工具类的时候添加了一个语言保存工具类就是为了后续这里使用的。

        那么首先我们需要新建一个activity,用于切换与保存使用。

 

         添加功能代码

        代码:

package com.example.mylanguage_test;import androidx.appcompat.app.AppCompatActivity;import android.content.Intent;import android.os.Bundle;public class Guidance_line extends AppCompatActivity {    //防止重复打开界面    private static boolean ISFIRST = true;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_guidance_line);        String language = SpUserUtils.getString(this, "language");        if (ISFIRST) {            ISFIRST = false;            LanguageUtil.changeAppLanguage(this, language, Guidance_line.class);        }        Intent intent = new Intent(this, MainActivity.class);        startActivity(intent);    }}

         然后下一步来到清单文件中改变启动 activity,可以看到新建之后多了一个

       将MainActivity 中的启动代码复制到我们新建的 Guidance_line Activity中去,将 exported 修改为true。

                                                                                 

         接下来运行一下应用看看效果。当我们销毁应用程序后再次打开的时候还是保留着上一次的语言设置,如果还有其他语种的也是同样的方法去添加。

        好了,到这里就记录的差不多了,这篇文章只是记录我自己实现这个功能的过程,也是参考别的大佬的文章改出来的。本篇中的demo会在下面贴上下载链接,有需要的自行下载使用。🐎

来源地址:https://blog.csdn.net/x97666/article/details/130185764

--结束END--

本文标题: Android开发-应用中英文(语言)切换(二)

本文链接: https://lsjlt.com/news/403758.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Android开发-应用中英文(语言)切换(二)
            APP中针对不同国家不同地区的人群使用那么应用的语言自然也要能够随时进行切换,最近做的项目有中文和英文切换的需求,所以在了解了一下网上常用的方法后记录一下我使用的方法,只是简单的应用,后续如果有不同需求需要自己去改。♻   ...
    99+
    2023-09-11
    android android studio ide
  • Android如何实现中英文语言切换
    这篇文章主要介绍Android如何实现中英文语言切换,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!代码@Override    protected void ...
    99+
    2023-06-22
  • Android国际化之中英文语言切换
    不想废话,直接上干货 @Override protected void attachBaseContext(Context newBase) { Loca...
    99+
    2024-04-02
  • Android实现应用内置语言切换功能
    一、需求 有时候应用需要在内部切换语言但又不影响系统的语言,比如是应用现在是中文的,系统语言也是中文的,我把应用的切换成英文显示后系统语言还是中文的,系统语言切换后也不会被改...
    99+
    2022-06-06
    Android
  • Android app应用多语言切换功能实现
    本文实例为大家分享了Android app应用实现多语言切换功能,供大家参考,具体内容如下 1.添加多语言文件 在不同的 value 文件夹下(例如 value 、value...
    99+
    2022-06-06
    多语言 app Android
  • Android实现app应用多语言切换功能
    最近在做一个多语言切换的功能,类似于微信的语言切换,搜了下资料基本上都是以下这种: 1. 实现的效果   和微信类似,在设置界面打开切换语言的界面,选择语言后重...
    99+
    2022-06-06
    多语言 app Android
  • Android App中进行语言的切换
    目录切换语言核心代码使用dragonFace改系统语言本篇简单介绍将在Android App中进行语言的切换和使用dragonFace改系统语言。 切换语言 首先需要在res 中创...
    99+
    2024-04-02
  • Android开发中实现应用的前后台切换效果
    在介绍程序实现之前,我们先看下Android中Activities和Task的基础知识。   我们都知道,一个Activity 可以启动另一个Activity,即使这个Acti...
    99+
    2022-06-06
    android开发 Android
  • Android开发中怎么在App中实现一个内语言切换功能
    这期内容当中小编将会给大家带来有关Android开发中怎么在App中实现一个内语言切换功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。代码实现:布局文件(Data-Binding模式),很简单就是两行文...
    99+
    2023-05-31
    app android pp
  • Android应用中怎么实现一个切换内置语言功能
    这篇文章给大家介绍Android应用中怎么实现一个切换内置语言功能,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一、需求有时候应用需要在内部切换语言但又不影响系统的语言,比如是应用现在是中文的,系统语言也是中文的,我把...
    99+
    2023-05-31
    android roi
  • Android开发中怎么实现Activity切换
    今天就跟大家聊聊有关Android开发中怎么实现Activity切换,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。具体如下:这里要实现的目的是:有3个Activity: A,B,C,...
    99+
    2023-05-31
    android activity roi
  • Windows 10怎么禁用Ctrl+Space切换中英文
    今天就跟大家聊聊有关Windows 10怎么禁用Ctrl+Space切换中英文,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Windows10默认使用Ctrl+Space切换中英文输...
    99+
    2023-06-26
  • Go语言在移动应用开发中的应用
    在当今移动应用市场竞争日益激烈的背景下,开发者们需要不断寻求新的技术手段来提高开发效率和应用性能。Go语言作为一种现代化的编程语言,其简洁、高效和并发优势逐渐受到了开发者的关注和青睐。...
    99+
    2024-02-22
    开发 go语言 移动应用 网络编程 内存占用 标准库
  • 做android开发用什么语言
    Android是以Linux为核心的手机操作平台,作为一款开放式的操作系统,随着Android的快速发展,如今已允许开发者使用多种编程语言来开发Android应用程序,而不再是以前只能使用Java开发Android应用程序的单一局面。那么,...
    99+
    2018-06-21
    java教程 android 开发 java
  • android开发是用java语言吗?
    android开发的主流语言是java语言,但也可以使用其他语言,例可以通过Android NDK使用C/C++作为编程语言来开发应用程序,也可使用SL4A来使用其他各种脚本语言进行编程。Android是以Linux为核心的手机操作平台,作...
    99+
    2021-05-23
    java教程 android java
  • Android开发中ViewPager实现多页面切换效果
    ViewPager用于实现多页面的切换效果,该类存在于Google的兼容包里面,所以在引用时记得在BuilldPath中加入“Android-support-v4.jar” 首...
    99+
    2022-06-06
    viewpager android开发 Android
  • 探讨Go语言在移动应用开发中的应用
    Go语言(简称Golang)作为一种快速、高效和简洁的编程语言,在移动应用开发领域也有着广泛的应用。本文将探讨Go语言在移动应用开发中的应用及具体代码示例。 一、Go语言在移动应用开发...
    99+
    2024-04-02
  • golang在跨语言开发中的应用探讨
    「Golang在跨语言开发中的应用探讨」 Go语言(Golang)作为一种开源的静态编程语言,由Google开发,具有高效的并发性能和简洁的语法设计,越来越受到开发者的青睐。在当今跨语...
    99+
    2024-03-02
    go语言 标准库
  • Go语言在Web开发中的应用探秘
    标题:Go语言在Web开发中的应用探秘 随着互联网技术的不断发展,Web开发的需求也日益增长。作为一门强大的编程语言,Go语言在Web开发领域也展现出了其强大的潜力。本文将深入探讨Go...
    99+
    2024-04-02
  • 探索Go语言在Web开发中的应用
    Go语言作为一种高效、快速的编程语言,在Web开发领域也逐渐受到了广泛的关注和应用。本文将探索Go语言在Web开发中的应用,通过具体的代码示例展示Go语言在实践中的用法和特点。 一、安...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作