前两篇文章介绍了系统启动动画服务的启动和准备阶段,并且我们选择了自定义动画的分支,该分支的动画播放流程主要包含一下几个阶段:
- loadAnimation:解析 zip 包的动画数据。
- playAnimation:播放解析好的纹理数据。
- releaseAnimation:播放完毕释放资源。
一、动画播放流程
1、加载动画
loadAnimation
源码位置:/frameworks/base/cmds/bootanimation/BootAnimation.cpp
BootAnimation::Animation* BootAnimation::loadAnimation(const String8& fn) {……// 打开提供的文件路径作为ZIP文件ZipFileRO *zip = ZipFileRO::open(fn);……ALOGD("%s is loaded successfully", fn.string());// 创建并初始化Animation对象Animation *animation = new Animation;animation->fileName = fn;animation->zip = zip;animation->clockFont.map = nullptr;mLoadedFiles.add(animation->fileName