Android開機畫面製作(Bootloader階段)
Android開機畫面由四部分組成,第一部分在bootloader啟動時顯示;第二部分在Linux系統啟動時(就是那小企鵝);第三部分是在Android平臺啟動初始化時,出現“A N D R I O D”文字字樣畫面;第四部分是在平臺圖形系統啟動後,出現含閃爍的ANDROID字樣的動畫。
在bootloader階段,aboot_init函式中,呼叫了display_init完成顯示的初始化動作後,接著呼叫display_image_on_screen,在該函式中涉及開機畫面的顯示。原理比較簡單,開機畫面已被轉換為可以直接用於顯示的RGB資料,存放在一個常量陣列中,需要顯示時,定義顯示的區域,直接將這些資料拷貝到
這裡說一下如何將一般的圖片(jpg、png、bmp等)轉換得到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轉換成直接用於顯示的
./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的陣列了。