Android 的开机动画是由 Linux 本地守护程序 bootanimation 专门控制实现的,其代码在 frameworks/base/cmds/bootanimation/ 目录下。

 

修改开机动画的方式有两种:

1、蒙版图片替换:

替换 frameworks/base/core/res/assets/images 目录下的两张图片文件,android-logo-mask.png 和 android-logo-shine.png。

android-logo-mask.png 是镂空蒙版图片,android-logo-shine.png是镂空蒙版后面的闪光图片,两张图片通过叠加移动达到动画效果。

(1)用 Photoshop 制作一张同样分辨率和格式的图片,要求背景为黑色,字体中间镂空,命名为 android-logo-mask.png。制作图片方法请找度娘。

(2)将制作好的图片android-logo-mask.png 复制到 frameworks/base/core/res/assets/images 目录下,替换掉以前的图片。



$ cp -raf android-logo-mask.png frameworks/base/core/res/assets/images/
// 防止源码不编译图片,需更新图片时间戳
$ touch frameworks/base/core/res/assets/images/android-logo-mask.png



(3)重新编译模块



$ source build/envsetup.sh
$ lunch rk3288-eng
$ mmm frameworks/base/core/res/



(4)生成新的 system.img



$ make snod



(5)重新烧录并查看效果。

 

2、逐帧动画替换

创建 bootanimation.zip 文件,该压缩包文件里存放有逐帧动画和控制脚本,通过连续切换显示图片达到动画的效果。

bootanimation.zip压缩包文件结构

文件

说明

desc.txt

动画属性描述文件

part0

第一阶段动画图片目录

part1

第二阶段动画图片目录

 

 

 

 

 

 

 

(1)将第一部分图片按播放顺序命名好,保存在 part0 的文件夹中,例如:001.jpg、002.jpg(有的资料和书籍上强调必须为png格式图片,但是我在rk3288上测试,jpg格式也可以正常使用)

(2)将第二部分图片按播放顺序命名好,保存在 part1 的文件夹中,例如:001.jpg、002.jpg

(3)创建名称为 desc.txt 的文档,内容如下:



1366 768 15
p 1 0 part0
p 0 10 part1


desc.txt文件详解

图片属性

1366(图片宽度)

768(图片高度)

15(每秒显示帧数)


第一阶段动画属性

p(默认标志符)

1(循环次数为1)

0(进入该阶段的间隔时间)

part0(该阶段图片的存放目录)

第二阶段动画属性

p(默认标志符)

0(无限循环)

10(进入该阶段的间隔时间)

part1(该阶段图片的存放目录)

 

 

 

每秒显示帧数:每秒显示的图片数量。

间隔时间:该阶段结束后间隔多久进入下一阶段显示,单位为每张图片的显示时间。

(4)选中part0、part1和desc.txt进入自定义压缩,压缩文件格式为 zip,压缩方式为存储,命名为 bootanimation.zip。

(5)将压缩包拷贝到 device/*/$(TARGET_DEVICE) 目录下。例如:RK3288 的目录在 device/rockchip/rk3288/bootanimation.zip

(6)修改 device/*/$(TARGET_DEVICE)/$(TARGET_DEVICE).mk 文件。例如:RK3288 是 device/rockchip/rk3288/rk3288.mk



// 在文件中添加,不使用逐帧动画时,用 # 屏蔽此行即可
PRODUCT_COPY_FILES += device/rockchip/rk3288/bootanimation.zip:system/media/bootanimation.zip



(7)重新编译生成 system.img



$ source build/envsetup.sh
$ lunch rk3288-eng
$ make snod



(8)重新烧录并查看效果。

 

逐帧动画的优先级比蒙版动画的优先级高,当使用了逐帧动画时,蒙版动画就不播放了。

 

RK3288 制作内核开机logo