监听系统语言变化

QuibblerQuibbler 2020-06-09 约 3 分钟 2019 次阅读

监听系统语言变化

监听系统语言变化,有两种方法:一种通过onConfigurationChanged回调,另一种监听系统语言变化相关的广播。

1、configChanges

在AndroidManifest.xml文件中,对应的Activity节点下添加配置android:configChanges。关于Configure参考《onConfigurationChanged()及屏幕横竖屏锁定》

<activity
        android:name=".LanguageActivity"
        android:configChanges="locale|layoutDirection">
    </activity>

注意只添加一个locale是不行的,还得需要layoutDirection。

同时重写Activity中的onConfigurationChanged(Configuration newConfig)方法:

public void onConfigurationChanged(@NonNull Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        Locale locale;
        //注意SDK版本兼容判断
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
            locale = newConfig.getLocales().get(0);
        } else {
            locale = newConfig.locale;
        }
    }

切换语言时,应用不会重启,而是走调用onConfigurationChanged(Configuration newConfig)的生命周期。

2、通过广播

监听系统语言发送变化的广播android.intent.action.LOCALE_CHANGED

action android:name="android.intent.action.LOCALE_CHANGED"

关于BroadcastReceiver这里不再多述,参考《BroadcastReceiver:广播的使用》。

相关推荐