本文轉載自:http://blog.csdn.net/yinhaide/article/details/43668401
Android開機畫面總共有三屏
一、第一屏:開機logo
1、選張png格式的圖片,在Linux任意下執行(安裝工具):
sudo apt-get install pnmtoplainpm
2、在所要定制logo的pngtopnm logo.png目錄執行(轉換成pnm格式):
pngtopnm logo.png > logo_linux.pnm
3、再執行(轉化成224的pnm圖片):
pnmquant 224 logo_linux.pnm > logo_linux_clut224_formal.pnm
4、執行(轉換成ppm格式):
pnmtoplainpnm logo_linux_clut224_formal.pnm > logo_linux_clut224.ppm
5、/kernel/drivers/video/logo/logo_linux_clut224.ppm是默認的啟動Logo圖片,把自己的ogo_linux_clut224.ppm替換這個文件,同時刪除logo_linux_clut224.c logo_linux_clut224.o文件(如果存在) 。
6、進入kernel目錄重新編譯內核
cd kernel
make kernel.img
二、第二屏:Android字樣
if( load_565rle_image(INIT_IMAGE_FILE) ) { fd = open("/dev/tty0", O_WRONLY); if (fd >= 0) { const char *msg; msg = "\n" "\n" "\n" "\n" "\n" "\n" "\n" // console is 40 cols x 30 lines "\n" "\n" "\n" "\n" "\n" "\n" "\n" " A N D R O I D "; write(fd, msg, strlen(msg)); close(fd); } } :到這里大家就知道怎么修改了吧。但是這里要提到的一點就是,上面的代碼片段有一個if語句,就是先檢測在文件系統根目錄下是否存在要實現的開機動畫,如果不存在的話,那么就顯示這個文本信息代替,所以,這個階段是可以實現圖片的顯示的,而且圖片的格式是.rle格式的。如果不存在就顯示文本,所以你可以選擇系那是自己的文字,也就是修改“A N D R O I D”字樣啊。也可以選擇顯示圖片,但是要自己在文件系統的根目錄下提供提片,具體的圖片的名字在init.h文件中定義:
#define INIT_IMAGE_FILE "/initlogo.rle" int load_565rle_image( char *file_name );看到上面的宏定義大家就懂了吧,至於怎么制作rle格式的,這個使用一些軟件就好。
三、第三屏:開機動畫
bool BootAnimation::android() { initTexture(&mAndroid[0], mAssets, "images/android-logo-mask.png"); initTexture(&mAndroid[1], mAssets, "images/android-logo-shine.png"); }這就是設置顯示的前景圖片和背景圖片。接着看還有如下代碼:
#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"看宏名相信大家就知道了,這就是設置動畫文件的名稱了。為什么會又顯示圖片又設置動畫顯示呢,這個Android版本有關。顯示兩個圖片:前景和背景圖片是在1.5版本用,后來就改為了設置動畫文件,就是:bootanimation.zip,是zip格式的,這個文件包含三個內容:兩個目錄:part0和part1,一個文件desc.txt。兩個目錄用來包含要顯示的圖片,分為第一階段和第二階段。剩下的文件就是設置關於如何顯示的信息:
示例如下:
480 800 15 p 1 0 part0 p 0 0 part1具體的含義如下:
480--width of the image, 800--height of the image, 15--frames of second p 1, display one time p 0, display recycling till handset power on finished
你可以制作自己的bootanimation.zip文件放置在合適的目錄下,這樣可以代替默認的開機界面:這里說的合適的目錄就是上面的宏定義,大家都懂^_^!怎么制作bootanimation.zip文件呢?和上面一樣創建兩個目錄和一個文件,然后使用軟件或者是命令行大包即可
zip -r -0 bootanimation.zip part0 part1 desc.txt
至此,自定義開機畫面就完成了!
(1)、如果只要替換原動畫的話流程如下:
1、編譯成功后在android源碼根目錄生成out目錄
2、修改android\out\target\product\sdkDemo\system\framework目錄下的framework-res.apk
用winrar格式打開,替換assets\images里的2張圖片即可
(2)、如果要完全自己制作開機動畫的話,流程如下:
1、准備好要制作的圖片放在指定文件夾內(我的是android1、android2兩個目錄,里面是若干png格式圖片)
2、編寫desc.txt文件,指定動畫參數(我的配置是:1366 768 9p 1 0 android1p 0 0 android2)
3、在android1、android2、desc.txt所在目錄執行:
zip -0 bootanimation.zip android1/*png android2/*png desc.txt
4、將bootanimation.zip拷貝到自定義media目錄下,修改自己的makefile文件,添加以下類似代碼:
PRODUCT_COPY_FILES += \$(call find-copy-subdir-files,*,$(LOCAL_PATH)/media,system/media)
5、重新編譯