Android系统定制开机动画

       最近在做Android系统方面的定制,第一个接收的是做系统开机动画,对系统源码这方面

以前接触不多,查了很多资料终于搞定。分享下自己经历。

          

        首先还是先来看源码。Android开机动画源码位于framework/base/cmds/bootanimation下。

这个程序编译后生成/syetem/bin/bootanimation,将/data/local/bootanimation.zip或/system/

media/bootanimation.zip里面的png图片以动画的形式播放出来。


打开frameworks/base/cmds/bootanimation/BootAnimation.cpp


在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中的内容


我们下载的源码里默认是没有那些个.zip动画的,所以总会跳到android字体闪动的画面。


下面到正题,来说说自己定制开机动画的步骤。

首先要了解bootanimation.zip文件。

该文件由下面几个文件目录组成:


desc.txt 动画属性描述文件

part0 第一阶段动画图片的目录(动画是由一帧帧图片组成的)

part1 第二阶段动画图片的目录

...

partn

一般来说就两个文件夹part0、part1,两个文件夹里面放着编号号的png图片。

desc.txt文件内容格式如下:
720 1280 5
p 1 0 part0
p 0 0 part1


720为图片的宽,1280为图片的高,后面的那个5表示帧数,即每秒播放的图片张数。

p为描述符,后面的1表示播放一次,后面的0表示阶段切换时间,part0表示png资源路径。
p为描述符,后面的0表示本阶段无限循环(直到开机结束),再后面的0表示本阶段切换时间

     ,part1表示路径。



然后就是编译了


1 先cd到自己的bootanimation目录下执行压缩命令  


zip -Z store bootanimation.zip part0/*PNG part1/*PNG desc.txt
或者 zip -0 bootanimation.zip part0/*PNG part1/*PNG desc.txt
注意不要压缩文件,直接选择存储方式压缩,要不然不能正确获取到png图片,开机时会一直黑屏


2 将压缩得到的zip文件放到/system/media/文件下。


3  先编译 mmm frameworks/base/cmds/bootanimation -B


4 再编译 mmm frameworks/base -B  最后将生成的framework.jar包push到机器即可。


有不清楚或者错误的地方,欢迎指正讨论。


你可能感兴趣的:(Android系统)