Используйте несколько тем для активности spla sh в зависимости от предпочтений пользователя - PullRequest
1 голос
/ 17 марта 2020

Как я могу отображать разные экраны spla sh в зависимости от предпочтений пользователя?

У меня есть несколько тем в моем приложении, и когда пользователь выбирает свою предпочитаемую, она сохраняется в SharedPreferences. В своих действиях я получаю выбранную тему из prefs, звоню setTheme(R.style.Any_Theme);, а затем звоню setContentView(R.layout.activity_any);, и она отлично работает. Но когда я попробовал то же самое, вызвав тот же setTheme(R.style.Any_Theme); в моей активности spla sh, это не сработало, поскольку экран spla sh просто использует атрибут background в стилях.

Spla sh background background

    <attr name="splashBackground" format="reference"/>

Базовый стиль для светлых тем

    <style name="BaseAppTheme.Light" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="splashBackground">@drawable/splash_light</item>
        ...
    </style>

Базовый стиль для темных тем

    <style name="BaseAppTheme" parent="Theme.AppCompat.NoActionBar">
        <item name="splashBackground">@drawable/splash_dark</item>
        ...
    </style>

Spla sh тем, которые должны применяться к приложение в зависимости от предпочтений пользователя

    <style name="SplashScreen.Light" parent="AppTheme.Light">
        <item name="android:windowBackground">?attr/splashBackground</item>
    </style>

    <style name="SplashScreen.Blue" parent="AppTheme.Blue">
        <item name="android:windowBackground">?attr/splashBackground</item>
    </style>

    <style name="SplashScreen.Dark" parent="AppTheme.Dark">
        <item name="android:windowBackground">?attr/splashBackground</item>
    </style>
    ...
...