当前位置: 首页 > news >正文

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://www.lryc.cn/news/402917.html

相关文章:

  • 记录些MySQL题集(16)
  • 【算法基础】Dijkstra 算法
  • 使用 Flask 3 搭建问答平台(三):注册页面模板渲染
  • pycharm如何debug for循环里面的错误值
  • 解决网页中的 video 标签在移动端浏览器(如百度访问网页)视频脱离文档流播放问题
  • .Net--CLS,CTS,CLI,BCL,FCL
  • Stable Diffusion:质量高画风清新细节丰富的二次元大模型二次元插图
  • 数读MEME之争:以太坊获更高价值共识,抢占热点成Solana流量密码
  • python的with语句
  • Selenium原理深度解析
  • 算法复杂度<数据结构 C版>
  • 【XSS】
  • Go网络编程-RPC程序设计
  • Linux 性能优化:轻松入门
  • C++相关概念和易错语法(22)(final、纯虚函数、继承多态难点)
  • 状态管理的艺术:探索Flutter的Provider库
  • 玩转HarmonyOS NEXT之IM应用首页布局
  • GPT-4o大语言模型优化、本地私有化部署、从0-1搭建、智能体构建
  • 记录些MySQL题集(4)
  • pdf提取其中一页怎么操作?提取PDF其中一页的方法
  • godot使用ws
  • Windows FFmpeg 开发环境搭建
  • 链路聚合概述
  • 【链表】算法题(二) ----- 力扣/牛客
  • 合成复用原则
  • 安卓自带camera hal3 实例README.md翻译
  • ActiViz实战:ActiViz中的自己实现鼠标双击事件
  • Linux-交换空间(Swap)管理
  • 扫描某个网段下存活的IP:fping
  • 【深度学习】PyTorch框架(3):优化与初始化