Android 12.0 适配——应用启动动画

Android 12.0 适配——应用启动动画,第1张

应用启动时如果在Application中做了很多事务,会导致启动时有个白屏的时间,体验十分不好。通常的做法是给Application或者第一个启动的Activity的主题添加上android:windowBackground属性来优化体验。

到了Android 12,官方新增了SplashScreen Api,可为所有应用添加新的启动动画,显示速度十分实时,所以到了Android 12,我们就不必自己添加android:windowBackground属性,最重要的是它是能向下兼容的。

在Android 12上已经默认使用了SplashScreen,如果不考虑向下兼容的问题,不需要任何配置,系统就会自动使用App的图标作为SplashScreen的图标。

这个时候就需要一些适配 *** 作

注意的是必须是在第一个启动的Activity同目录的build.gradle中添加依赖

在Style.xml新建一个主题,parent必须为Theme.SplashScreen

windowSplashScreenBackground:启动动画的背景

windowSplashScreenAnimatedIcon:启动动画的图标

windowSplashScreenAnimationDuration:启动动画的时间

postSplashScreenTheme:启动动画退出后的启动页的主题

在setContentView()之前添加上installSplashScreen()即可

这里我用的是一台11的机器,可以看到效果基本上和12.0差不多,如果不去适配的话11的机器是看不到这个页面的(请忽略我自己做的图标)

可以看到适配很简单,另外可以看到installSplashScreen()是有返回值的,我们可以利用这个值去做一些更强大的事情,例如延长启动页面停留时间、设置动画效果等,这些大家自己去研究。

Android12添加了SplashScreenAPI,它可为所有应用启用新的应用启动动画。应用可以通过多种方式来定制启动画面,以彰显其独有的品牌个性。

启动画面的工作原理:出现的场景:

开机第一次启动应用

用户杀死进程

系统回收了应用内存(进程被杀死)。

就是应用程序的进程不存在或被杀死,用户再次打开应用就会启动这个启动画面。

启动画面加载结束后,显示我们的Activity(MAIN)界面。

关于应用启动模式可以参考:Android性能优化之启动优化。

动画的元素和机制:它们由窗口背景(4)、应用图标(1)(静态动态两种)、图标背景(3)还有底部的图片(谷歌不推荐使用)组成。

开机logo主要与kernel/drivers/video/logo下的logo_linux_clut224.ppm有关。

现kernel源码内一般以提供厂商的logo为主。

我们需要替换的文件也就是该ppm文件。

这里直接提供png转ppm的sh脚本。前提是必须安装了以下工具(pngtopnm,pnmquant,pnmtoplainpnm)

./png2ppm.sh XX.png

用生成的同名ppm文件替换logo_linux_clut224.ppm。

同时删除kernel/drivers/video/logo下的logo_linux_clut224.c和logo_linux_clut224.o

Android开机动画主要是由一个zip格式的压缩包bootanimation.zip组成,压缩包里面包含数张png格式的图片,还有一个desc.txt的文本文档,开机时按desc.txt里面的指令,屏幕上会按文件名称顺序连续的播放一张张的图片。、

这个一般flash制作或者选择交给美工制作了。图片张数尽量不要太多。

关键:图片一定要按顺序命名。

重点在于desc.txt文件。

其中1188 624代表分辨率,表示帧动画以这个分辨率显示。分辨率不是越高越好,容易造成开机卡顿,不流畅。

25表示的是帧数,就是每秒播放的图片数量。

p1(代表着播放一次) 0(空指令)part0 */这句指令就代表这part0文件夹内的图片只按名称顺序播放一次

p0(重复播放)0 (空指令)part1 */这一句指令代表着part1文件夹内的图片会循环反复播放

打包要用zip格式,而不是rar格式。另外压缩的时候压缩方式要选择存储。将压缩包名修改为bootanimation.zip。

1)可直接将生成的bootanimation.zip放入设备/system/meida目录下重启验证开机动画效果。

2)源码上可直接将bootanimation.zip拷贝至/out/target/product/rk3288/system/media目录下,最终打包进成型固件中。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7842283.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-10
下一篇 2023-04-10

发表评论

登录后才能评论

评论列表(0条)

保存