1.动画的位置
android开机动画位置在/system/media目录下,/system/media/bootanimation.zip
解压是如下的文件内容
part0,part1,part2存放的都是要播放开机动画的帧图片,desc.txt写的是播放方式,desc文件内容类似如下
1920 1280 25
p 1 50 part0
p 1 0 part1
p 0 0 part2
第一行,1920 1280是图片的分辨率,25是每秒25帧
第二行 p 1 50 part0
p是标识符,第一个数字表示一个片断的循环显示次数,如果它的值等于0,那么就表示无限循环地显示该动画片断,第二个数字表示每一个片断在两次循环显示之间的时间间隔。这个时间间隔是以一个帧的时间为单位的,50就是表示间隔50帧的时间,也就是2秒。最后的part0表示播放part0里的图片,后面以此类推。
2.动画的Start和stop控制
代码在/frameworks/native/services/surfaceflinger/SurfaceFlinger.cpp
void SurfaceFlinger::startBootAnim() {
// Start boot animation service by setting a property mailbox
// if property setting thread is already running, Start() will be just a NOP
mStartPropertySetThread->Start();
// Wait until property was set
if (mStartPropertySetThread->join() != NO_ERROR) {
ALOGE("Join StartPropertySetThread failed!");
}
}
stopbootanimation
代码位置/frameworks/base/services/core/java/com/android/server/wm/WindowManagerService.java
if (!mBootAnimationStopped) {
Trace.asyncTraceBegin(TRACE_TAG_WINDOW_MANAGER, "Stop bootanim", 0);
// stop boot animation
// formerly we would just kill the process, but we now ask it to exit so it
// can choose where to stop the animation.
SystemProperties.set("service.bootanim.exit", "1");
mBootAnimationStopped = true;
}
问题:
在修改开机动画的时候,修改desc.txt直接压缩,在ubuntu和windows上压缩,push到对应的路径下都是无法播放。
原因是直接压缩是不行的
这个zip文件必须在ubuntu下使用下面指令:
zip -Z store bootanimation.zip part0/*.png part1/*.png desc.txt
windows下zip或者ubuntu下UI压缩都不行。