Android 根据用户';s偏好

Android 根据用户';s偏好,android,styles,themes,splash-screen,Android,Styles,Themes,Splash Screen,如何根据用户偏好显示不同的启动屏幕 我的应用程序中有几个主题,当用户选择他喜欢的主题时,它存储在SharedPreferences中。在我的活动中,我从prefs获取所选主题,调用setTheme(R.style.Any_主题)然后调用setContentView(R.layout.activity\u any)并且它工作得非常完美。但是当我尝试调用相同的setTheme(R.style.Any_主题)时在我的启动活动中,它不起作用,因为启动屏幕只是在样式中使用background属性 飞溅背景

如何根据用户偏好显示不同的启动屏幕

我的应用程序中有几个主题,当用户选择他喜欢的主题时,它存储在
SharedPreferences
中。在我的活动中,我从prefs获取所选主题,调用
setTheme(R.style.Any_主题)
然后调用
setContentView(R.layout.activity\u any)并且它工作得非常完美。但是当我尝试调用相同的
setTheme(R.style.Any_主题)时在我的启动活动中,它不起作用,因为启动屏幕只是在样式中使用
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>

@可拉拔/飞溅/黑色
...
根据用户偏好,必须应用于应用程序的启动主题

    <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>
    ...

?属性/背景
?属性/背景
?属性/背景
...