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程序员甲9 小时前
GitHub 热榜项目 - 日榜(2026-1-5)
ai·开源·大模型·github·ai教程
踏雪羽翼9 小时前
Android 应用冷启动优化
android·性能优化·性能·启动·冷启动·应用冷启动
2301_7873284910 小时前
44.Python(二)
android·python
峥嵘life11 小时前
Android16 EDLA 【CTS-V】Host-side 存在fail
android·linux·学习
_李小白11 小时前
【Android 性能分析工具】第二天:认识Perfetto
android
程序漫游人11 小时前
苹果IOS App Store加快审核进度
android·ios·软件工程·iphone
带带弟弟学爬虫__11 小时前
fancygo 解密演示
android·python·算法·网络爬虫
我命由我1234512 小时前
Android 控件 - 悬浮常驻文本交互(IBinder 实现、BroadcastReceiver 实现)
android·java·java-ee·android studio·android jetpack·android-studio·android runtime
Jagger_12 小时前
如何坚持更新技术博客减少摩擦力复盘
github
Android-Flutter12 小时前
android compose 左右滑动带指示器,HorizontalPager和HorizontalPagerIndicator使用
android·kotlin