Rename
This commit is contained in:
1 parent
b86d90021c
commit
6c0757c91b
972 files changed
+6885
-7321
No files matched your search
@@ -0,0 +1,99 @@
|
||||
package io.legato.kazusa.base
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.content.Context
|
||||
import android.content.res.Configuration
|
||||
import android.content.res.Resources
|
||||
import android.os.Build
|
||||
import android.os.LocaleList
|
||||
import io.legato.kazusa.constant.PreferKey
|
||||
import io.legato.kazusa.utils.getPrefInt
|
||||
import io.legato.kazusa.utils.getPrefString
|
||||
import io.legato.kazusa.utils.sysConfiguration
|
||||
import java.util.*
|
||||
|
||||
|
||||
@Suppress("unused")
|
||||
object AppContextWrapper {
|
||||
|
||||
@SuppressLint("ObsoleteSdkInt")
|
||||
fun wrap(context: Context): Context {
|
||||
val resources: Resources = context.resources
|
||||
val configuration: Configuration = resources.configuration
|
||||
val targetLocale = getSetLocale(context)
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
|
||||
configuration.setLocale(targetLocale)
|
||||
configuration.setLocales(LocaleList(targetLocale))
|
||||
} else {
|
||||
@Suppress("DEPRECATION")
|
||||
configuration.locale = targetLocale
|
||||
}
|
||||
configuration.fontScale = getFontScale(context)
|
||||
return context.createConfigurationContext(configuration)
|
||||
}
|
||||
|
||||
fun getFontScale(context: Context): Float {
|
||||
var fontScale = context.getPrefInt(PreferKey.fontScale) / 10f
|
||||
if (fontScale !in 0.8f..1.6f) {
|
||||
fontScale = sysConfiguration.fontScale
|
||||
}
|
||||
return fontScale
|
||||
}
|
||||
|
||||
/**
|
||||
* 当前系统语言
|
||||
*/
|
||||
@SuppressLint("ObsoleteSdkInt")
|
||||
private fun getSystemLocale(): Locale {
|
||||
val locale: Locale
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { //7.0有多语言设置获取顶部的语言
|
||||
locale = sysConfiguration.locales.get(0)
|
||||
} else {
|
||||
@Suppress("DEPRECATION")
|
||||
locale = sysConfiguration.locale
|
||||
}
|
||||
return locale
|
||||
}
|
||||
|
||||
/**
|
||||
* 当前App语言
|
||||
*/
|
||||
@SuppressLint("ObsoleteSdkInt")
|
||||
private fun getAppLocale(context: Context): Locale {
|
||||
val locale: Locale
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
|
||||
locale = context.resources.configuration.locales[0]
|
||||
} else {
|
||||
@Suppress("DEPRECATION")
|
||||
locale = context.resources.configuration.locale
|
||||
}
|
||||
return locale
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 当前设置语言
|
||||
*/
|
||||
private fun getSetLocale(context: Context): Locale {
|
||||
return when (context.getPrefString(PreferKey.language)) {
|
||||
"zh" -> Locale.SIMPLIFIED_CHINESE
|
||||
"tw" -> Locale.TRADITIONAL_CHINESE
|
||||
"en" -> Locale.ENGLISH
|
||||
else -> getSystemLocale()
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断App语言和设置语言是否相同
|
||||
*/
|
||||
fun isSameWithSetting(context: Context): Boolean {
|
||||
val locale = getAppLocale(context)
|
||||
val language = locale.language
|
||||
val country = locale.country
|
||||
val pfLocale = getSetLocale(context)
|
||||
val pfLanguage = pfLocale.language
|
||||
val pfCountry = pfLocale.country
|
||||
return language == pfLanguage && country == pfCountry
|
||||
}
|
||||
|
||||
}
|
||||
Reference in new issue
Block a user