1. 程式人生 > >Android開機畫面製作(Bootloader階段)

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版本,其官方網站是。但是,無論是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-iandroid.raw565 >android_logo.h

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