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

Android 12启动屏自定义图失效 Uno Platform多版本适配方案咨询

问题原因说明

Android 12 引入了系统级统一启动屏机制,默认会优先使用启动器图标作为启动屏展示内容,覆盖了原有通过 android:windowBackground 配置自定义启动屏的逻辑,所以会出现你遇到的问题。


1. 调整配置恢复自定义启动屏的方法

你不需要大幅修改原有代码,只需要新增 Android 12 专属的配置即可,步骤如下:

步骤1:提取公共颜色资源

在values/colors.xml中新增以下颜色配置(没有该文件就新建):

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="splash_bg_light">#dedcdc</color>
    <color name="splash_bg_dark">#888689</color>
</resources>

步骤2:新增Android 12专属主题配置

新建values-v31目录,在该目录下创建Styles.xml,配置浅色模式启动屏:

<?xml version="1.0" encoding="utf-8" ?>
<resources>
    <style name="AppTheme" parent="Theme.AppCompat.Light">
        <!-- 保留原有ActionBar配置 -->
        <item name="windowActionBar">false</item>
        <item name="android:windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
        <item name="android:windowNoTitle">true</item>
        <!-- Android 12 启动屏适配:将系统默认图标设为透明 -->
        <item name="android:windowSplashScreenAnimatedIcon">@android:color/transparent</item>
        <!-- 和原有启动屏背景保持一致 -->
        <item name="android:windowSplashScreenBackground">@color/splash_bg_light</item>
        <!-- 保留原有自定义启动屏配置 -->
        <item name="android:windowBackground">@drawable/splash_screen</item>
    </style>
</resources>

新建values-night-v31目录,在该目录下创建Styles.xml,配置深色模式启动屏:

<?xml version="1.0" encoding="utf-8" ?>
<resources>
    <style name="AppTheme" parent="Theme.AppCompat">
        <!-- 保留原有ActionBar配置 -->
        <item name="windowActionBar">false</item>
        <item name="android:windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
        <item name="android:windowNoTitle">true</item>
        <!-- Android 12 启动屏适配:将系统默认图标设为透明 -->
        <item name="android:windowSplashScreenAnimatedIcon">@android:color/transparent</item>
        <!-- 和原有深色启动屏背景保持一致 -->
        <item name="android:windowSplashScreenBackground">@color/splash_bg_dark</item>
        <!-- 保留原有深色自定义启动屏配置 -->
        <item name="android:windowBackground">@drawable/splash_screen_night</item>
    </style>
</resources>

2. 版本兼容性说明

调整后的方案完全兼容Android 11及更低版本系统,不需要额外操作:

  • 带-v31后缀的配置只有Android 12(API 31)及以上系统会读取生效
  • Android 11及更低版本会自动沿用你之前写的values、values-night目录下的原有配置,明暗模式逻辑完全不受影响

如果需要进一步优化启动屏过渡动画,可以在MainActivity的OnCreate方法中调用SplashScreen.Install(this)引入官方兼容库逻辑,不需要额外适配即可让全版本启动屏交互更统一。


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

相关产品推荐
方舟 Agent Plan

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

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