Android开机动画bootanimation

Android开机动画bootanimationandroid开机动画详细分析可以参见http://blog.csdn.net/luoshengyang/article/details/7691321引用老罗的文章,写的太好了。以下介绍一些相关的点。这里的开机动画指的是以bootanimation.zip方式存在,不包括BootVideo这种方式。1、开机动画路径:bootanimation.zip路径有两个:a、”/data/lo

大家好,又见面了,我是你们的朋友全栈君。

android开机动画详细分析可以参见http://blog.csdn.net/luoshengyang/article/details/7691321
引用老罗的文章,写的太好了。

以下介绍一些相关的点。
这里的开机动画指的是以bootanimation.zip方式存在,不包括BootVideo这种方式。

1、开机动画路径:

bootanimation.zip路径有两个: a、”/data/local/bootanimation.zip”
b、”/system/media/bootanimation.zip”
标准流程会以a路径优先,也就是/data分区下的那个,没有的话才是会加载、/system分区下的动画。也就是可以再/data下就更新开机动画,恢复出厂会回到原本的/system下的动画。

2、bootanimation.zip内容:

这里写图片描述
“desc.txt”:用来描述用户自定义的开机动画是如何显示的。
desc.txt的内容格式如下面的例子所示:

1280 720 1
p 1 1 part0
p 0 1 part1

第一行的三个数字分别表示开机动画在屏幕中的显示宽度、高度以及帧速(fps)。剩余的每一行都用来描述一个动画片断,这些行必须要以字符“p”来开头,后面紧跟着两个数字以及一个文件目录路径名称。

第一个数字表示一个片断的循环显示次数,如果它的值等于0,那么就表示无限循环地显示该动画片断。

第二个数字表示每一个片断在两次循环显示之间的时间间隔。这个时间间隔是以一个帧的时间为单位的。

文件目录下面保存的是一系列png文件,这些png文件会被依次显示在屏幕中。

3、动画的Start和stop控制:

动画的开始与结束是由属性值控制的,由/system/bin/surfaceflinger来控制,然后相关的动画处理程序为/system/bin/bootanimation,在init.rc中指定。

a、bootanimation 需要由property_set(“ctl.start”, “bootanim”);来启动,由property_set(“ctl.stop”, “bootanim”);来关掉进程。

b、“service.bootanim.exit”:这个属性在bootanimation进程里会周期检查,=1时就退出动画,这里=0表示要播放动画。

启动和关闭的地方在frameworks/native/services/surfaceflinger/SurfaceFlinger.cpp中调用:
这里写图片描述
c、property_get(“debug.sf.nobootanimation”, value, “0”);该字段如果=1,则不会显示动画。

d、有时希望能等待开机动画全部帧播放完才进入Launcher,可以去修改frameworks\base\cmds\bootanimation.cpp中bool BootAnimation::movie()函数下的这个部分,将part.playUntilComplete设置为1即可。

 else if (sscanf(l, " %c %d %d %s", &pathType, &count, &pause, path) == 4) {
            //LOGD("> type=%c, count=%d, pause=%d, path=%s", pathType, count, pause, path);
            Animation::Part part;			
            //part.playUntilComplete = pathType == 'c';//edify by wusc to wait for bootanimation complete
            part.playUntilComplete = 1;//edify by wusc to wait for bootanimation complete
            part.count = count;
            part.pause = pause;
            part.path = path;
            animation.parts.add(part);
        }

另外还可以将“desc.txt”中的p改为c,然后重新打包即可。从上面的代码也可以看出 //part.playUntilComplete = pathType == 'c';

e、到bool BootAnimation::movie()函数,动画是在播放了,而且还在循环检测是否退出,即checkExit()。checkExit()函数中检测到”service.bootanim.exit”属性变为1了,会调用requestExit();请求退出。

f、另外一个需要注意的地方:在bool BootAnimation::movie()函数下,每当显示完成一个png图片之后,都要将变量frameDuration的值从纳秒转换为毫秒,然后调用usleep函数,以保证每一个png图片,即每一帧动画都按照预先指定好的速度来显示。

注意,函数usleep指定的睡眠时间只能精确到毫秒,因此,如果预先指定的帧显示时间小于1毫秒,那么BootAnimation类的成员函数movie是无法精确地控制地每一帧的显示时间的。

4、重新打包制作开机动画的方法

其实这个没什么好说的,就是普通的打包成zip,主要是要选成存储方式。
这里写图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/146321.html原文链接:https://javaforall.net

(0)
上一篇 2022年5月14日 上午6:20
下一篇 2022年5月14日 上午6:20


相关推荐

  • Android逆向系列(一):初探Android逆向

    Android逆向系列(一):初探Android逆向这段时间因为某些业务驱动 开始研究一些逆向相关的东西 浏览了下其所包含的大致内容 发现真是一个新大陆 跟之前耳听目染过的一些门面介绍完全不是一个层级的 真正的印证了下手难这一说法 谨此以本文开始记录我的 Android 逆向之旅吧 总述习惯于应用层开发的我们都知道 在应用上架的时候都需要程序经过编译 签名 生成一个后缀为 apk 的文件才能发布到应用市场 而我认识的逆向就从这个 ap

    2026年3月19日
    3
  • 提交混元生图任务

    提交混元生图任务

    2026年3月12日
    1
  • python2.7安装matplotlib_Matplotlib安装

    python2.7安装matplotlib_Matplotlib安装Matplotlib安装教程有很多不同的方法来安装matplotlib,最好的方法取决于你正在使用什么操作系统,你已经安装了什么,以及如何使用它。为了避免在此页面上浏览所有细节(和潜在的并发症),有几个方便的选择。安装预建的软件包大多数平台:科学的Python发行第一个选择是使用已经提供matplotlib内置的预包装的python发行版之一。Continuum.ioPython发行版(Anac…

    2022年6月29日
    28
  • php libpng 不兼容,Python matplotlib和libpng不兼容issu

    php libpng 不兼容,Python matplotlib和libpng不兼容issu我真的受这个问题困扰了这么久 最初 在用 matplotlib 绘制一些东西之后 我可以轻松地保存图像 但是 在安装了 scipy 之后 我再也无法保存我的图像了 我使用 pip 安装了 matplot 和 scipy 我试图查找一些信息 但还是无法解决问题 我的操作系统是 MacOSXLion 10 7 我认为以下链接是一些相关的问题似乎如果我可以重新链接库或设置 DYLD LIBRARY PATH 实际上

    2025年6月15日
    7
  • 阿里版“OpenClaw 龙虾”应用内测,“无影 JVS”更名为“JVS Claw”

    阿里版“OpenClaw 龙虾”应用内测,“无影 JVS”更名为“JVS Claw”

    2026年3月13日
    2
  • 数据分析法、数据分析方法论总结

    数据分析法、数据分析方法论总结数据分析方法论1、5W2H分析法2、PEST分析法3、逻辑树分析法4、4P营销理论5、用户使用行为理论数据分析法数据分析方法论主要用来指导数据分析师进行一次完整的数据分析,它更多的是指数据分析思路,比如从哪几方面开展数据分析,各方面包含什么内容和指标。 数据分析方法论主要从宏观角度指导如何进行数据分析,它就像一个数据分析前期的规划,指导着后期数据分析工作的开展。 数据分析法则是指具体的分析方法,如常见的对比分析、交叉分析、相关分析、回归分析、聚类分析等数据分析法。数据分析法.

    2022年5月9日
    48

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号