使用DayNight主题时,在启动屏幕中更改背景颜色

时间:2016-09-23 13:21:03

标签: android android-theme android-styles

我在启动画面中使用 DayNight 主题。

启动屏幕是一个白色背景的图层列表。

所以当它的那一天,白色启动屏幕显示后跟白色活动。但到了晚上,白色启动屏幕会显示黑暗活动。

如何根据主题更改启动屏幕中的背景颜色。

无法使用自定义颜色,因为只有DayNight主题。

的themes.xml

<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.DayNight.NoActionBar">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="android:colorControlNormal">@color/colorAccent</item>
</style>

<style name="LaunchTheme" parent="AppTheme">
    <item name="android:windowBackground">@drawable/launch_screen</item>
</style>

launch_screen.xml

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
    <color android:color="@color/material_white"/>
</item>
<item>
    <bitmap
       android:gravity="center"
       android:src="@drawable/launch_logo"
       android:tileMode="disabled"/>
</item>

2 个答案:

答案 0 :(得分:2)

除了默认的启动主题外,还应在相应的资源目录中提供其Night变体。

res / values-night / themes.xml

<style name="LaunchTheme" parent="AppTheme">
    <item name="android:windowBackground">@drawable/launch_screen_night</item>
</style>

res / drawable / launch_screen_night.xml

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
    <color android:color="@color/material_black"/>
</item>
<item>
    <bitmap
       android:gravity="center"
       android:src="@drawable/launch_logo"
       android:tileMode="disabled"/>
</item>

答案 1 :(得分:0)

检查了一段时间后,我找到了答案。

由于初始屏幕配置是由系统加载的,因此您将需要影响系统UI模式。

getSystemService<UiModeManager>()?.nightMode = UiModeManager.MODE_NIGHT_YES

但是不幸的是,这不是干净的解决方案,因为它会影响系统设置。

  

更改为夜间模式会在全球范围内生效,并且会导致   配置更改(以及潜在的活动生命周期事件)   应用于所有正在运行的应用程序。有兴趣的开发人员   夜间模式的应用程序本地实现应考虑使用   AppCompatDelegate.setDefaultNightMode(int)管理-night   本地限定词。