開機logo以及兩種修改開機動畫方法


Android開機畫面總共有三屏
一、第一屏:開機logo

 1、選張png格式的圖片,在Linux任意下執行(安裝工具):

  1. sudo apt-get install pnmtoplainpm  

 2、在所要定制logo的pngtopnm logo.png目錄執行(轉換成pnm格式):

  1. pngtopnm logo.png > logo_linux.pnm  

 3、再執行(轉化成224的pnm圖片):

  1. pnmquant 224 logo_linux.pnm > logo_linux_clut224_formal.pnm  

 4、執行(轉換成ppm格式):

  1. 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目錄重新編譯內核

  1. cd kernel  
  1. make kernel.img  
二、第二屏:Android字樣
Android系統開機會出現“A N D R O I D”這行字,相信大家都不陌生,那么這個怎么修改呢?相關文件在Android系統源碼(不是Android內核源碼)system/core/init/init.c,如下代碼片段
  1. if( load_565rle_image(INIT_IMAGE_FILE) ) {    
  2.      fd = open("/dev/tty0", O_WRONLY);    
  3.      if (fd >= 0) {    
  4.          const char *msg;    
  5.              msg = "\n"    
  6.          "\n"    
  7.          "\n"    
  8.          "\n"    
  9.          "\n"    
  10.          "\n"    
  11.          "\n"  // console is 40 cols x 30 lines    
  12.          "\n"    
  13.          "\n"    
  14.          "\n"    
  15.          "\n"    
  16.          "\n"    
  17.          "\n"    
  18.          "\n"    
  19.          "             A N D R O I D ";    
  20.          write(fd, msg, strlen(msg));    
  21.          close(fd);    
  22.      }    
  23.  } :  
          到這里大家就知道怎么修改了吧。但是這里要提到的一點就是,上面的代碼片段有一個if語句,就是先檢測在文件系統根目錄下是否存在要實現的開機動畫,如果不存在的話,那么就顯示這個文本信息代替,所以,這個階段是可以實現圖片的顯示的,而且圖片的格式是.rle格式的。如果不存在就顯示文本,所以你可以選擇系那是自己的文字,也就是修改“A N D R O I D”字樣啊。也可以選擇顯示圖片,但是要自己在文件系統的根目錄下提供提片,具體的圖片的名字在init.h文件中定義:
  1. #define INIT_IMAGE_FILE   "/initlogo.rle"     
  2. 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文件的內容,有如下代碼片段:
  1. bool BootAnimation::android()    
  2. {    
  3.     initTexture(&mAndroid[0], mAssets, "images/android-logo-mask.png");    
  4.     initTexture(&mAndroid[1], mAssets, "images/android-logo-shine.png");  
  5. }  
這就是設置顯示的前景圖片和背景圖片。接着看還有如下代碼:
  1. #define USER_BOOTANIMATION_FILE "/data/local/bootanimation.zip"    
  2. #define SYSTEM_BOOTANIMATION_FILE "/system/media/bootanimation.zip"    
  3. #define SYSTEM_ENCRYPTED_BOOTANIMATION_FILE "/system/media/bootanimation-encrypted.zip"  
   看宏名相信大家就知道了,這就是設置動畫文件的名稱了。為什么會又顯示圖片又設置動畫顯示呢,這個Android版本有關。顯示兩個圖片:前景和背景圖片是在1.5版本用,后來就改為了設置動畫文件,就是:bootanimation.zip,是zip格式的,這個文件包含三個內容:兩個目錄:part0和part1,一個文件desc.txt。兩個目錄用來包含要顯示的圖片,分為第一階段和第二階段。剩下的文件就是設置關於如何顯示的信息:
示例如下:
  1. 480 800 15  
  2. 0 part0  
  3. 0 part1  
具體的含義如下:
  1. 480--width of the image, 800--height of the image, 15--frames of second  
  2. 1, display one time  
  3. 0, display recycling till handset power on finished  
相信大家懂了!呵呵。
你可以制作自己的bootanimation.zip文件放置在合適的目錄下,這樣可以代替默認的開機界面:這里說的合適的目錄就是上面的宏定義,大家都懂^_^!怎么制作bootanimation.zip文件呢?和上面一樣創建兩個目錄和一個文件,然后使用軟件或者是命令行大包即可
  1. 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所在目錄執行:

  1. zip -0 bootanimation.zip android1/*png android2/*png desc.txt  

 4、將bootanimation.zip拷貝到自定義media目錄下,修改自己的makefile文件,添加以下類似代碼:

  1. PRODUCT_COPY_FILES += \$(call find-copy-subdir-files,*,$(LOCAL_PATH)/media,system/media)  

 5、重新編譯


免責聲明!

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



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