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.4關(guān)機充電動畫
除了開機動畫,關(guān)機充電也支持動畫顯示。下圖是一個充電電池圖標。
步驟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)播放最后一幀需要與第一幀銜接,不然會有跳躍的突兀感。