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

相关推荐
CoderJia程序员甲22 分钟前
GitHub 热榜项目 - 周榜(2026-09-26)
ai·大模型·llm·github
9624563 小时前
从“一键创建 ECS”到完整恢复状态机:ACK 抢占式节点恢复 Android 工具升级复盘
android
miofly5 小时前
GitHub 周榜趋势速报 | 2026-10-02
开源·github
阿里嘎多学长6 小时前
2026-09-29 GitHub 热点项目精选
开发语言·程序员·github·代码托管
LCD液晶屏6 小时前
京瓷液晶屏停产替代:杭州立煌科技工业 LCD 解决方案
android·科技
2501_932750268 小时前
Android 自定义 View 入门
android
老李IT笔记8 小时前
激活锁状态怎么检测:三个入口,四种返回值,一份排查顺序
git·智能手机·github
m4Rk_9 小时前
【论文阅读】Agent 记忆机制(87):VizoMem——把文本历史转化为可检索的视觉记忆
论文阅读·人工智能·学习·开源·github
lpfasd1239 小时前
GitHub非AI开源方向调研报告
人工智能·开源·github