Как я могу отображать разные экраны 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>
...