Android 实现中英文切换

在开发海外项目的时候,需要实现app内部的中英文切换功能,所有的英文都是内置的,整体思路为:

创建一个sp对象,存储当前系统的语言类型,然后在BaseActivity中对语言进行判断;

//公共Activitypublic abstract class BaseActivity extends AppCompatActivity {@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {setTransparent();super.onCreate(savedInstanceState);setContentView(initLayout());String languageCode = SpUtils.getString(this, Constants.LANGUAGE);//从SP中取出来的当前语言类型;中文是:"cn",英文是:"en",对应底下的这个languageCode//系统内置的设置app内语言的功能;Locale locale = new Locale(languageCode);Locale.setDefault(locale);Configuration config = new Configuration();config.setLocale(locale);getResources().updateConfiguration(config, getResources().getDisplayMetrics());}//设置布局protected abstract int initLayout();
}

2、可以新开一个页面,用来set当前的sp中数据(只写代码)

Constants.LANGUAGE:

public static final String LANGUAGE = "application_language";//语言设置

//可以自定义一个String字符串,不用全局变量

//设置语言的方法,通过传入的language判断当前用户选择的是中文还是英文
public void setLanguage(String language) {if (language.equals("中文")) {switchLanguage("cn");} else {switchLanguage("en");}}//选完之后就可以将app中的语言进行切换public void switchLanguage(String languageCode) {Locale locale = new Locale(languageCode);Locale.setDefault(locale);Configuration config = new Configuration();config.setLocale(locale);getResources().updateConfiguration(config, getResources().getDisplayMetrics());SpUtils.putString(mContext, Constants.LANGUAGE, languageCode);
//(这个只是SP的工具类,可以不用这个,直接用SP写入,都是一样的,我习惯别名用静态的,不容易写错)restartApplication(mContext);}//然后重启app生效public static void restartApplication(Context context) {Intent intent = context.getPackageManager().getLaunchIntentForPackage(context.getPackageName());if (intent != null) {intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);context.startActivity(intent);}System.exit(0);}
SpUtils:
public class SpUtils {private static final String spFileName = "app";public static String getString(Context context, String strKey) {SharedPreferences setPreferences = context.getSharedPreferences(spFileName, Context.MODE_PRIVATE);String result = setPreferences.getString(strKey, "");return result;}public static String getString(Context context, String strKey,String strDefault) {SharedPreferences setPreferences = context.getSharedPreferences(spFileName, Context.MODE_PRIVATE);String result = setPreferences.getString(strKey, strDefault);return result;}public static void putString(Context context, String strKey, String strData) {SharedPreferences activityPreferences = context.getSharedPreferences(spFileName, Context.MODE_PRIVATE);SharedPreferences.Editor editor = activityPreferences.edit();editor.putString(strKey, strData);editor.commit();}public static Boolean getBoolean(Context context, String strKey) {SharedPreferences setPreferences = context.getSharedPreferences(spFileName, Context.MODE_PRIVATE);Boolean result = setPreferences.getBoolean(strKey, false);return result;}public static Boolean getBoolean(Context context, String strKey,Boolean strDefault) {SharedPreferences setPreferences = context.getSharedPreferences(spFileName, Context.MODE_PRIVATE);Boolean result = setPreferences.getBoolean(strKey, strDefault);return result;}public static void putBoolean(Context context, String strKey,Boolean strData) {SharedPreferences activityPreferences = context.getSharedPreferences(spFileName, Context.MODE_PRIVATE);SharedPreferences.Editor editor = activityPreferences.edit();editor.putBoolean(strKey, strData);editor.commit();}public static int getInt(Context context, String strKey) {SharedPreferences setPreferences = context.getSharedPreferences(spFileName, Context.MODE_PRIVATE);int result = setPreferences.getInt(strKey, -1);return result;}public static int getInt(Context context, String strKey, int strDefault) {SharedPreferences setPreferences = context.getSharedPreferences(spFileName, Context.MODE_PRIVATE);int result = setPreferences.getInt(strKey, strDefault);return result;}public static void putInt(Context context, String strKey, int strData) {SharedPreferences activityPreferences = context.getSharedPreferences(spFileName, Context.MODE_PRIVATE);SharedPreferences.Editor editor = activityPreferences.edit();editor.putInt(strKey, strData);editor.commit();}public static long getLong(Context context, String strKey) {SharedPreferences setPreferences = context.getSharedPreferences(spFileName, Context.MODE_PRIVATE);long result = setPreferences.getLong(strKey, -1);return result;}public static long getLong(Context context, String strKey, long strDefault) {SharedPreferences setPreferences = context.getSharedPreferences(spFileName, Context.MODE_PRIVATE);long result = setPreferences.getLong(strKey, strDefault);return result;}public static void putLong(Context context, String strKey, long strData) {SharedPreferences activityPreferences = context.getSharedPreferences(spFileName, Context.MODE_PRIVATE);SharedPreferences.Editor editor = activityPreferences.edit();editor.putLong(strKey, strData);editor.commit();}public static void cleanSp(Context context) {SharedPreferences activityPreferences = context.getSharedPreferences(spFileName, Context.MODE_PRIVATE);SharedPreferences.Editor editor = activityPreferences.edit();editor.clear();editor.apply();}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/485530.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用uniapp开发小程序场景:在百度地图上调用接口返回的设备相关信息并展示

首先在百度地图开发者平台注册微信小程序开发密钥下载百度地图SDK-bmap-wx.min.js,下载地址在项目入口index.html页面进行引入页面中进行调用&#xff0c;代码示例如下<map id"map" longitude"108.95" latitude"34.34" scale"3" :m…

如何使用brew安装phpredis扩展?

如何使用brew安装phpredis扩展&#xff1f; phpredis扩展是一个用于PHP语言的Redis客户端扩展&#xff0c;它提供了一组PHP函数&#xff0c;用于与Redis服务器进行交互。 1、cd到php某一版本的bin下 /usr/local/opt/php8.1/bin 2、下载 phpredis git clone https://githu…

【Vulkan入门】01-列举物理设备

目录 先叨叨git信息主要逻辑VulkanEnvEnumeratePhysicalDevices()PrintPhysicalDevices() 编译并运行程序 先叨叨 上一篇已经创建了VkInstance&#xff0c;本篇我们问问VkInstance&#xff0c;在当前平台上有多少个支持Vulkan的物理设备。 git信息 repository: https://gite…

写NFC标签支持Android安卓Ohos纯血鸿蒙唤醒微信小程序

本示例使用的发卡器&#xff1a;https://item.taobao.com/item.htm?spma21dvs.23580594.0.0.52de2c1b8bEEGz&ftt&id61539185785 Python languagecodestr "en".encode(gbk) titlestrself.lineEdit_title.text().strip().encode(gbk) uriheaderindex sel…

51c自动驾驶~合集39

我自己的原文哦~ https://blog.51cto.com/whaosoft/12707676 #DiffusionDrive 大幅超越所有SOTA&#xff01;地平线DiffusionDrive&#xff1a;生成式方案或将重塑端到端格局&#xff1f; 近年来&#xff0c;由于感知模型的性能持续进步&#xff0c;端到端自动驾驶受到了来…

沃德云商协系统微信小程序PHP+Uniapp

“多组织”的云服务平台&#xff0c;打造总商会、总协会、总校友会、工商联等多组织无障碍沟通合作平台&#xff0c;让各大分会、各大分校友会、分组织实现轻松管理&#xff0c;线上宣传展示、商机挖掘、会员管理、会员服务、跨界交流等, 借助沃德云商协平台系统&#xff0c;让…

网页设计--axios作业

根据以下mock地址中的json数据&#xff0c;使用axios异步方式获取并显示在页面中。 https://apifoxmock.com/m1/3761592-3393136-default/peotfindAll?apifoxApiId171582689 {"code": 1,"msg": "success","data": [{"id": …

【uni-app 微信小程序】新版本发布提示用户进行更新

知识准备 uni.getUpdateManager文档介绍 不支持APP与H5&#xff0c;所以在使用的时候要做好平台类型的判断&#xff0c;如何判断&#xff0c;参考条件编译处理多端差异 代码参考 export const updateApp () > {const updateManager uni.getUpdateManager()updateManag…

ip地址显示本地局域网什么意思?ip地址冲突怎么解决

在日常使用网络的过程中&#xff0c;我们可能会遇到IP地址显示“本地局域网”的情况&#xff0c;同时&#xff0c;局域网内IP地址冲突也是一个常见且令人头疼的问题。本文将首先解释IP地址显示本地局域网的含义&#xff0c;随后详细探讨局域网IP地址冲突的解决方法&#xff0c;…

超清4K视频素材哪里找?优质下载资源网站分享

我是你们的自媒体UP主小李。现在是高清、4K视频大行其道的时代&#xff0c;想要制作出吸引眼球的优质内容&#xff0c;超清4K视频素材必不可少。今天就为大家分享几个宝藏网站&#xff0c;让你的视频创作更轻松、更出彩&#xff01; 蛙学网 首先推荐 蛙学网&#xff0c;这是国内…

Qt Qtablewidget 标题 QHeaderView 增加可选框 QcheckBox

创建自定义QHeaderView #pragma once#include <QObject> #include <QHeaderView> #include <QPainter> #include <QMouseEvent>class SSHeaderView : public QHeaderView {Q_OBJECTprivate:bool isChecked;int m_checkColIdx; public:SSHeaderView(i…

关于Chrome自动同步书签的解决办法

前言 并不一定适用所有用户&#xff0c; 目前我在网上搜集了一些资料&#xff0c;也做了一些尝试。 就我个人总结的经验来讲&#xff0c;分享大家以下几种办法&#xff1a; 1.书签同步插件 点击如下&#x1f517;&#xff1a; Chrome书签同步https://bm.famend.cn/ …

MFC扩展库BCGControlBar Pro v36.0新版亮点:黑色主题中的自动反转图标

BCGControlBar库拥有500多个经过全面设计、测试和充分记录的MFC扩展类。 我们的组件可以轻松地集成到您的应用程序中&#xff0c;并为您节省数百个开发和调试时间。 BCGControlBar专业版 v36.0已全新发布了&#xff0c;这个版本在黑暗主题中添加自动图标反转、新增一个全新的S…

调用大模型api 批量处理图像 保存到excel

最近需要调用大模型&#xff0c;并将结果保存到excel中&#xff0c;效果如下&#xff1a; 代码&#xff1a; import base64 from zhipuai import ZhipuAI import os import pandas as pd from openpyxl import Workbook from openpyxl.drawing.image import Image from io i…

debian ubuntu armbian部署asp.net core 项目 开机自启动

我本地的环境是 rk3399机器&#xff0c;安装armbian系统。 1.安装.net core 组件 sudo apt-get update && \sudo apt-get install -y dotnet-sdk-8.0或者安装运行库&#xff0c;但无法生成编译项目 sudo apt-get update && \sudo apt-get install -y aspnet…

声音克隆GPT-SoVITS

作者&#xff1a;吴业亮 博客&#xff1a;wuyeliang.blog.csdn.net 一、原理介绍 GPT-SoVITS&#xff0c;作为一款结合了GPT&#xff08;生成预训练模型&#xff09;和SoVITS&#xff08;基于变分信息瓶颈技术的歌声转换&#xff09;的创新工具&#xff0c;正在声音克隆领域掀…

记忆泡沫垫市场:解锁舒适睡眠的黄金钥匙与增长潜力的深度剖析

在当今快节奏、高压力的生活中&#xff0c;优质睡眠已成为现代人追求健康生活的重要组成部分。记忆泡沫垫&#xff0c;作为床垫和枕头领域的一次革命性创新&#xff0c;凭借其独特的材质特性和对人体工学的完美贴合&#xff0c;正逐步成为改善睡眠质量的首选解决方案。本文将从…

R语言 | 峰峦图 / 山脊图

目的&#xff1a;为展示不同数据分布的差异。 1. ggplot2 实现 # 准备数据 datmtcars[, c("mpg", "cyl")] colnames(dat)c("value", "type") head(dat) # value type #Mazda RX4 21.0 6 #Mazda RX4 Wag …

完美解决Qt Qml窗口全屏软键盘遮挡不显示

1、前提 说明&#xff1a;我使用的是第三方软键盘 QVirtualKeyboard QVirtualKeyboard: Qt5虚拟键盘支持中英文,仿qt官方的virtualkeyboard模块,但使用QWidget实现。 - Gitee.com 由于参考了几篇文章尝试但没有效果&#xff0c;链接如下&#xff1a; 文章一&#xff1a;可能…

吉林大学23级数据结构上机实验(第7周)

A 去火车站 寒假到了&#xff0c;小明准备坐火车回老家&#xff0c;现在他从学校出发去火车站&#xff0c;CC市去火车站有两种方式&#xff1a;轻轨和公交车。小明为了省钱&#xff0c;准备主要以乘坐公交为主。CC市还有一项优惠政策&#xff0c;持学生证可以免费乘坐一站轻轨&…