Android 平台自定义开机动画
作者:访客发布时间:2023-12-29分类:程序开发学习浏览:95
上一节源码分析中我们知道,BootAnimation 会从以下几个目录中加载动画文件:
- /system/media/bootanimation-encrypted.zip (if getprop("vold.decrypt") = '1')
- /system/media/bootanimation.zip
- /oem/media/bootanimation.zip
知道了这个,自定义开机动画的流程就出来了:
- 构造好 bootanimation.zip 文件
- 将 bootanimation.zip 文件预制到以上目录
那么这里就有几个问题了:
- bootanimation.zip 中需要有哪些文件?
- 这些文件怎么组织?
- 怎么描述动画的流程
这些问题,bootanimation format 官方文档都做出了解答。但是文档比较严谨与正式化,理解上相对难一点。下面我用偏实践的方式给大家解析一下官方文档。
这里给出一个 bootanimation.zip 未压缩时的结构示例:
bootanimation/
├── desc.txt
├── part0
│ └── 000.png
├── part1
│ └── 001.png
└── part2
└── 002.png
其中 part0 part1 part2
表示动画的每一个阶段,根据动画的复杂程度,可能还有 part3 part4 part5 等等。
每个 part 中,都保存有至少一张 png 图片。
desc.txt 是动画的脚本文件,用于描述动画的每个阶段,我们通过一个示例来了解其格式:
1080 1920 60 # 宽x高=1080x192, fps=60帧
c 1 0 part0 # part0 只播放1次,但需全部图片都播放,不能打断
c 1 15 part1 # part1 只播放1次,但需全部图片都播放,不能打断,在播放结束时延迟15帧,即15/fps=1/60=1/4秒
p 0 0 part2 # part2 循环播放,直到系统启动完成,当 `service.bootanim.exit` 属性设置为 1 时,打断播放
- 第一行:1080 1920 是动画区域的大小,单位是像素,60 是 60 帧每秒
- 第二行:c 1 0 part0
- 第一个参数 c 表示
service.bootanim.exit
属性设置为 1 时,动画不会被打断,第一个参数如果是 p,表示service.bootanim.exit
属性设置为 1 时,动画会被打断 - c 后面第 1 个参数:1 是播放一次, 0 表示无限循环直至开机完成。
- c 后面第 2 个参数: 数字表示阶段(part)间隔时间,0 表示没有间隔时间
- c 后面第 3 个参数:为对应的步骤文件夹
- 第一个参数 c 表示
- 后面几行和第二行类似
准备好以上的文件就可以打包了:
# 安装好 zip
sudo apt install zip
cd bootanimation/
zip -0qry -i \*.txt \*.png \*.wav @ ../bootanimation.zip *.txt part*
执行完以上命令后,就可以在 bootanimation 的同级目录找到 bootanimation.zip 文件了。
接着我们把 bootanimation.zip 动画文件预制到 /system/media/
目录下:
把 bootanimation.zip 动画文件移动到 device/jelly/rice14
文件中。
在我们的自定义 Product 配置文件 device/jelly/rice14/rice14.mk
中添加如下内容
PRODUCT_COPY_FILES += \
$(LOCAL_PATH)/bootanimation.zip:/system/media/bootanimation.zip
PRODUCT_ARTIFACT_PATH_REQUIREMENT_WHITELIST +=\
/system/media/bootanimation.zip
接着重新编译系统,启动虚拟机就可以看到自定义的开机界面了:
source build/envsetup.sh
lunch rice14-eng
m
emulator
参考资料
- bootanimation format
- 基于Android P,自定义Android开机动画的方法
关于
我叫阿豪,2015 年本科毕业于国防科学技术大学指挥信息系统专业,毕业后从事信息化装备的研发工作,工作内容主要涉及 Android Framework 与 Linux Kernel。
如果你对 Android Framework 感兴趣或者正在学习 Android Framework,可以关注我的微信公众号和抖音,我会持续分享我的学习经验,帮助正在学习的你少走一些弯路。学习过程中如果你有疑问或者你的经验想要分享给大家可以添加我的微信,我拉你进技术交流群。
- 程序开发学习排行
-
- 1鸿蒙HarmonyOS:Web组件网页白屏检测
- 2HTTPS协议是安全传输,为啥还要再加密?
- 3HarmonyOS鸿蒙应用开发——数据持久化Preferences
- 4记解决MaterialButton背景颜色与设置值不同
- 5鸿蒙HarmonyOS实战-ArkUI组件(RelativeContainer)
- 6鸿蒙HarmonyOS实战-ArkUI组件(Stack)
- 7[Android][NDK][Cmake]一文搞懂Android项目中的Cmake
- 8Android广播如何解决Sending non-protected broadcast问题
- 9鸿蒙HarmonyOS实战-ArkUI组件(mediaquery)
- 最近发表
-
- WooCommerce最好的WordPress常用插件下载博客插件模块的相关产品
- 羊驼机器人最好的WordPress常用插件下载博客插件模块
- IP信息记录器最好的WordPress常用插件下载博客插件模块
- Linkly for WooCommerce最好的WordPress常用插件下载博客插件模块
- 元素聚合器Forms最好的WordPress常用插件下载博客插件模块
- Promaker Chat 最好的WordPress通用插件下载 博客插件模块
- 自动更新发布日期最好的WordPress常用插件下载博客插件模块
- WordPress官方最好的获取回复WordPress常用插件下载博客插件模块
- Img to rss最好的wordpress常用插件下载博客插件模块
- WPMozo为Elementor最好的WordPress常用插件下载博客插件模块添加精简版