You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jetpack Splash Screen API开启深色模式时windowSplashScreenAnimatedIcon不显示

问题根因

就算你全局配置了强制浅色模式,Splash Screen的主题加载逻辑早于AppCompatDelegate配置的生效时机,系统开启深色模式时,会按照夜间资源匹配规则加载启动屏相关配置,就会出现图标不显示的问题。

解决方案

按以下优先级逐一排查即可:

  1. 给启动屏主题强制禁用暗黑模式适配
    在你的Theme.App.Starting配置中新增forceDarkAllowed属性关闭强制暗黑,修改后配置如下:
    <style name="Theme.App.Starting" parent="Theme.SplashScreen">
        <item name="windowSplashScreenBackground">@color/white</item>
        <item name="windowSplashScreenAnimatedIcon">@drawable/splash_content</item>
        <item name="windowSplashScreenAnimationDuration">500</item>
        <item name="postSplashScreenTheme">@style/Theme.Main</item>
        <!-- 新增以下配置 -->
        <item name="android:forceDarkAllowed">false</item>
    </style>
    
  2. 检查图标资源的限定符配置
    确认你的@drawable/splash_content不存在drawable-night等夜间限定符文件夹下的同名特殊版本,如果有可以直接删除,或者统一替换为和日间模式一致的图标资源。
  3. 补充夜间模式下的启动屏主题配置
    如果以上操作无效,在res/values-night文件夹下新建styles配置,写入和日间完全一致的Theme.App.Starting配置,确保系统切换到深色模式时加载的启动屏参数和日间完全相同。
  4. 调整强制浅色模式代码的调用位置
    确认AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO)这行代码是写在你自定义Application类的onCreate方法最顶部,不要写在首页Activity的onCreate中,避免配置生效晚于启动屏加载阶段。

内容的提问来源于stack exchange,提问作者Mable John

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 15:15:04