到了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目录下,最终打包进成型固件中。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)