欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 名人名企 > kotlin compose 实现应用内多语言切换(不重新打开App)

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

2025/2/24 13:35:46 来源:https://blog.csdn.net/qq_27247815/article/details/140514207  浏览:    关键词: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)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词