android logo、android開機動畫改變詳解

                  android開logo,這一塊在工做改動的也是比較多的,也比較簡單,不一樣的公司,不一樣型號的產品,開機的標識不同。html

                  咱們平時目測的開機logo通常是兩種:靜態的和動畫的。其實在實現logo的過程當中,有四幅圖片:(1)、uboot顯示;(2)、kernel顯示logo_linux_clut244.ppm;(3)、android第一幅intilogo.rle;(4)、android第二幅,bootanimation。前三幅通常咱們作成相同的,(4)爲動畫顯示。啓動過程以下所示。linux

               這篇重點說一下要用到的文件怎麼生成,程序方面的就再也不去深刻,這一塊的代碼量也不小,通常不須要額什麼改動。UBOOT的logo會影響開機的速度,咱們也沒有作這一塊,UBOOT啓動仍是比較快,幾秒鐘的黑屏你們仍是能夠接受。下面從內核logo提及。android

 

1、內核logoubuntu

 一、內核目錄中 make menuconfigapp

Device Drivers ---->Graphics support ---->Bootup logo ----> Standard 224-color Linux logo 

 

                   把開機LOGO圖片保存爲bmp或者png格式:如linux.png;linux.bmp經過linux工具把圖片轉化爲:ppm格式。替換:driver/video/logo/logo_linux_clut244.ppmide

下面命令須要安裝netpbm的工具包 若是沒有:sudo apt-get install netpbm工具

我作的實驗,包括腳本能夠在這裏下載:android logo 腳本oop

(1)、png格式圖片,執行下面命令動畫

[html]  view plain copy
  1. #pngtopnm linuxlogo.png> linuxlogo.pnm  //生成ppm  
  2. #pnmquant 224 linuxlogo.pnm > linuxlogo224.pnm//轉換成224顏色  
  3. #pnmtoplainpnm linuxlogo224.pnm > logo_linux_clut224.ppm //轉換成ascii格式   

能夠把上面命令寫成一個腳本,這樣使用更方便:google

kernelLogo_png.sh

[html]  view plain copy
  1. pngtopnm $1 > linuxlogo.pnm        //$1爲參數,這樣不用每次改圖片名稱,後幾步爲執行過程  
  2. pnmquant 224 linuxlogo.pnm > linuxlogo224.pnm  
  3. pnmtoplainpnm linuxlogo224.pnm > logo_linux_clut224.ppm  
  4. #刪除過程當中生成不須要的文件  
  5. rm -rf ./linuxlogo.pnm  ./linuxlogo224.pnm   
  6. rm -rf ./linuxlogo.pnm  ./linuxlogo224.pnm  

以下圖:①cat ./kenrelLogo_png.sh 查看腳本內容,以下面所解釋

②./kenrelLogo_png.sh 執行腳本

③Ls查看到生成的logo_linux_clut224.ppm

(1)、bmp格式的圖片

腳本爲kenrelLogo_bmp.sh

[html]  view plain copy
  1. convert $1 linuxlogo.png  //把bmp圖片轉換成png格式,下面過程和png格式圖片相同  
  2. pngtopnm linuxlogo.png > linuxlogo.pnm  
  3. pnmquant 224 linuxlogo.pnm > linuxlogo224.pnm  
  4. pnmtoplainpnm linuxlogo224.pnm > logo_linux_clut224.ppm  
  5. rm -rf ./linuxlogo.pnm  ./linuxlogo224.pnm ./linuxlogo.png  

把logo_linux_clut224.ppm拷貝到製做好的LOGO文件到   /drivers/video/logo 文件夾替換  logo_linux_clut224.ppm 文件,刪除該文件夾下的logo_linux_clut224.o,編譯燒錄,就能夠看到你所更改的圖片。

2、android logo

一、android第一張logo

(1)找一張.png格式的圖片,使用linux下的ImageMagick自帶的convert命令,進行raw格式轉換,命令爲:

 

[html]  view plain copy
  1. convert -depth 8 android_logo.pngrgb:android_logo.raw  

 

(2)、須要用到android編譯後的rgb2565工具,在android/out/host/linux-x86/bin目錄下(android爲當前源碼所在目錄),轉換命令以下:

 

[html]  view plain copy
  1. rgb2565 -rle <</span> android_logo.raw >initlogo.rle  

 

  注:ubuntu10.04 默認已經安裝ImgageMagick工具,若是當前系統沒有安裝,能夠執行下面的命令安裝:

  sudo apt-getinstall imagemagick

                 爲了方便,咱們把rgb2565這個bin文件,拷貝到咱們作動畫的文件夾中。同上面也寫一個腳本出來:

android_rle.sh

 

[html]  view plain copy
  1. convert -depth 8 $1 rgb:logo.raw//轉換成raw文件  
  2. rgb2565 -rle <</span>logo.raw> initlogo.rle//生成咱們要的rle文件,注意:rbg2565在android/out/host/linux-x86/bin目錄拷過來。  

 

 

啓動須要顯示的圖像已經作好了,就是initlogo.rle,注意文件名必須是這個,若是想改文件名,須要修改android/system/core/init/init.h中的宏:

[html]  view plain copy
  1. #define INIT_IMAGE_FILE "/initlogo.rle"  

放到相的目錄下就好了.

 

一、android第二張圖片(動畫)
(1)、開機動畫文件爲:/system/media/bootanimation.zip是一個標準的zip文件,不過設置壓縮率時選擇存儲。

(2)、linux下用命令打包:

zip -r -X -Zstore ../bootanimation part*/*.png desc.txt

(3)、壓縮包的結構:

 

①Part 這個文件夾中爲咱們所顯示的png圖片

②desc.txt中的內容咱們要分析下,圖片美工去作,咱們要讓正常顯示就要在這裏面寫一些值。看下里面的內容

[html]  view plain copy
  1. 400 800 18  
  2. p 1 0 part0  
  3.   
  4.   
  5. #400 800 爲圖片的分辨率 400*800  
  6. #18爲每秒顯示圖片的張數,也就是18fps/S  
  7. #p表明定義一個部分。  
  8. #p後面的第一個數是重複播放這一部分次數。若是這個數爲0,就無限循環播放  
  9. #p後面第二個數是播放下一個部分前的延遲幀數  
  10. #字符串定義了加載文件的路徑  
3 在window下的操做:

3.1 在 Widows 環境中創建文件夾:

bootanimation

3.2 在bootanimation文件夾中創建子文件夾:

part0

part1

而後將一批.png文件拷貝到文件夾part0裏面,part1中暫時不放圖片文件 

3.3 在 bootanimation 文件夾中創建文本文件:

desc.txt

    可能在desc.txt中寫以下信息(注,該文件是google定義的,可在網上搜索獲得):

1024 600 10

p 1 0 part0

p 0 0 part1

文件 desc.txt 的內容解釋:

(1)分辨率

1024 600

第一行1024 600」:表示機器屏幕分辨率width height

(2)幀率

第一行10」:表示每秒中播放10張圖片(gong 10zhang )

(3)p 1 0 part0

p:表示play

1:表示播放一遍,若是是0則表示循環播放 

0:表示延時時間

part0:此文件夾下放置開機顯示的動畫圖片,圖片分辨率要和機器分辨率同樣,不然顯示會有問題

(4)p 0 0 part1

part0的圖片都顯示完畢後,就顯示part1中的圖片

3.4 在文件夾 bootanimation 內,同時選擇「part0, part1, desc.txt」,而後壓縮 

壓縮的設置以下:

a)壓縮文件名:

bootanimation.zip

b)壓縮文件格式:

ZIP

c)壓縮方式:

存儲

3.5 將前面生成的bootanimation.zip拷貝到工程中

$ cd  Project_root/

$ cd  device/rockchip/rk2928sdk/apk/

$ mkdir  app_newpad

注:將生成的bootanimation.zip文件拷貝到文件夾app_newpad中

3.6 編輯 device.mk

$ cd  Project_root/

$ cd  device/rockchip/rk2928sdk/

$ vi  device.mk

##################################

 copy proprietary apk

##################################

COPY_APK_TARGET := $(call all-apk-files-under,apk)

PRODUCT_COPY_FILES += $(foreach apkName, $(COPY_APK_TARGET), \

$(addprefix $(LOCAL_PATH)/apk/, $(apkName)):$(addprefix system/app/, $(apkName))) 

PRODUCT_COPY_FILES += \

$(LOCAL_PATH)/apk/flashplayer.nm:system/app/flashplayer.nm

# 添加如下信息

# 注意路徑的一致性

PRODUCT_COPY_FILES += \

$(LOCAL_PATH)/apk/app_newpad/bootanimation.zip:system/media/bootanimation.zip

相關文章
相關標籤/搜索