当前位置:首页 > 公众号精选 > 嵌入式案例Show
[导读]点击上方蓝字关注我哦~ 01 前言 前一篇文章中简述了如何修改开机logo,本篇来介绍如何修改开机动画。 02  开机动画的显示原理 Android系统开机动画, 是由bootanimation进程将一组逐帧的图片按次序循环播放,从而形成形成的动画效果。 bootanimation启动 boot

点击上方蓝字关注我哦~

01

前言



前一篇文章中简述了如何修改开机logo,本篇来介绍如何修改开机动画。

02

 开机动画的显示原理


Android系统开机动画, 是由bootanimation进程将一组逐帧的图片按次序循环播放,从而形成形成的动画效果。

bootanimation启动

bootanimation是一个native进程,由c++编写,在开机的过程中由init进程启动。

/init.rcservice bootanim /system/bin/bootanimation class coreuser graphicsgroup graphics audiodisabledoneshot

在SurfaceFlinger.cpp启动时在初始化init()函数里会调用startBootAnim()。

void SurfaceFlinger::startBootAnim() {property_set("service.bootanim.exit", "0");property_set("ctl.start", "bootanim");}

同时设置了两个系统属性:service.bootanim.exit和ctl.start。

init进程检测到ctl.start被设成bootanim后,

就会再去init.rc里找bootanim的service, 然后启动/system/bin/bootanimation进程。

bootanimation实现

bootanimation代码目录在

frameworks/base/cmds/bootanimation/里。功能实现主要在BootAnimation.cpp文件里。

Bootanimation继承于Thread(), 所以bootanimation显示的主要部分在threadLoop()函数里。

bool BootAnimation::threadLoop(){bool r; if (mZip == NULL) {r = android();} else {r = movie();}return r;}

mZip表示桢动画的zip文件对象,优先级依次是

”/system/media/bootanimation-encrypted.zip”“/system/media/bootanimation-encrypted.zip””/system/media/bootanimation.zip”

如果这三个文件全都不存在,就会调用android()函数,也就是原生的”android”几个字母滚动的动画。如果其中任何一个zip文件存在,则调用movie()函数,这里面会解压zip包,然后在一个while循环里显示,也就是看到的动画效果。

bootanimation退出

开机动画显示都是在一个死循环里,当系统启动完成之后,必须要退出bootanimation, 然后显示launcher桌面。

当Android系统启动完成发送boot_complete广播的同时,会调用SurfaceFlinger.cpp的bootFinished()函数。在bootanimation进程的android()或者movie()里都会循环调用checkExit()函数检测“service.bootanim.exit”的值;

当”service.bootanim.exit”的值为1时,调用requestExit()便会通知线程需要结束,也就退出了动画播放。Android系统开机动画就结束了。

03

开机动画的制作


创建 bootanimation.zip 文件,该压缩包文件里存放有逐帧动画和控制脚本,通过连续切换显示图片达到动画的效果。

bootanimation.zip压缩包文件结构:

desc.txt 动画属性描述文件

part0 第一阶段动画图片目录

part1 第二阶段动画图片目录

制作方法:

(1)将第一部分图片按播放顺序命名好,保存在part0的文件夹中,

例如:001.jpg、002.jpg。实测图片格式为png或bmp也可。

(2)将第二部分图片按播放顺序命名好,保存在part1的文件夹中,

例如:001.jpg、002.jpg

(3) desc.txt 的文档:

800 1280 12p 1 0 part0p 0 10 part1


第一行:图片属性800(宽度) 1280(高度) 12(每秒显示帧数) 无

第二行:第一阶段动画属性 p(默认标志符) 1(循环次数为1) 0(进入该阶段的间隔时间 part0(该阶段图片的存放目录)

第三行:第二阶段动画属性 p(默认标志符) 0(无限循环)10(进入该阶段的间隔时间)part1(该阶段图片的存放目录)

每秒显示帧数:每秒显示的图片数量。

间隔时间:该阶段结束后间隔多久进入下一阶段显示,单位为每张图片的显示时间。

如果并没有两个阶段的动画,可以只有一个文件夹。并且在desc.txt只描述一个。如本例:

Part目录就三张滚动的图片。

desc.txt内容

800 1280 1p 0 0 part


1秒刷新一张且无限循环。

(4) 选中part0、part1和desc.txt进入自定义压缩,压缩文件格式为 zip,压缩方式为存储,命名为bootanimation.zip。注意选择文件时为多选,而不是选择desc.txt上一级的目录。

(5) push验证。将生成的bootanimation.zip push到/system/media/目录下,重启验证。


(6) 将压缩包拷贝到 device/*/$(TARGET_DEVICE) 目录下。

例如:RK3399 的目录在

device/rockchip/rk3399/bootanimation.zip


(7) 修改 

device/*/$(TARGET_DEVICE)/$(TARGET_DEVICE).mk 文件。

例如:

RK3399 是 device/rockchip/rk3399/rk3399.mk中添加。

PRODUCT_COPY_FILES += device/rockchip/rk33399/bootanimation.zip:system/media/bootanimation.zip

表示将zip拷贝到system/media/目录内。


(8) 编译system.img,烧录即可。

/ The End /

推荐阅读


安卓系统定制开机logo图片


新增LED设备--从上层到底层理解安卓架构之Service篇


本文由【嵌入式案例Show】原创出品,未经许可,请勿转载

扫码关注我们

看更多嵌入式案例


喜欢本篇内容请给我们点赞、在看

免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

与安卓系统相比,鸿蒙系统具有卓越的性能,不仅可以应对各种各样的设备,而且在多设备播放和物联网方面也有很强的优势。

关键字: 鸿蒙系统 智慧时代 安卓系统

在当前的电子设备市场中,Type-C接口和安卓系统是两个广为人知的概念。然而,尽管这两者经常一同出现在许多移动设备中,它们却有着截然不同的功能和定位。Type-C是一种物理接口标准,而安卓则是一种操作系统。接下来,我们将...

关键字: 电子设备 Type-C 安卓系统

在智能手机市场上,操作系统的选择对于用户体验和设备性能至关重要。目前,市场上主流的操作系统主要有安卓系统和鸿蒙系统。那么,这两个系统究竟哪个更好呢?本文将从以下几个方面对鸿蒙系统和安卓系统进行详细的比较。

关键字: 鸿蒙系统 安卓系统 嵌入式系统

华为鸿蒙系统自发布以来,一直备受关注。许多华为用户纷纷询问,自己的安卓系统是否可以升级到鸿蒙系统。本文将就这一问题进行探讨,以帮助用户了解相关情况。

关键字: 鸿蒙 安卓系统 华为

鸿蒙系统(HUAWEI Harmony OS)是华为公司在2019年8月9日于东莞举行的华为开发者大会(HDC.2019)上正式发布的操作系统。它是一款全新的面向全场景的分布式操作系统,创造了一个超级虚拟终端互联的世界,...

关键字: 鸿蒙系统 安卓系统

安卓(Android)是一种基于Linux内核(不包含GNU组件)的自由及开放源代码的操作系统。主要使用于移动设备,如智能手机和平板电脑,由美国Google公司和开放手机联盟领导及开发。

关键字: 安卓系统 智能手机 平板电脑

1月14日消息,EFF(电子前沿基金会)发现,谷歌已经在安卓系统中添加了禁用2G网络的功能,该基金会称这一举动是保护隐私方面的胜利。

关键字: 安卓系统 2G

鸿蒙系统在国内的热度很高,很多国人也希望马上用上鸿蒙系统,这毕竟是中国自己自主研发的系统,从鸿蒙发布十多天来,用户反馈大部分比较好,不过作为一个新面世的系统,自然也存在着问题。

关键字: 鸿蒙系统 安卓系统 操作系统

我们知道电脑上有32位和64位的操作系统,目前的电脑几乎都是64位结构的了。其实在手机上我们可以看到这一架构的存在,就简单来说,目前很多APP都是以32位架构运行,但是这种现象即将发生根本性的转变,因为全面普及64位架构...

关键字: 32 安卓 安卓系统

  谷歌领导着安卓“开放手机联盟”(Open Handset Alliance,OHA),联盟成员开发的设备,谷歌将授权其使用谷歌的服务。你口袋里的手机可能是一部安卓(A

关键字: 安卓系统 谷歌
关闭
关闭