作者:徐建祥(netpirate@gmail.com)
日期:2010/03/06
網址:http://www.anymobile.org
Android 開機會出現3個畫面:
a. Linux 系統啟動,出現Linux小企鵝畫面(reboot);
b. Android平臺啟動初始化,出現"A N D R I O D"文字字樣畫面;
c. Android平臺圖形系統啟動,出現含閃動的ANDROID字樣的動畫圖片(start)。
1/ 開機圖片(Linux小企鵝)
Linux Kernel引導啟動后,加載該圖片。
/kernel/trunk/drivers/video/fbmem.c
/kernel/trunk/drivers/video/fbmem.h
/kernel/trunk/drivers/video/logo/logo.c
/kernel/trunk/drivers/video/logo/logo.h
/kernel/trunk/drivers/video/logo/Kconfig
/kernel/trunk/include/linux/linux_logo.h
2/ 開機文字("A N D R I O D")
Android 系統啟動后,讀取 /initlogo.rle(一張565 rle壓縮的位圖),如果讀取成功,測在/dev/graphics/fb0顯示Logo圖片;如果讀取失敗,則將/dev/tty0設為TEXT模式,并打開/dev/tty0,輸出文本“A N D R I O D”字樣。
相關代碼:
/system/core/init/init.c
/system/core/init/init.h
/system/core/init/init.rc
/system/core/init/logo.c
*.rle文件的制作步驟:
a. 使用GIMP或者Advanced Batch Converter軟件,將圖象轉換為RAW格式;
b. 使用android自帶的rgb2565工具,將RAW格式文件轉換為RLE格式(如:rgb2565 -rle < initlogo.raw > initlogo.rle)。
3/ 開機動畫(閃動的ANDROID字樣的動畫圖片)
Android的系統登錄動畫類似于Windows系統的滾動條,是由前景和背景兩張PNG圖片組成,這兩張圖片存在于/system/framework/framework-res.apk文件當中。前景圖片(android-logo-mask.png)上的Android文字部分鏤空,背景圖片(android-logo-shine.png)則是簡單的紋理。系統登錄時,前景圖片在最上層顯示,程序代碼控制背景圖片連續滾動,透過前景圖片文字鏤空部分滾動顯示背景紋理,從而實現動畫效果。
相關代碼:
/frameworks/base/libs/surfaceflinger/BootAnimation.h
/frameworks/base/libs/surfaceflinger/BootAnimation.cpp
/frameworks/base/core/res/assets/images/android-logo-mask.png
Android默認的前景圖片,文字部分鏤空,大小256×64
/frameworks/base/core/res/assets/images/android-logo-shine.png
Android默認的背景圖片,有動感效果,大小512×64
參考文檔:
圖說Android開機畫面和開機動畫
http://www.shudoo.com/09/1030/15/13418431.html
initlogo.rle: display an image on boot
http://forum.xda-developers.com/showthread.php?t=443431
分析Android 根文件系統啟動過程(init守護進程分析)
http://crazier9527.javaeye.com/blog/454635
posted on 2010-03-06 13:06
Xu Jianxiang 閱讀(625)
評論(0) 編輯 收藏 所屬分類:
Android