开机时,系统自动检测在/system/media/目录或/data/local/目录有没有bootanimation.zip文件。如果有,这按照bootanimation.zip里面的png排列顺序依次显示开机图片,开起来就是动画效果;否则按照android默认的方式显示开机动画。
android开机动画叫源码位于frameworks/base/cmds/bootanimation下,这个程序编译后生成/syetem/bin/bootanimation,将/data/local/bootanimation.zip或/system/media/bootanimation.zip里面的png图片以动画的形式播放出来。
在每个方案目录下的init.rc文件中,指定了bootanimation的执行:
service bootanim /system/bin/bootanimation
加载开机动画和音乐的源码在:
frameworks/base/cmds/bootanimation/BootAnimation.cpp
首先看一下定义的常量:
#define USER_BOOTANIMATION_FILE "/data/local/bootanimation.zip"
#define SYSTEM_BOOTANIMATION_FILE "/system/media/bootanimation.zip"
#define SYSTEM_ENCRYPTED_BOOTANIMATION_FILE "/system/media/bootanimation-encrypted.zip"
BootAnimation::readyToRun()准备工作:
进入一个if判断语句
if ((encryptedAnimation &&
(access(SYSTEM_ENCRYPTED_BOOTANIMATION_FILE, R_OK) == 0) &&
(mZip.open(SYSTEM_ENCRYPTED_BOOTANIMATION_FILE) == NO_ERROR)) ||((access(USER_BOOTANIMATION_FILE, R_OK) == 0) &&
(mZip.open(USER_BOOTANIMATION_FILE) == NO_ERROR)) ||
((access(SYSTEM_BOOTANIMATION_FILE, R_OK) == 0) &&
(mZip.open(SYSTEM_BOOTANIMATION_FILE) == NO_ERROR))) {
mAndroidAnimation = false;
}
BootAnimation::threadLoop()执行动画:
if (mAndroidAnimation) {
r = Android(); // 执行android字体闪动的图片
} else {
r = movie(); // 执行bootanimation.zip中提供的动画图片
}
BootAnimation::Android()会加载"images/android-logo-mask.png""images/android-logo-shine.png"。而BootAnimation::movie()会加载bootanimation.zip中的内容
另外,开机音乐路径的加载在bootanimation_main.cpp中指定:
boot->playBootMusic("/system/media/boot.wav")。
知道原理之后,就可以直接自定义开机画面,开机动画和音乐资源放在android\device\softwinner\wing-XXXXX\media中,编译之后会放在/system/media/目录中。
动画文件bootanimation.zip文件由下面几个文件目录组成:
desc.txt 动画属性描述文件;
part0 第一阶段动画图片的目录 (动画是由一帧帧图片组成的);
part1 第二阶段动画图片的目录;
...
Partn。
一般来说就两个文件夹part0、part1,两个文件夹里面放着编号号的png图片。
desc.txt文件内容格式如下:
320 480 5
p 1 0 part0
p 0 0 part1
其中,320为图片的宽,480为图片的高,后面的那个5表示帧数,即每秒播放的图片张数。
p为描述符,后面的1表示播放一次,后面的0表示阶段切换时间,part0表示png资源路径。
p为描述符,后面的0表示本阶段无限循环(直到开机结束),再后面的0表示本阶段切换时间,part1表示路径。
开机logo的路径:lichee\tools\pack\chips\sun9iw1p1\boot-resource\boot-resource\bootlog0.bmp
\boot-resource\boot-resource\bat\bootlog0.bmp
图片和desc.txt文档都准备好后,开始打包为bootanimation.zip。选中图片文件夹part0和desc.txt(提醒一下:打包前将图片文件夹中的Thumbs.db删除),然后右键选择WINRAR的"添加到压缩文件"进入自定义压缩文件设置:压缩文件格式选择:ZIP,压缩方式选择:存储,然后点击确定即可。