安卓開機界面修改

1. android開機動畫顯示原理

開機時,系統自動檢測在/system/media/目錄或/data/local/目錄有沒有bootanimation.zip文件。如果有,這按照bootanimation.zip裏面的png排列順序依次顯示開機圖片,開起來就是動畫效果;否則按照android默認的方式顯示開機動畫。

android開機動畫叫源碼位於frameworks/base/cmds/bootanimation下,這個程序編譯後生成/syetem/bin/bootanimation,將/data/local/bootanimation.zip/system/media/bootanimation.zip裏面的png圖片以動畫的形式播放出來。

在每個方案目錄下的init.rc文件中,指定了bootanimation的執行:

service bootanim /system/bin/bootanimation

 

加載開機動畫和音樂的源碼在:

frameworks/base/cmds/bootanimation/BootAnimation.cpp

首先看一下定義的常量:

#define USER_BOOTANIMATION_FILE "/data/local/bootanimation.zip"

#define SYSTEM_BOOTANIMATION_FILE "/system/media/bootanimation.zip"

#define SYSTEM_ENCRYPTED_BOOTANIMATION_FILE  "/system/media/bootanimation-encrypted.zip"

BootAnimation::readyToRun()準備工作:

進入一個if判斷語句

if ((encryptedAnimation &&

            (access(SYSTEM_ENCRYPTED_BOOTANIMATION_FILE, R_OK) == 0) &&

            (mZip.open(SYSTEM_ENCRYPTED_BOOTANIMATION_FILE) == NO_ERROR))  ||((access(USER_BOOTANIMATION_FILE, R_OK) == 0) &&

            (mZip.open(USER_BOOTANIMATION_FILE) == NO_ERROR)) ||

            ((access(SYSTEM_BOOTANIMATION_FILE, R_OK) == 0) &&

            (mZip.open(SYSTEM_BOOTANIMATION_FILE) == NO_ERROR))) {

        mAndroidAnimation = false;

    }

BootAnimation::threadLoop()執行動畫:

if (mAndroidAnimation) {

r = Android(); // 執行android字體閃動的圖片

} else {

r = movie(); // 執行bootanimation.zip中提供的動畫圖片

}

BootAnimation::Android()會加載"images/android-logo-mask.png""images/android-logo-shine.png"。而BootAnimation::movie()會加載bootanimation.zip中的內容

另外,開機音樂路徑的加載在bootanimation_main.cpp中指定:

 boot->playBootMusic("/system/media/boot.wav")

 

2. 修改開機動畫

知道原理之後,就可以直接自定義開機畫面,開機動畫和音樂資源放在android\device\softwinner\wing-XXXXX\media中,編譯之後會放在/system/media/目錄中。

動畫文件bootanimation.zip文件由下面幾個文件目錄組成:

desc.txt 動畫屬性描述文件;

part0 第一階段動畫圖片的目錄 (動畫是由一幀幀圖片組成的);

part1 第二階段動畫圖片的目錄;

...

Partn

一般來說就兩個文件夾part0part1,兩個文件夾裏面放着編號號的png圖片。

desc.txt文件內容格式如下:

320 480 5

p 1 0 part0

p 0 0 part1

 

其中,320爲圖片的寬,480爲圖片的高,後面的那個5表示幀數,即每秒播放的圖片張數。

p爲描述符,後面的1表示播放一次,後面的0表示階段切換時間,part0表示png資源路徑。

p爲描述符,後面的0表示本階段無限循環(直到開機結束),再後面的0表示本階段切換時間,part1表示路徑。

 

開機logo的路徑:lichee\tools\pack\chips\sun9iw1p1\boot-resource\boot-resource\bootlog0.bmp

\boot-resource\boot-resource\bat\bootlog0.bmp

 

圖片和desc.txt文檔都準備好後,開始打包爲bootanimation.zip。選中圖片文件夾part0desc.txt(提醒一下:打包前將圖片文件夾中的Thumbs.db刪除),然後右鍵選擇WINRAR"添加到壓縮文件"進入自定義壓縮文件設置:壓縮文件格式選擇:ZIP,壓縮方式選擇:存儲,然後點擊確定即可。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章