Android開機畫面製作(Bootloader階段)

 

 

    Android開機畫面由四部分組成,第一部分在bootloader啓動時顯示;第二部分在Linux系統啓動時(就是那小企鵝);第三部分是在Android平臺啓動初始化時,出現“A N D R I O D”文字字樣畫面;第四部分是在平臺圖形系統啓動後,出現含閃爍的ANDROID字樣的動畫。

    在bootloader階段,aboot_init函數中,調用了display_init完成顯示的初始化動作後,接着調用display_image_on_screen,在該函數中涉及開機畫面的顯示。原理比較簡單,開機畫面已被轉換爲可以直接用於顯示的RGB數據,存放在一個常量數組中,需要顯示時,定義顯示的區域,直接將這些數據拷貝到Buffer中。

這裏說一下如何將一般的圖片(jpgpngbmp等)轉換得到bootloader開機畫面所需的顯示數據,其中有些細節需要注意的。

 

    一、得到png文件

    大多數格式的圖片,都可以通過photoshop轉換成png格式。注意的是,bootloader需要的png必須是256色且不帶alpha(透明度)通道的。首先,打開需要轉換的文件,比如android.jpg,然後選擇“文件”菜單下的“存儲爲Web和設備所用格式”,如下圖:

 

 

    注意設置頁面右上角紅色框內的選項,必須選擇PNG-8格式,顏色爲256,不勾選透明度。設置完畢,保存爲png文件,如android.png

 

    二、轉換成raw文件

    這裏要用到一個開源工具ImageMagick,可以到網上下載,有windows版本和Linux版本,其官方網站是www.imagemagick.org。但是,無論是windows還是Linux版本,格式轉換的操作都只支持命令行操作方式。使用下面的命令,得到可進一步利用的raw文件:

    convert  *.png  –depth  8  rgb:*raw

    比如上面的android.png,執行:

    convert  android.png  –depth  8  rgb:android.raw


    三、使用rgb2565

    Android自帶了一個可將raw轉換成直接用於顯示的RGB數據的工具,在out/host/linux-x86/bin/目錄下。其使用格式爲:

    ./rgb2565  <*.raw>  *.raw565

    比如需要轉換android.raw,將android.raw拷貝到out/host/linux-x86/bin/,執行:

    ./rgb2565  <android.raw>  android.raw565

 

    所生成文件(如android.raw565)的後綴無關緊要,可以命名爲任何文字。得到的這個文件中的數據,已是可以直接在bootloader中使用的了。這個文件的字節數,應該是原始圖片像素的2倍,比如原始圖片大小是300 * 200的,那麼這裏得到的文件大小應該是120000字節。

 

    四、轉換成數組

    上面已提到,bootloader是將開機畫面存放在一個常量數組裏面的。第三步已得到可用於顯示的RGB數據了;Android還提供一個工具,方便的將這些數據轉換成char型數組,它就是xxd。比如,將上述的android.raw565轉換成數組格式存放到一個名爲android_logo.h的頭文件中,執行:

    xxd  -i  android.raw565  >  android_logo.h

 

    至此,就可以在bootloader中使用這個logo的數組了。

 

 

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