Android在開機的過程當中,會經歷三張圖片,關於靜態圖的修改在個人這篇文章中有介紹到:html
如今要介紹的是怎麼用動畫替換靜態圖片。開/關機的動畫其實就像幀動畫同樣,快速播放多張圖片造成的,在開/關機動畫中要將這些圖片打包進一個zip中,再進行適當的配置,就能夠實現動畫播放。ui
1、開/關機動畫zip文件路徑
在源碼中找到這個文件:frameworks/base/cmds/bootanimation/BootAnimation.cppspa
其中有這些定義:這些宏定義就是開/關機過程當中動畫文件的位置,看名字應該就知道,bootanimation.zip是開機動畫,shutanimation .zip是關機動畫code
#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"
一、新建目錄part0,將須要顯示的jpg拷貝進去。htm
二、新建目錄part1,將須要顯示的jpg拷貝進去。blog
*** ***能夠根據需求添加文件夾個數圖片
三、新建空文本文件desc.txt,內容以下:
1080 1920 15ip
p 1 2 part0get
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表明要顯示的文件夾)
若是配置有更多的文件夾,則按照以上兩個的例子添加配置便可
四、將這三個文件以存儲方式打包成bootanimation.zip(注意:必定要以「存儲」的模式打包,壓縮時默認是「標準」必須改成「存儲」,非存儲方式沒法識別)。
存儲在對應目錄下。例:
/system/media/bootanimation.zip
五、在該文件中添加(不必定必須在embedded.mk中,其它文件也能夠,只要能夠確保添加的PRODUCT_COPY_FILES能被執行到):
/build/target/product/embedded.mk
前邊是源碼中文件位置,後邊是複製到out後文件位置
PRODUCT_COPY_FILES += \
system/media/bootanimation.zip:system/media/bootanimation.zip
一、新建目錄part1,將須要顯示的jpg拷貝進去。
二、新建目錄part2,放入最後一張jpg
三、新建空文本文件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表明要顯示的文件夾)。
四、將這三個文件以存儲方式打包成shutanimation.zip(注意:必定要以「存儲」的模式打包,壓縮時默認是「標準」必須改成「存儲」,非存儲方式沒法識別)。
存儲在對應目錄下。例:
/system/media/shutanimation.zip
五、在該文件中添加(不必定必須在embedded.mk中,其它文件也能夠,只要能夠確保添加的PRODUCT_COPY_FILES能被執行到):
/build/target/product/embedded.mk
前邊是源碼中文件位置,後邊是複製到out後文件位置
PRODUCT_COPY_FILES += \
system/media/shutanimation.zip:system/media/shutanimation.zipp
而後從新編譯源碼,刷機便可