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

avatar
作者
筋斗云
阅读量:2

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.language     if (language.isEmpty()) {         val default = MainApplication.GlobalDpData.defaultLanguage         language = "保存在手机App本地的切换后的语言,可用sp或文件实现"      }     // 创建一个ContextWrapper对象     val context = newWrap(baseContext, language)     // 将新的的Context设置给Activity     super.attachBaseContext(context) }
/**  *  创建ContextWrapper对象,  */ private fun newWrap(context: Context, language: String): ContextWrapper {     val configuration = context.resources.configuration     configuration.fontScale = 1f     val locale = Locale(language)     val localeList = LocaleList(locale)     LocaleList.setDefault(localeList)     configuration.setLocales(localeList)     

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!