首先,我們先來分析一下源碼:
frameworks/base/cmds/bootanimation/BootAnimation.cpp
首先看一下定義的常量:
BootAnimation::readyToRun()
進入一個if判斷語句
BootAnimation::threadLoop()
==> BootAnimation::Android()會加載"images/android-logo-mask.png"和"images/android-logo-shine.png"
==> BootAnimation::movie()會加載bootanimation.zip中的內容
我們下載的源碼里默認是沒有那些個.zip動畫的,所以總會跳到android字體閃動的畫面
所以如果你系那個用.zip的動畫那么把你做好的動畫拷貝到編譯好對應的目錄下即可,然后執行make snod整合進img包就可以看到效果了
如果你想修改android閃動的那兩張圖片的話,最簡單的方法是直接替換圖片,如果你懂openGL的話也可以自己做酷炫的動畫
那兩張圖片放在./frameworks/base/core/res/assets/images 目錄下,一張鏤空的android圖,一張發光效果,動畫效果就是下面那張發光的效果圖不斷左右移動。
方法1:
直接修改/frameworks/base/core/res/assets/images目錄下的圖片即可(這個動畫是由android-logo-mask.png和android-logo-shine.png合成的)。
方法2:
Android開機動畫有兩種修改方法,android 2.0及之后,使用bootanimation程序顯示開機畫面,如需修改開機畫面,不用修改代碼,只需按格式要求做bootanimation.zip包,放在系統的/system/media目錄中,或/data/local目錄中即可,兩個目錄下都存在時,優先使用/data/local下的。android 2.0之前,則需要修改源碼。
開機畫面主要是由一個zip格式的壓縮包bootanimation.zip組成,壓縮包里面包含數張png格式的圖片,還有一個desc.txt的文本文檔,開機時按desc.txt里面的指令,屏幕上會按文件名稱順序連續的播放一張張的圖片,就像播放原始的膠帶影片一樣,形成動畫。
(1)動畫圖片制作。將自己的png或者jpg圖片按照數字編號后統一放在一個文件夾下,文件夾只能用英文加數字,例:part0。
(2)動畫屬性描述文件。desc.txt是一個保存形式為ANSI格式的文件,用於設置這個動畫像素(大小),幀數,閃爍次數,文件夾名稱等。內容如下: 480 427 30 (圖片像素寬、圖片像素高、每秒播放圖片數)
p 1 0 part0 (標志、只播放一次、播放完part0文件夾的文件后暫停0張圖片的時間、保存圖片的文件夾)
p 0 0 part1 (標志、循環播放、播放完part1文件夾的文件后暫停0張圖片的時間、保存圖片的文件夾)
480 427 30 ---這里的480代表圖片的像素(大小)寬度,427代表圖片的像素(大小)高度,30代表幀數; p 1 0 part0 ---這里的p代表標志符,1代表循環次數為1次,0代表階段間隔時間為0,part0代表對應的文件夾名,為第一階段動畫圖片目錄; p 0 0 part1---這里的p代表標志符,0代表本階段無限循環,0代表階段間隔時間為0,part1代表對應的文件夾名,為第二階段動畫圖片目錄;
階段切換間隔時間:單位是一個幀的持續時間,比如幀數是30,那么幀的持續時間就是1秒/30 = 33.3毫秒。階段切換間隔時間期間開機動畫進程進入休眠,把CPU時間讓給初始化系統使用。也就是間隔長啟動會快,但會影響動畫效果。 part0和part1文件夾內包含的是兩個動畫的系列圖片,圖片為PNG格式。系列圖片文件的加載刷新按文件名的名稱排序。必須注意的是,在屬性描述完成后要有換行符(回車跳入下一行),已確保指令都已完成。 (3)圖片和desc.txt文檔都准備好后,開始打包為bootanimation.zip。選中圖片文件夾part0和desc.txt(提醒一下:打包前將圖片文件夾中的Thumbs.db刪除),然后右鍵選擇WINRAR的"添加到壓縮文件"進入自定義壓縮文件設置:壓縮文件格式選擇:ZIP,壓縮方式選擇:存儲,然后點擊確定即可。

注意:/system/media是在/out/target/product/TBDG1073/system/media/下
