安卓动态切换语言库..... 无需应用重启即可生效
特点:
- 快速:无需应用重启即可生效,设置语言后,可实现立即动态切换为设置语言
- 不改变多语言的存放方式,和系统一致在res下
- 不设置语言时,自动跟随系统语言
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
dependencies {
implementation 'com.github.tianxiatianshan.AndroidLanguageSwitch:SwitchLanguage:1.0.1'
implementation 'com.github.tianxiatianshan.AndroidLanguageSwitch:SwitchLanguageAnnotation:1.0.1'
annotationProcessor 'com.github.tianxiatianshan.AndroidLanguageSwitch:SwitchLanguageCompiler:1.0.1'
}
- 参照demo BaseActivity 继承LanguageObserver,并重写onCreate, attachBaseContext, onConfigurationChanged, onDestroy
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LanguageManager.INSTANCE.bind(this);
}
@Override
protected void attachBaseContext(Context newBase) {
super.attachBaseContext(LanguageManager.INSTANCE.getLanguageContext(newBase));
}
- 增加注解实现语言动态切换AutoLanguage, value为多语言定义名(避免动态ID)
@AutoLanguage("enter_account")
EditText userEd;
@AutoLanguage("login")
Button loginBt;
语言码为:An ISO 639 alpha-2 or alpha-3 language code, or a language subtag up to 8 characters in length. See the Locale class description about valid language values.
LanguageManager.INSTANCE.setLanguage(Context context, String language);
LanguageManager.INSTANCE.setLanguageConverter(LanguageStrLocaleConverter languageConverter)
LanguageManager.INSTANCE.getCurrentLanguage(Context context);
LanguageManager.INSTANCE.setAutoLanguage(Context context);