kotlin compose 实现应用内多语言切换(不重新打开App)

1. 示例图

2.具体实现

如何实现上述示例,且不需要重新打开App

①自定义 MainApplication  实现 Application ,定义两个变量:

class MainApplication : Application() {     object GlobalDpData {    var language: String = ""    var defaultLanguage: String = "en"
    }
    override fun onCreate() {defaultLanguage = Locale.getDefault().language 
        val cacheLanguage = "保存在手机App本地的切换后的语言,可用sp或文件实现" language = if (cacheLanguage.isNullOrEmpty()) { 
            defaultLanguage 
        } else  { 
            cacheLanguage 
        }}
}

②在baseActivity中添加语言实现

override fun attachBaseContext(baseContext: Context) {var language = MainApplication.GlobalDpData.languageif (language.isEmpty()) {val default = MainApplication.GlobalDpData.defaultLanguagelanguage = "保存在手机App本地的切换后的语言,可用sp或文件实现" }// 创建一个ContextWrapper对象val context = newWrap(baseContext, language)// 将新的的Context设置给Activitysuper.attachBaseContext(context)
}
/***  创建ContextWrapper对象,*/
private fun newWrap(context: Context, language: String): ContextWrapper {val configuration = context.resources.configurationconfiguration.fontScale = 1fval locale = Locale(language)val localeList = LocaleList(locale)LocaleList.setDefault(localeList)configuration.setLocales(localeList)

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

DA-SVM多变量分类预测|蜻蜓优化算法-支持向量机|Matalb

目录 一、程序及算法内容介绍: 基本内容: 亮点与优势: 二、实际运行效果: 三、原理介绍: 四、完整程序下载: 一、程序及算法内容介绍: 基本内容: 本代码基于Matlab平台编译&a…

【LeetCode】十四、回溯法:括号生成 + 子集

文章目录 1、回溯法2、leetcode22:括号生成3、leetcode78:子集 1、回溯法 使用场景,如找[1,2,3]的所有子集: 2、leetcode22:括号生成 以n2为例,即两个左括号、两个右括号&#xff0c…

小白操作Typora快捷键操作day01

小白操作Typora快捷键操作day01 一、标题 建议先写标题内容,然后不需要选中直接Ctrl1~6对应所需要的标题,然后回车 ctrl""级别增加 ctrl1~6对应级别的标题(ctrl0是普通文本) 二、段落 1、换行 笑呵呵&#xff08…

科技论文在线--适合练习期刊写作和快速发表科技成果论文投稿网站

中国科技论文在线这个平台可以作为练手的一个渠道,至少可以锻炼一下中文写作,或者写一些科研方向的简单综述性文章。当然,如果你的老师期末要求也是交一份科技论文在线的刊载证明的话,这篇文章可以给你提供一些经验。 中国科技论…

政安晨【零基础玩转各类开源AI项目】基于Ubuntu系统部署Hallo :针对肖像图像动画的分层音频驱动视觉合成

政安晨的个人主页:政安晨 欢迎 👍点赞✍评论⭐收藏 收录专栏: 零基础玩转各类开源AI项目 希望政安晨的博客能够对您有所裨益,如有不足之处,欢迎在评论区提出指正! 本文目标:在Ubuntu系统上部署Hallo&#x…

高频面试题-CSS

BFC 介绍下BFC (块级格式化上下文) 1>什么是BFC BFC即块级格式化上下文,是CSS可视化渲染的一部分, 它是一块独立的渲染区域,只有属于同一个BFC的元素才会互相影响,且不会影响其它外部元素。 2>如何创建BFC 根元素,即HTM…

【好玩的经典游戏】Docker环境下部署赛车小游戏

【好玩的经典游戏】Docker环境下部署赛车小游戏 一、小游戏介绍1.1 小游戏简介1.2 项目预览二、本次实践介绍2.1 本地环境规划2.2 本次实践介绍三、本地环境检查3.1 安装Docker环境3.2 检查Docker服务状态3.3 检查Docker版本3.4 检查docker compose 版本四、构建容器镜像4.1 下…

基于springboot新生宿舍管理系统

系统背景 在当今高等教育日益普及的时代背景下,高校作为知识传播与创新的重要基地,其基础设施的智能化管理显得尤为重要。新生宿舍作为大学生活的起点,不仅是学生日常生活与学习的重要场所,也是培养学生独立生活能力和团队合作精神…

IP溯源工具--IPTraceabilityTool

工具地址:xingyunsec/IPTraceabilityTool: 蓝队值守利器-IP溯源工具 (github.com) 工具介绍: 在攻防演练期间,对于值守人员,某些客户要求对攻击IP都进行分析溯源,发现攻击IP的时候,需要针对攻击IP进行分析…

【electron6】浏览器实时播放PCM数据

pcm介绍:PCM(Puls Code Modulation)全称脉码调制录音,PCM录音就是将声音的模拟信号表示成0,1标识的数字信号,未经任何编码和压缩处理,所以可以认为PCM是未经压缩的音频原始格式。PCM格式文件中不包含头部信…

单片机程序设计模式

RTOS:多任务拆分交叉执行 Q:状态机和多任务模式有什么区别 Q:任务创建和任务调度器是什么? 裸机程序的设计模式可以分为:轮询、前后台、定时器驱动、基于状态机。前面三种方 法都无法解决一个问题:假设有 A、B 两个都很耗时的函数&#xf…

基于牛顿-拉夫逊优化算法(Newton-Raphson-based optimizer, NBRO)的无人机三维路径规划

牛顿-拉夫逊优化算法(Newton-Raphson-based optimizer, NBRO)是一种新型的元启发式算法(智能优化算法),该成果由Sowmya等人于2024年2月发表在中科院2区Top SCI期刊《Engineering Applications of Artificial Intelligence》上。 1、算法原理…

前端开发_注意事项

无论使用哪种框架开发(vue、react、...),前端开发终究是结构(HTML)、样式(CSS)、逻辑(用户操作数据处理对接后端API)。那么开发过程中都需要注意哪些事项,本文…

VScode:前端项目中yarn包的安装和使用

一、首先打开PowerShell-管理员身份运行ISE 输入命令: set-ExecutionPolicy RemoteSigned 选择“全是”,表示允许在本地计算机上运行由本地用户创建的脚本,没有报错就行了 二、接着打开VScode集成终端,安装yarn插件 输入 npm ins…

新版本 idea 创建不了 spring boot 2 【没有jkd8选项】

创建新项目 将地址换成如下 https://start.aliyun.com/

vue this.$refs 动态拼接

业务需要&#xff0c;refs是不固定的 <vxe-grid refgridWarehouse v-bind"gridWarehouseOptions" v-if"tableHeight" :height"tableHeight":expand-config"{iconOpen: vxe-icon-square-minus, iconClose: vxe-icon-square-plus}"c…

Filebeat k8s 部署(Deployment)采集 PVC 日志发送至 Kafka——日志处理(二)

文章目录 前言Filebeat Configmap 配置Filebeat Deployment验证总结 前言 在上篇文章中总结了 Django 日志控制台输出、文件写入按天拆分文件&#xff0c;自定义 Filter 增加 trace_id 以及过滤——日志处理&#xff08;一)&#xff0c;将日志以 JSON 格式写入日志文件。我们的…

object-C 解答算法:移动零(leetCode-283)

移动零(leetCode-283) 题目如下图:(也可以到leetCode上看完整题目,题号283) 解题思路: 本质就是把非0的元素往前移动,接下来要考虑的是怎么移动,每次移动多少? 这里需要用到双指针,i 记录每次遍历的元素值, j 记录“非0元素值”需要移动到的位置; 当所有“非0元素值”都移…

【IC前端虚拟项目】reference model编写与合入

【IC前端虚拟项目】数据搬运指令处理模块前端实现虚拟项目说明-CSDN博客 本来按照规划,这一篇应该写ral model的生成与合入,不过因为前面在这一篇文章中已经介绍了mvu的寄存器体系: 【IC前端虚拟项目】MVU寄存器文档编写与RTL代码生成-CSDN博客文章浏览阅读209次。那可就多…

VLAN 划分案例详解

vlan 的应用在网络项目中是非常广泛的&#xff0c;基本上大部分的项目都需要划分 vlan&#xff0c;这里从基础的 vlan 的知识开始&#xff0c;了解 vlan 的划分原理。 为什么需要 vlan&#xff1a; 1、什么是 VLAN&#xff1f; VLAN&#xff08;Virtual LAN&#xff09;&…