安卓开机界面修改

1. android开机动画显示原理

开机时,系统自动检测在/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")

 

2. 修改开机动画

知道原理之后,就可以直接自定义开机画面,开机动画和音乐资源放在android\device\softwinner\wing-XXXXX\media中,编译之后会放在/system/media/目录中。

动画文件bootanimation.zip文件由下面几个文件目录组成:

desc.txt 动画属性描述文件;

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

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

...

Partn

一般来说就两个文件夹part0part1,两个文件夹里面放着编号号的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。选中图片文件夹part0desc.txt(提醒一下:打包前将图片文件夹中的Thumbs.db删除),然后右键选择WINRAR"添加到压缩文件"进入自定义压缩文件设置:压缩文件格式选择:ZIP,压缩方式选择:存储,然后点击确定即可。


你可能感兴趣的:(logo,开机,adroid,Bootanimation)