Android 12 SplashScreen 一种另类的适配方案

问题背景

  • 某天公司产品找到我,问我某些机型上面打开后闪屏页会出现 App 的 Logo
  • 上面说太丑了,有没有办法去掉这个闪屏页的 App Logo 呢?

解决方案

  • 可以确定的是这个问题是 Android 12 的 SplashScreen 特性,几乎找遍了所有的适配文章和官方文档,这些文章或者文档无一例外,都是教你怎么适配 Android 12 的 SplashScreen 特性,并没有说怎么去除 SplashScreen 特性自带的图标,我自己也尝试调用相关 api 测试是否能去除,结果一无所获。

  • 问题正处于一筹莫展的时候,我脑子突然有了一个大胆的想法,既然没办法干掉它,就想办法把它隐藏起来总可以了吧?

  • 说干就干,于是我找到闪屏页的主题,并加入以下属性:

xml 复制代码
<!-- 闪屏页主题样式 -->
<style name="SplashTheme" parent="FullScreenTheme">
    ......
    <!-- 适配 Android 12 SplashScreen 特性  -->
    <item name="android:windowSplashScreenBackground" tools:targetApi="31">@color/transparent</item>
    <item name="android:windowSplashScreenIconBackgroundColor" tools:targetApi="31">@color/transparent</item>
    <item name="android:windowSplashScreenAnimatedIcon" tools:targetApi="31">@color/transparent</item>
    <item name="android:windowSplashScreenBrandingImage" tools:targetApi="31">@color/transparent</item>
</style>
  • 有人会说,这几个属性是 Android 12 才有的属性,你加个 tools:targetApi="31" 来抑制警告在低版本下面真的没有问题吗?我非常确定来回答没有问题,因为系统读取 App 主题的时候,是通过读取 xml 文件来获取属性的,在这种情况下,低版本并不会去读取高版本的属性,因为它压根不知道有这几个属性,所以不会有任何问题,经过验证也确实如此。

  • 废话不多说,来看看加上这几个属性之后的效果吧,上图:

  • 成功解决问题,你看看解决这个问题的方法并没有多难,一个脑筋急转弯而已,解决难题的方式总是那么朴实无华。

  • 截止目前,我是行业第一个也是唯一一个解决此问题并将解决方案开源出来的人,当然我的粉丝们都提前知道了,在前一阵更新了 AndroidProject(App 架构 + App 模板),同时也将这个优秀的技术方案纳入到这个项目中,但实际这个项目有很多优秀的技术方案并没有写成文章,你如果感兴趣,可以通过阅读源码来知晓:

相关推荐
撩得Android一次心动2 小时前
Jetpack Compose 知识点整理1【个人用】
android·学习·kotlin·android jetpack·compose
ForteScarlet4 小时前
Kotlin 2.4.20 现已发布,新特性多不多?
android·java·开发语言·开源·kotlin·jetbrains
小弥儿5 小时前
GitHub今日热榜 | 2026-09-04:Agent省 token 成今日主线
学习·开源·github
方白羽5 小时前
Android Studio 自动国际化插件:SmartI18n
android·android studio·intellij idea
苏灿烤鱼8 小时前
给 AI Agent 装一个「会进化的大脑」:OpenViking 深度拆解
开源·github·agent
逛逛GitHub8 小时前
清华开源的 Agent 交互学习神器,又登上 GitHub 热榜了。
github
码农coding8 小时前
android12 状态栏图标的加载流程
android
其实防守也摸鱼8 小时前
OpenClaw Windows 踩坑实战指南
运维·服务器·数据库·windows·github·copilot
hai_android8 小时前
Kotlin 协程作用域源码剖析
android·kotlin
Yeyu9 小时前
Android 画中画(PiP)小窗播放:怎么做、以及它到底是怎么工作的
android