- 切换应用语言
- 包括Application,Activity的Context的所选语言资源
- 语言选项会自动使用内存进行缓存,减少直接对文件的读写
- 重启Activity
- 在Application创建时,置换成所选语言
In your root path build.gradle
:
allprojects {
repositories {
maven { url "https://jitpack.io" }
}
}
In your Application Dir build.gradle
:
dependencies {
implementation 'com.github.cat-x:SwitchLanguage:0.23'
implementation 'com.github.cat-x:LStorage:0.10'
}
- 在使用前你应该进行初始化
你需要在Application 中初始化,只需要调用1次即可
open class App : Application() {
override fun onCreate() {
super.onCreate()
LanguageInject.onAppCreate(this)
}
}
- 函数调用
目前支持简体中文,繁体中文,日语,韩语,英语的切换
- 你只要在布局中引入LanguageView即可
<xyz.a1api.language.LanguageView
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:layout_below="@id/titleTextView"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</xyz.a1api.language.LanguageView>
- 通过函数api切换
BaseLanguageActivity.getSelectLanguageForWeb()//获取当前App语言,用于网络api调用
BaseLanguageActivity.getSelectLanguage()//获取当前App语言的Locale
BaseLanguageActivity.setSelectLanguage()//设置语言
BaseLanguageActivity.loadLanguage()//载入选中语言的resources
- 基于继承Activity的方式使用
class MainActivity : BaseLanguageActivity{
//...
}
- 不继承Activity,使用LanguageInject来切换
open class Main2Activity : AppCompatActivity() {
@Suppress("LeakingThis")
open var languageInject: LanguageInject? = object : LanguageInject(this@BaseLanguageActivity) {
override fun isLanguageActivity(activity: Activity): Boolean {
return this@BaseLanguageActivity.isLanguageActivity(activity)
}
}
//本方法主要是判断当前Activity是不是语言切换的页面,如果是的,你需要返回true
open fun isLanguageActivity(activity: Activity): Boolean {
return false
}
override fun attachBaseContext(newBase: Context?) {
super.attachBaseContext(languageInject?.attachBaseContext(newBase))
}
override fun onResume() {
super.onResume()
languageInject?.onResume()
}
}