Android 12 SplashScreen(闪屏页)适配

牢骚(废话)

谷歌真是吃饱了撑的,搞这搞那,Android12新出了一个强制闪屏页,效果就跟小米的闪屏页广告一样,只不过谷歌的是强制的,小米是可选的。不过谷歌再怎么搞,你还是要适配啊,难受。

正题

所有运行在Android12上的应用(无论targetSdkVersion是多少)在冷启动(应用进程未运行)和温启动(应用进程在后台但是没有Activity,比如存在Service)时都会强制强制地弹SplashScreen。官方的API是没有办法禁用SplashScreen的。闪屏固定样式如下。
在这里插入图片描述

适配

12以下照常,12以上先系统后应用闪屏

如果可以接受弹完系统闪屏再弹应用的闪屏,那什么都不需要做,默认就这个效果。

12以下照常,12以上只系统闪屏

首先compileSdkVersion要设置在31以上,不然没有12的api。接着在SplashActivity的onCreate方法加上如下代码

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
            getSplashScreen().setOnExitAnimationListener(view -> {
                //do nothing to keep splash screen
            });
        }

原理是如果我们不注册这个监听,系统闪屏页在应用开始绘制后就自行消失。但如果我们注册了这个监听,系统在应用开始绘制之后会将系统闪屏页以SplashScreenView的形式回调给应用,由开发者决定系统闪屏页怎么消失。比如我们可以自定义动画上移下移或者渐隐等方式让系统闪屏页消失。我们注册了OnExitAnimationListener,什么都不做系统闪屏页就会一直覆盖在闪屏页上,直到应用跳转到主Activity。或者可以缓存SplashScreenView等广告什么的加载好了再remove掉隐藏它。

所有系统版本统一12样式

这个可以使用官方的SplashScreen compat library,下面的链接有官方文档,不过目前还是beta版本,这个自行衡量。如果自己实现的话就是将以前的闪屏图片改成12的样式,这个应该不难,12的样式挺简单的,然后根据上面的说明在12以上屏蔽掉应用的闪屏就好了。

系统闪屏样式配置

12的闪屏流程可以分为两步。
一个是进场,也就是点击应用后立刻弹出的上面固定样式,通过主题配置。
可以设置闪屏背景,不过只能是颜色背景,无法设置图片。

<item name="windowSplashScreenBackground">#CCCCCC</item>

可以设置中间的闪屏图标,这个可以设置图片,不过显示的大小和样式(圆的方的)由系统决定,会通过Mask遮蔽实现。

<item name="android:windowSplashScreenAnimatedIcon"></item>

可以设置商标图案,根据郭霖大神的测试应该是4:1的比例图片,否则会被拉伸.

<item name="android:windowSplashScreenBrandingImage"></item>

系统闪屏能设置的就这三个。
另一个就是退场,也就是应用开始绘制后的退场处理,如果没有适配系统闪屏将直接消失,如果注册了上面的监听则用户自行处理,这时候就是闪屏页就是普通View,应用可以完全操控。

参考文章

Migrate your existing splash screen implementation to Android 12 and higher
Android 12 SplashScreen API快速入门
深度探讨如何使用 Jetpack SplashScreen 重塑应用启动画面

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
Android 12中的splashscreen(启动画面)是一种应用程序启动时显示的短暂界面,用于提供应用程序的品牌标识和加载过程的视觉反馈。与以往的版本不同,Android 12引入了一些新的特性和改进来提升splashscreen的用户体验。 首先,Android 12splashscreen支持更多的自定义选项。开发者可以选择使用单一的图片、动画或者视频作为splashscreen的背景,以展示应用程序的标志性元素或者品牌内容。这增强了应用程序的品牌识别度,并为用户提供了更具吸引力的界面。 其次,Android 12还支持在splashscreen上显示应用程序的加载进度。开发者可以通过进度指示器或动画来告知用户应用程序的加载进度,让用户对应用程序的启动过程有更清晰的认知。这种视觉反馈可以提高用户对应用程序的满意度,并为用户提供更好的等待体验。 此外,Android 12还增加了一个预热阶段(pre-warming)来提升splashscreen的加载速度。当用户点击应用程序图标时,系统会在显示splashscreen之前暂时加载应用程序的一部分数据和资源,以缩短splashscreen的显示时间和启动过程的等待时间。这使得用户可以更快地进入应用程序,提高了用户体验的流畅度。 综上所述,Android 12splashscreen通过自定义选项、加载进度显示和预热阶段等特性和改进,提供了更具吸引力、更好的等待体验和更高的启动速度。这使得应用程序能够更好地展示自己的品牌标识,同时提升用户对应用程序的满意度和流畅度。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值