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 模板),同时也将这个优秀的技术方案纳入到这个项目中,但实际这个项目有很多优秀的技术方案并没有写成文章,你如果感兴趣,可以通过阅读源码来知晓:

相关推荐
u1301309 小时前
GitHub 热榜项目:日榜(2026-10-21)
人工智能·github
xiaoshiquan120610 小时前
Gradle 复合构建:宿主项目直接依赖 SDK 源码模块的配置实践
android
逛逛GitHub12 小时前
盘点本周 11 个 Star 攀升最多的 GitHub 开源项目。
github
蒲公英内测分发12 小时前
智能门锁量产时,工厂测试 App 一直在更新,产线怎么避免装错 APK?
服务器·人工智能·github·智能硬件·智能手表
小师兄吃牛肉13 小时前
Android Studio 2025 专业介绍:新特性、性能与开发体验全面解析
android·ide·android studio
美摄科技13 小时前
安卓离线类美颜特效SDK
android
本地化文档13 小时前
llvm-libc-docs-l10n
c语言·github·gitcode·sphinx·llvm·crowdin
wflynn13 小时前
GitHub 日榜趋势速报 | 2026-10-21
开源·github
fengci.14 小时前
BUUCTF(困难部分)
android·开发语言·前端·学习·php
钱栈up14 小时前
GitHub热榜上手|Claude插件:4.3万星官方目录
python·开源·github