Android開機動畫及黑屏

platform:RK3399
OS:Android 7.1

1.Android各階段動畫

Android動畫主要分為關(guān)機充電動畫和開機動畫;開機動畫又分為三個階段:uboot階段動畫、kernel階段動畫、Android階段動畫。

1.1uboot開機動畫

Uboot階段由于大部分環(huán)境和驅(qū)動沒有準備好,所有此階段顯示直接采用的framebuffer;而且嚴格來說只是圖片,并不是動畫。
要在uboot階段顯示logo,需要先在dts中打開配置

rockchip,uboot-logo-on = <1>;

然后替換源碼SDK中kernel目錄下的logo.bmp;重新編譯resource.img即可生效。

1.2kernel開機動畫

Kernel階段的logo圖片更換比Uboot階段的更加簡單,只需要替換SDK中kernel目錄下的logo_kernel.bmp即可。仍然是重新編譯resource.img生效。

1.3Android開機動畫

到了Android啟動階段,就可以真正顯示動畫了。不過這里的動畫也是一系列png圖片以每秒一定幀數(shù)播放產(chǎn)生的視覺效果。下圖是一個Android開機動畫的示例。

1.gif

1.4關(guān)機充電動畫

除了開機動畫,關(guān)機充電也支持動畫顯示。下圖是一個充電電池圖標。

2

步驟1:支持關(guān)機充電:

uboot-charge {
compatible = "rockchip,uboot-charge";
rockchip,uboot-charge-on = <1>;
rockchip,android-charge-on = <0>;
};

步驟2:替換關(guān)機充電圖標

resources
├── charge_anim_desc.txt
└── images
    ├── battery_0.bmp
    ├── battery_1.bmp
    ├── battery_2.bmp
    ├── battery_3.bmp
    ├── battery_4.bmp
    ├── battery_5.bmp
    └── battery_fail.bmp

上述目錄是充電動畫資源目錄。建議名稱和數(shù)量不要更改,僅更換圖片內(nèi)容即可。

步驟3:打包資源,執(zhí)行下面的打包指令

sudo ./tools/resource_tool/pack_resource.sh tools/resource_tool/resources/ ../kernel/resource.img resource.img tools/resource_tool/resource_tool

執(zhí) 行 后 會 將 tools/resource_tool/resources/ 目 錄 下 的 動 畫 圖 片 資 源 打 包在../kernel/resource.img,生成新的 resource.img 在 uboot 根目錄。

如果需要更高的定制化,那么就需要修改charge_anim_desc.txt文件

#default anim delay. //默認動畫延時時間ms
delay=900

#only show current level's pics.//是否只顯示當前電量級別的動畫,關(guān)閉可以看到電量疊加
only_current_level=false

#reserve.//錯誤的時候顯示的圖片
bat_error=images/battery_fail.bmp

#num of level configs. //這里可以根據(jù)需要定義圖片數(shù)量
levels=6

//每張圖片對應的電量,總的數(shù)量要和上面levels一致。
#min_level(min cap level to match this level-conf), num(num of pics in this level-conf)
#prefix(prefix of pics' path in resource.img)
#'num=1 prefix=test' means: test.bmp
#'num=2 prefix=test' means: test00.bmp & test01.bmp
min_level=0 num=1 prefix=images/battery_0
min_level=20 num=1 prefix=images/battery_1
min_level=40 num=1 prefix=images/battery_2
min_level=60 num=1 prefix=images/battery_3
min_level=80 num=1 prefix=images/battery_4
min_level=100 num=1 prefix=images/battery_5

2.Android開機動畫

Android 開機動畫由多幅圖片,逐幀播放,形成動畫的效果。播放的具體效果,由配置文件desc.txt中的參數(shù)來決定。

2.1文件格式

動畫資源文件統(tǒng)一命名為bootanimation.zip的zip壓縮包。內(nèi)部包含的文件如下面目錄所示。

.
├── desc.txt  //配置文件
└── part1    //播放的圖片目錄,可以有多個,比如:part0,part1...

2.2語法規(guī)則

desc.txt的具體內(nèi)容如下:

1980 1200 15 ----第一行
p 3 10 part1 ----第二行
p 1 0 part1 ----可以有多個目錄

第一行參數(shù):

  • 1920 1080這兩個是顯示時候的分辨率從,一般就是屏幕的分辨率。
  • 15 幀率,就是一分鐘播放的圖片張數(shù),可以根據(jù)需要設(shè)置,常見的有24,25,30等。

第二行參數(shù)

  • p 表示播放
  • 3 表示循環(huán)次數(shù);0表示無限循環(huán),3就表示循環(huán)3次。
  • 10 表示每張圖片之間延遲的時間,單位ms
  • part1 就是上面的存放圖片的目錄名稱

2.3更換步驟

步驟1:更換part目錄中的圖片,注意圖片要按序號命名。比如001.png,002.png....

步驟2:按需求和實際情況修改desc.txt文件

步驟3:將資源文件打包成zip文件。

  • 在linux下打包

zip -r -0 bootanimation.zip part1 desc.txt

  • 在windwos下打包,注意選擇“僅存儲”,且不要新建bootanimation文件夾,而是直接打包文件。

步驟4:使更換的開機動畫生效

  • 臨時生效

執(zhí)行命令并重啟設(shè)置。

adb push bootanimation.zip system/media/

  • 完全替換
    在板級配置文件rk3399.mk中增加如下內(nèi)容
#for bootanimation
PRODUCT_COPY_FILES += \
       device/rockchip/rk3399/bootanimation.zip:system/media/bootanimation.zip

在rk3399中還需要更改另外一處地方:
替換device/rockchip/common目錄下的bootanimation.zip

2.4開機黑屏問題

現(xiàn)象描述:當Android開機動畫播放完畢,但是Launcher還沒有起來之前,會出現(xiàn)一段時間的黑屏。這種現(xiàn)象在燒錄固件第一次開機的時候尤其明顯。
解決方法:將Android開機動畫設(shè)置為循環(huán)播放,也就是

1980 1200 15 
p 0 10 part1 

注意循環(huán)播放最后一幀需要與第一幀銜接,不然會有跳躍的突兀感。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容