Android開機動畫、logo、字樣的定制過程【轉】


本文轉載自: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字樣
Android系統開機會出現“A N D R O I D”這行字,相信大家都不陌生,那么這個怎么修改呢?相關文件在Android系統源碼(不是Android內核源碼)system/core/init/init.c,如下代碼片段
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格式的,這個使用一些軟件就好。

三、第三屏:開機動畫
這個階段就是大家能看到的系統啟動過程中,顯示完"A N D R O I D"字樣后顯示的圖片,類似進度條一樣,圖片內容也是“A N D R O I D”字樣。這里怎么修改呢?其實這個部分的動畫是使用兩個圖片顯示出來的,具體的圖片文件所在路徑為:frameworks/base/core/res/assets/images,大家看一下就知道了,也就知道怎么修改了。但是還沒完。和這部分相關的源碼文件主要是如下幾個:frameworks/base/cmds/bootanimation下面的幾個文件就是的了,可以看看BootAnimation.cpp文件的內容,有如下代碼片段:
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、重新編譯


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM