Android自定义开机和关机动画
Android自定义开机和关机动画
Android在开机的过程中,会经历三张图片,关于静态图的修改在我的这篇文章中有介绍到:
现在要介绍的是怎么用动画替换静态图片。开/关机的动画其实就像帧动画一样,快速播放多张图片形成的,在开/关机动画中要将这些图片打包进一个zip中,再进行适当的配置,就可以实现动画播放。
一、开/关机动画zip文件路径
在源码中找到这个文件:frameworks/base/cmds/bootanimation/BootAnimation.cpp
其中有这些定义:这些宏定义就是开/关机过程中动画文件的位置,看名字应该就知道,bootanimation.zip是开机动画,shutanimation .zip是关机动画
#define OEM_BOOTANIMATION_FILE "/oem/media/bootanimation.zip" #define SYSTEM_BOOTANIMATION_FILE "/system/media/bootanimation.zip" #define CUSTOM_BOOTANIMATION_FILE "/custom/media/bootanimation.zip" #define USER_BOOTANIMATION_FILE "/data/local/bootanimation.zip" #define SYSTEM_ENCRYPTED_BOOTANIMATION_FILE "/system/media/bootanimation-encrypted.zip" #define EXIT_PROP_NAME "service.bootanim.exit" #define SYSTEM_SHUTANIMATION_FILE "/system/media/shutanimation.zip" #define CUSTOM_SHUTANIMATION_FILE "/custom/media/shutanimation.zip" #define USER_SHUTANIMATION_FILE "/data/local/shutanimation.zip"
二、开机动画
1、新建目录part0,将需要显示的jpg拷贝进去。
2、新建目录part1,将需要显示的jpg拷贝进去。
*** ***可以根据需求添加文件夹个数
3、新建空文本文件desc.txt,内容如下:
1080 1920 15
p 1 2 part0
p 0 2 part1
1080 1920 12 (1080,1920是分辨率,12是帧数)
p 1 2 part0(p是标识符,1代表该文件夹循环1次,2代表两次循环之间间隔2张图片的时间(例:2/15秒),part0代表要显示的文件夹)
p 0 2 part1(p是标识符,0代表无限循环,2代表两次循环之间间隔2张图片的时间(例:2/15秒),part1代表要显示的文件夹)
如果配置有更多的文件夹,则按照以上两个的例子添加配置即可
4、将这三个文件以存储方式打包成bootanimation.zip(注意:一定要以“存储”的模式打包,压缩时默认是“标准”必须改为“存储”,非存储方式无法识别)。
存储在对应目录下。例:
/system/media/bootanimation.zip
5、在该文件中添加(不一定必须在embedded.mk中,其它文件也可以,只要可以确保添加的PRODUCT_COPY_FILES能被执行到):
/build/target/product/embedded.mk
前边是源码中文件位置,后边是复制到out后文件位置
PRODUCT_COPY_FILES += \
system/media/bootanimation.zip:system/media/bootanimation.zip
三、关机动画
1、新建目录part1,将需要显示的jpg拷贝进去。
2、新建目录part2,放入最后一张jpg
3、新建空文本文件desc.txt,内容如下:
1080 1920 9
p 1 2 part1
p 0 2 part2
1080 1920 9 (1080,1920是分辨率,9是帧数)
p 1 2 part1(p是标识符,1代表该文件夹循环1次,2代表两次循环之间间隔2张图片的时间(例:2/9秒),part1代表要显示的文件夹);
p 0 2 part2(p是标识符,0代表无限循环,2代表两次循环之间间隔2张图片的时间(例:2/9秒),part2代表要显示的文件夹)。
4、将这三个文件以存储方式打包成shutanimation.zip(注意:一定要以“存储”的模式打包,压缩时默认是“标准”必须改为“存储”,非存储方式无法识别)。
存储在对应目录下。例:
/system/media/shutanimation.zip
5、在该文件中添加(不一定必须在embedded.mk中,其它文件也可以,只要可以确保添加的PRODUCT_COPY_FILES能被执行到):
/build/target/product/embedded.mk
前边是源码中文件位置,后边是复制到out后文件位置
PRODUCT_COPY_FILES += \
system/media/shutanimation.zip:system/media/shutanimation.zipp
然后重新编译源码,刷机即可