安卓开机动画的制作


开机动画的存储位置: system/media/bootanimation.zip。

bootanimation.zip的文件结构:包含一个desc.txt和N个文件夹(一般两个)。desc.txt是用来指导如何执行动画页面。文件夹里存放要播放的照片(支持png和jpg格式)。


重点是descs.txt 文档的内容:

1280 720 10
p 1 0 part1
p 0 0 part2
第一行的1280和720是屏幕的分辨率,10是每秒10帧(播放速度)。
第二行p是play的意思,1 是播放一次,0 是每帧之间的pause(If pause = 10, it will show the last frame and thensleep 10/fps seconds before continuing with the animation.) ,作用是把part1中的所有照片播放一遍。
第三行p的意思同上,0 是无限循环播放,第二个0 同上,作用是文件夹中的照片循环播放直到开机。

制作要注意的事项:
图片命名:按播放顺序命名,一般用5位数字,第一张00010第二张00020,这样便于后期插入图片。

压缩包:把part文件夹和decs.txt打包成zip格式,不能是rar,并且打包时采用“存储”模式,命名为bootanimation.zip。大小不要超过5M,太大会卡


源码分析:

位置: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"</span>


BootAnimation::readyToRun()

里面是判断句

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;
    }</span>


接下来在BootAnimation::threadLoop()中具体执行

if (mAndroidAnimation) {
 r = Android(); // 执行android字体闪动的图片
 } else {
 r = movie(); // 执行bootanimation.zip中提供的动画图片
 }</span>

BootAnimation:Android()加载android-logo-mask.png和android-logo-shine.png两张图片。

BootAnimation::movie()加载bootanimation.zip中的内容。

源码里默认是没有bootanimation.zip动画的,总会执行android闪动字体画面。

如果想修改闪动的字画可以直接替换,具体在frameworks/base/core/res/assets/image目录下,动画效果是发光效果图不断左右移动。






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Leonban

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值