Android的启动动画,不是gif,而是由N个png图片、和动画配置文件组成,跟帧动画一样
一、准备工作
- png帧动画图片
- zip压缩软件
- 预览工具
二、制作
启动动画路径: /system/media/bootanimation.zip
文件构成:
- decs.txt:配置文件,主要包括动画分辨率、每秒帧数、循环次数、动画路径等
- part0:第1组动画所在的文件夹。里面的文件一般按序号来命名,eg:0001.png、0002.png
- part1:第2组动画所在的文件夹
一般part0是播放一次启动动画,part1播放循环加载动画
2.1 desc.txt 配置文件格式
第一行
WIDTH HEIGHT FPS
- WIDTH:图片宽度(px)
- HEIGHT:图片高度(px)
- FPS:每秒帧数
第二行开始:
TYPE COUNT PAUSE PATH
- TYPE:动画类型,
- p:如果系统启动完毕,会中断播放。默认
- c:一直播放完毕,无论系统有没启动完毕
- COUNT:播放次数,0-无限循环
- PAUSE:本组播放完毕后,停留的帧数。
- PATH:动画图片所在的文件夹,eg:part0、part1
示例:
480 480 30
p 1 10 part0
p 0 10 part1
表示:动画分辨率为480*480,每秒播放30帧;第一组播放1次,播放完毕后停留10帧;第二组一直循环播放。最后需要一个空行,否则最后一组不运行
2.2 生成zip
- Windows:使用压缩软件即可,其中压缩方式,选“存储”
- Mac:
zip -0qry -i \*.txt \*.png \*.wav @ ../bootanimation.zip *.txt part*
三、预览
最好的预览方式,当然是直接放到要修改的Android设备里中去。
如果没有设备,只能想其它方式:
3.1 root设备
有root过的设备,可以在设备上预览(记得先备份原动画),基本命令
adb root
adb remount
adb push bootanimation.zip /system/media/
# 直接预览动画。重启阅览也行:adb reboot
adb shell bootanimation
3.2 软件
Windows:BootAnimationPreview
Mac:暂未找到
四、优化
如果生成的动画很慢,在30fps以上的播放速度都是一样。那可以尝试以下优化:
- 把png换成jpg。转换工具:imagemagick、在线png2jpg(有数量限制)
- 把图片压缩一下,在线压缩工具:onlineimagetool、TinyPNG(有数量限制)
mac使用imagemagick,可以使用brew安装,然后使用sh批量处理:
#!/bin/sh
for file in ./part1/*.png
do
convert "$file" "${file%.png}.jpg"
done
执行$ bash ./png2jpg.sh
我的经过两种方式优化后,zip从13M变成了1.3M,运行效果基本达到理想(不理想的是:第二组动画,第一次播放偏慢,第二次之后才正常)