2.0版本使用Transform API 编译插桩的方式来实现Activity
,Service
的attachBaseContext
方法覆盖重写(具体请看plugin下代码)
- 支持AndroidX
- 支持kotlin
- 不支持Instant Run
modlue | multi-language.plugin | multi-languages |
---|---|---|
version |
-
引入gradle plugin
classpath 'com.github.jokar:multi-languages.plugin:<latest-version>'
-
app
buidle.gradle
文件引入pluginapply plugin: 'multi-languages'
插件配置
multiLanguages { //可以配置开关来控制是否重写(插件会耗时一部分的编译时间) enable = true }
-
导入
Library
implementation 'com.github.jokar:multi-languages:<latest-version>'
-
application init
public class MultiLanguagesApp extends Application { @Override protected void attachBaseContext(Context base) { //第一次进入app时保存系统选择语言(为了选择随系统语言时使用,如果不保存,切换语言后就拿不到了) LocalManageUtil.saveSystemCurrentLanguage(base); super.attachBaseContext(MultiLanguage.setLocal(base)); } @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); //用户在系统设置页面切换语言时保存系统选择语言(为了选择随系统语言时使用,如果不保存,切换语言后就拿不到了) LocalManageUtil.saveSystemCurrentLanguage(getApplicationContext(), newConfig); MultiLanguage.onConfigurationChanged(getApplicationContext()); } @Override public void onCreate() { super.onCreate(); MultiLanguage.init(new LanguageLocalListener() { @Override public Locale getSetLanguageLocale(Context context) { //返回自己本地保存选择的语言设置 return LocalManageUtil.getSetLanguageLocale(context); } }); MultiLanguage.setApplicationLanguage(this); } }
LocalManageUtil里做的是保存选择的语言设置
以上就完成了初始化了,