1 2 | platform:RK3399 OS:Android 7.1 |
1.Android各阶段动画
Android动画主要分为关机充电动画和开机动画;开机动画又分为三个阶段:uboot阶段动画、kernel阶段动画、Android阶段动画。
1.1uboot开机动画
Uboot阶段由于大部分环境和驱动没有准备好,所有此阶段显示直接采用的framebuffer;而且严格来说只是图片,并不是动画。
要在uboot阶段显示logo,需要先在dts中打开配置
然后替换源码SDK中kernel目录下的logo.bmp;重新编译resource.img即可生效。
1.2kernel开机动画
Kernel阶段的logo图片更换比Uboot阶段的更加简单,只需要替换SDK中kernel目录下的logo_kernel.bmp即可。仍然是重新编译resource.img生效。
1.3Android开机动画
到了Android启动阶段,就可以真正显示动画了。不过这里的动画也是一系列png图片以每秒一定帧数播放产生的视觉效果。下图是一个Android开机动画的示例。
1.4关机充电动画
除了开机动画,关机充电也支持动画显示。下图是一个充电电池图标。
步骤1:支持关机充电:
1 2 3 4 5 | uboot-charge { compatible = "rockchip,uboot-charge"; rockchip,uboot-charge-on = <1>; rockchip,android-charge-on = <0>; }; |
步骤2:替换关机充电图标
1 2 3 4 5 6 7 8 9 10 | 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 |
上述目录是充电动画资源目录。建议名称和数量不要更改,仅更换图片内容即可。
步骤3:打包资源,执行下面的打包指令
1 | sudo ./tools/resource_tool/pack_resource.sh tools/resource_tool/resources/ ../kernel/resource.img resource.img tools/resource_tool/resource_tool |
执 行 后 会 将 tools/resource_tool/resources/ 目 录 下 的 动 画 图 片 资 源 打 包在…/kernel/resource.img,生成新的 resource.img 在 uboot 根目录。
如果需要更高的定制化,那么就需要修改charge_anim_desc.txt文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | #default anim delay. //默认动画延时时间ms delay=900 #only show current level's pics.//是否只显示当前电量级别的动画,关闭可以看到电量叠加 only_current_level=false #reserve.//错误的时候显示的图片 bat_error=images/battery_fail.bmp #num of level configs. //这里可以根据需要定义图片数量 levels=6 //每张图片对应的电量,总的数量要和上面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中的参数来决定。
2.1文件格式
动画资源文件统一命名为bootanimation.zip的zip压缩包。内部包含的文件如下面目录所示。
1 2 3 | . ├── desc.txt //配置文件 └── part1 //播放的图片目录,可以有多个,比如:part0,part1... |
2.2语法规则
desc.txt的具体内容如下:
1 2 3 | 1980 1200 15 ----第一行 p 3 10 part1 ----第二行 p 1 0 part1 ----可以有多个目录 |
第一行参数:
- 1920 1080这两个是显示时候的分辨率从,一般就是屏幕的分辨率。
- 15 帧率,就是一分钟播放的图片张数,可以根据需要设置,常见的有24,25,30等。
第二行参数
- p 表示播放
- 3 表示循环次数;0表示无限循环,3就表示循环3次。
- 10 表示每张图片之间延迟的时间,单位ms
- part1 就是上面的存放图片的目录名称
2.3更换步骤
步骤1:更换part目录中的图片,注意图片要按序号命名。比如001.png,002.png…
步骤2:按需求和实际情况修改desc.txt文件
步骤3:将资源文件打包成zip文件。
- 在linux下打包
- 在windwos下打包,注意选择“仅存储”,且不要新建bootanimation文件夹,而是直接打包文件。
步骤4:使更换的开机动画生效
- 临时生效
执行命令并重启设置。
- 完全替换
在板级配置文件rk3399.mk中增加如下内容
1 2 3 | #for bootanimation PRODUCT_COPY_FILES += \ device/rockchip/rk3399/bootanimation.zip:system/media/bootanimation.zip |
在rk3399中还需要更改另外一处地方:
替换device/rockchip/common目录下的bootanimation.zip
2.4开机黑屏问题
现象描述:当Android开机动画播放完毕,但是Launcher还没有起来之前,会出现一段时间的黑屏。这种现象在烧录固件第一次开机的时候尤其明显。
解决方法:将Android开机动画设置为循环播放,也就是
1 2 | 1980 1200 15 p 0 10 part1 |
注意循环播放最后一帧需要与第一帧衔接,不然会有跳跃的突兀感。