源碼中修改Android的開機畫面和動畫【轉】

來源:互聯網
上載者:User

標籤:石頭   影片   編譯過程   google   意思   mds   swf   forum   順序   

本文轉載自:http://blog.csdn.net/dddxxxx/article/details/54343976

參照文章:http://blog.csdn.net/a345017062/article/details/6222962、http://bbs.gfan.com/android-146253-1-1.html。

 

Android系統開機顯示畫面分成兩個過程,第一個過程從按電源鍵到Frameworks啟動為止。第二個過程從Frameworks啟動完成到Launcher程式啟動完成。

第一個過程顯示的畫面是一張圖,第二個過程顯示的是一個動畫。分別簡要記錄一下怎麼樣在源碼中修改這兩個地方。

 

1、修改開機畫面

找到源碼kernel\drivers\video\logo\目錄,在這個目錄下你會發現logo_linux_clut224.ppm檔案,這個就是開機畫面的圖片,如要替換成自己的Logo,則把自己的Logo圖片(png格式)轉換成ppm格式,替換這個檔案,同時刪除logo_linux_clut224.c logo_linux_clut224.o檔案,重新編譯燒錄即可。

 

註:將png圖片改成.ppm格式。首先你要有個 和自己螢幕解析度一樣 或者 小於螢幕解析度的圖片,如logo_linux_clut224.png

    ①將png圖片轉成pnm

     pngtopnm logo_linux_clut224.png >logo_linux_clut224.pnm

    ②將pnm圖片的顏色數限制在224色

    pnmquant 224 logo_linux_clut224.pnm > logo_linux_clut224_backup.pnm(此處產生後的名字不可與前者相同,否則會報錯)

    ③將pnm圖片轉換成我們需要的ppm

    pnmtoplainpnm logo_linux_clut224_backup.pnm >logo_linux_clut224.ppm

 

2、修改開機動畫

在源碼跟目錄中,執行  find . -name "bootanimation.zip"   找到檔案所在路徑,可以查看其中的Android.mk瞭解具體的編譯過程,下面先介紹一下如何製作開機動畫:

 

開機動畫主要是由一個zip格式的壓縮包組成,壓縮包裡麵包含數張png格式的圖片,還有一個desc.txt的文字文件,開機時按desc.txt裡面的指令,螢幕上會按檔案名稱順序連續的播放一張張的圖片,


 
就像播放原始的膠帶影片一樣,形成動畫。

具體這一部分圖片怎麼來,看個人喜好了,我是比較喜歡用flash製作好自己想要的動畫然後按幀匯出,然後按數字順序給檔案編號就可以了。

如果你不會flash製作也沒關係,推薦一個軟體:SWF2Video Pro ,連結我就不提供了,自己可以google搜尋到,
這個軟體可以把flash按幀匯出成png格式圖片。也就是說,只要有你喜歡的flash動畫,你都可以用這個軟體把畫面截取出來用來做你小石頭的開機動畫。其他格式匯出png格式的軟體我就不一一說明了,大家有機會去搜尋一下。
儲存下來的png圖片記得要按順序編號命名。

下面重點講的是desc.txt這個檔案裡面的命令。
desc.txt裡面的命令格式如下:

480 427 30
p 1 0 part0
p 0 0 part1

我逐一解釋一下:

480 427意思是說你開機動畫在螢幕先以多少的解析度顯示,注意不要超過milestone螢幕480x854的解析度,否則你的畫面就顯示不全了。
30 這個數字是代表著每秒播放的幀數,拿我這個開機畫面打個比方說,part0檔案夾裡面共76個圖片,播放時間就是76/30=2.533333秒播放完畢,當然在手機裡面會有一定的延時,尤其是你的圖片檔案比較大的情況下,手機想播快也快不起來,卡啊
以下部分是實現畫面重複位置的
p 1(代表著播放一次) 0(空指令)part0  */這句指令就代表這part0檔案夾內的圖片只按名稱順序播放一次
p 0(重複播放)0 (空指令)part1 */這一句指令代表著part1檔案夾內的圖片會迴圈反覆播放

還有一種是指令不常用,我也來解釋一下吧

p 0 10 part1  這裡面的那個10代表著播放完part1檔案夾內的圖片一遍之後稍作停頓,然後再迴圈播放一遍,再停頓少許,再播放,再停頓稍許·········重複下去
p 1 10 part1  同理,這句代表著播放完part1檔案夾內的圖片之後稍作停頓然後繼續執行嚇一條命令。

如果想作出一些特殊的效果,可以活用這些命令,然後分配不同的圖片在各個檔案夾裡來實現各種重複與迴圈。

圖片準備好了,desc.txt裡面的命令準備好了,就可以把他們一起打包壓縮成zip格式了。
記住,是zip格式,而不是rar格式。另外壓縮的時候注意一點,壓縮的時候壓縮方式要選擇儲存,否則開機時手機會不認的。當然不至於變磚,只是開機的時候會黑著沒動畫一直到進入案頭為止。看圖:
 
壓縮檔重新命名為bootanimation.zip之後,放進源碼相應的目錄下重新編譯,查看out\target\product\la0910\system\media\路徑下的檔案,即可發現已經修改成功,再燒錄程式進行驗證。
如果之前已經使用了其他的紅眼之類的非預設開機動畫,這裡會已經存在這個檔案,只需覆蓋就好。

 

接下來介紹一下相關的代碼:

 

主要的控制碼在/framework/base/cmds/bootanimation/BootAnimation.cpp中。這個檔案定義了對動畫顯示規則的解析,所以,我們可以通過在bootanimation.zip中包含的描述檔案來很簡單地定義動畫顯示。只要把開機動畫按一定規則做成bootanimation.zip壓縮包存放在系統的/oem/media/或/system/media/這兩個目錄下。開機時,系統檢測到這兩個目錄任意一個下面有名字為bootanimation.zip的壓縮包的話,都會解壓並播放裡面定製的動畫。檢測順序是先檢測/oem/media/再檢測/system/media/。

另外,我們還可以用另外一種方式修改動畫,在/frameworks/base/core/res/assets/images/這個目錄中,預設情況下,BootAnimation.cpp中的動畫控制碼會使用變數mAndroid裡麵包含的兩張圖片來做為顯示動畫。我們要做的就是直接做好圖片替換掉/frameworks/base/core/res/assets/images/中的兩個檔案,最主要的還是要把握好圖片的解析度。

 

如果只是要修改解析度,那麼可以通過將其中的圖片修改解析度後重建一個新的bootanimation.zip的方法,達到適配的效果。

源碼中修改Android的開機畫面和動畫【轉】

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.