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

相关推荐
廋到被风吹走7 小时前
【AI】从 OpenAI Codex 到 GitHub Copilot:AI 编程助手的技术演进脉络
人工智能·github·copilot
野生的码农7 小时前
放过自己,降低预期,及时行乐
android·ai编程
huwuhang7 小时前
索尼PS3游戏合集【中文游戏】8.12T 1430个游戏+PS3模拟器
android·游戏·智能手机·游戏机·电视
本地化文档9 小时前
rustdoc-book-l10n
rust·github·gitcode
Grackers9 小时前
Android Perfetto 系列 5:Android App 基于 Choreographer 的渲染流程
android
踩着两条虫9 小时前
AI驱动的Vue3应用开发平台深入探究(十):物料系统之内置组件库
android·前端·vue.js·人工智能·低代码·系统架构·rxjava
sam.li10 小时前
JADX MCP 原理与使用部署
android·逆向·jadx
第一程序员10 小时前
Python 4.0正式发布:新特性与学习建议
python·github
冬奇Lab10 小时前
Android 15音频子系统(五):AudioPolicyService策略管理深度解析
android·音视频开发·源码阅读
irpywp10 小时前
HolyClaude:一行命令,随时随地运行 Claude Code
开源·github·claude code