前兩篇文章介紹了系統啟動動畫服務的啟動和準備階段,并且我們選擇了自定義動畫的分支,該分支的動畫播放流程主要包含一下幾個階段:
- 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