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)



















