工做原理android
Android的系統登陸動畫有2種:動畫
1:android自帶的動畫。spa
由前景和背景兩張PNG圖片組成,這兩張圖片存在於/system/framework /framework-res.apk文件當中,對應原文件位於/frameworks/base/core/res/assets/images/。前景圖片(android-logo-mask.png)上的Android文字部分鏤空,背景圖片(android-logo-shine.png)則是簡單的紋理。系統登陸時,前景圖片在最上層顯示,程序代碼(BootAnimation.android())控制背景圖片連續滾動,透過前景圖片文字鏤空部分滾動顯示背景紋理,從而實現動畫效果。code
2:多幀圖片輪流播放造成的動畫。
這個和放電影相似,動畫文件爲/out/target/product/dkb/system/media/bootanimation.zip 壓縮包,當目錄中沒有bootanimation.zip時,系統會自動加載android自帶的動畫。bootanimation動畫有2部分,分別是part0,part1。part0通常播放一次,part1通常循環播放,直到系統啓動完畢。
相關文件:
/frameworks/base/cmds/bootanimation/BootAnimation.h
/frameworks/base/cmds/bootanimation/BootAnimation.cpp
/frameworks/base/cmds/bootanimation/bootanimation_main.cpp
/system/core/init/init.c
/system/core/rootdir/init.rc
製做步驟:圖片
1:製做自帶的動畫:將/frameworks/base/core/res/assets/images/目錄下的android-logo-mask.png和android-logo-shine.png,直接用2張相同分辨率的PNG-24圖片替換就能夠了,圖片的名字要保持不變。而後從新編譯打包便可。ip
2:製做多幀圖片動畫:get
a:新建bootanimation文件夾,在bootanimation裏面再新建2個目錄part0,part1,和一個文本文件desc.txt 。cmd
b:製做動畫圖片幀。用photoshop將導出的png圖片保存爲png-24格式,圖片的名字要按順序命名(例如:1.png,2.png,3.png……). 最後將動做連續的圖片放到part0,和part1中。 part0,part1中固然能夠放2組不一樣的動畫圖片。
c:desc.txt:這是一個保存形式爲ANSI格式,用於設置這個動畫像素(大小),幀數,閃爍次數,文件夾名稱等;,通常格式以下:animation
480 800 25 //表示圖片以480*800 的分辨率進行播放,每秒播放25張圖片it
p 1 0 part0 //p爲標誌符,意爲將part0裏面的圖片順序播放1次,間隔時間爲0幀
p 0 2 part1 //表示將part1裏面的圖片播放0次(也就是循環播放),直到系統啓動完畢。兩次循環之間間隔2幀圖片的時間。
其實只要一個part 也是能夠的。
d:進入bootanimation 目錄,將part0,part1,desc.txt 打包成bootanimation.zip 而後將此文件放在/out/target/product/sdkdemo/system/media/ 目錄下便可。
Windows :打包成zip格式的壓縮包,壓縮方式要選存儲,否則沒法正常播放
Linux下打包的命令以下:
#zip -O –r ../bootanimation.zip ./*
Linux 指令必須使用 –O ,表示壓縮等級爲最低等級stored,即只打包不壓縮,不然會因爲打包格式的問題致使動畫顯示異常。