Android开关机动画制作

Android开关机动画制作:
http://blog.csdn.net/yin1031468524/article/details/45197735

在Android手机中开机动画一般位于”system/media“中,可以通过下面的命令获取
adb pull system/media/bootanimation.zip .  
解压开机动画里面有个desc.txt文件,配置动画播放的一些参数,以及动画播放的资源图片,下面是desc.txt常用的一些参数

720 1280 25     //720 1280代表图片的像素为720x1280,而25代表帧数,也就每一秒播放25张图;  
p 1 60 generic1   //p代表标志符,1代表循环次数为1次,60代表离读取generic2的停顿间隔的帧数(间隔60帧再读取下一部分文件),generic1代表对应的文件夹  
p 1 0 generic2  
p 0 0 generic3    //这里的generic3循环次数为0,直到系统加载完成前  

#p代表定义一个部分。    
#p后面的第一个数是重复播放这一部分次数。如果这个数为0,就无限循环播放    
#p后面第二个数是播放下一个部分前的延迟帧数    
#字符串定义了加载文件的路径 

其中generic1表示bootanimation.zip中存放图片资源的目录,
在Android系统启动时,init.c解析init.rc 中定义的”service bootanim /system/bin/bootanimation”
system/core/rootdir/init.rc  
service bootanim /system/bin/bootanimation  
    class core  
    user graphics  
    group graphics audio  
    disabled  
    oneshot
  
在frameworks/native/services/surfaceflinger/SurfaceFlinger.cpp中的startBootAnim()启动开机动画

void SurfaceFlinger::startBootAnim() {  
    // start boot animation  
    mBootFinished = false;  
    property_set("service.bootanim.exit", "0");  
    property_set("ctl.start", "bootanim");  //设置"ctl.start"属性开始播放动画  
}  
在frameworks/native/services/surfaceflinger/SurfaceFlinger.cpp中的bootFinished()中发送开机动画完成指令

void SurfaceFlinger::bootFinished()  
{  
      property_set("service.bootanim.exit", "1");  
      property_set("ctl.stop", "bootanim");  
      
}  

android对于解析bootanimation.zip的代码位于frameworks/base/cmds/bootanimation/下,在BootAnimation.cpp中的BootAnimation::movie()解析开机动画包。

在基本了解配置的工作流程后,接下来时怎么制作开bootanimation.zip包了,在准备好图片资源和写好配置文件后(具体配置可以参考我上传的bootanimation.zip 里面包含多个开机动画包或从手机pull一个出来),接下来打包压缩测试我们的开机动画包了,在压缩的时候注意一定要选择存储压缩,在Linux上压缩时可以用下面的命令

#以store方式压缩,进入配置文件当前的目录执行下面命令  
zip -0 -r ../bootanimation.zip ./*  
压缩完成后,会在上一级目录生成bootanimation.zip文件,我们可以通过以下命令测试生存的bootanimation文件
adb  root  
adb remount  
adb push bootanimation.zip system/media/  
adb shell chmod 644 system/media/bootanimation.zip  #我测试的时候没改权限,也运行起来了,测试之前最好先把自己的bootanimation.zip备份一份,并记住权限  
adb reboot  

在开机以后,也可以执行下面的命令来运行开机动画
adb shell bootanimation  
adb shell  
setprop ctl.start bootanim #执行开机动画  
getprop ctl.start bootanim #停止开机动画  



















你可能感兴趣的:(Android)