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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 2021-11-13 2021年煤矿井下电气考试题库及煤矿井下电气考试资料

    2021-11-13 2021年煤矿井下电气考试题库及煤矿井下电气考试资料题库来源:安全生产模拟考试一点通公众号小程序安全生产模拟考试一点通:煤矿井下电气考试题库是安全生产模拟考试一点通总题库中生成的一套煤矿井下电气考试资料,安全生产模拟考试一点通上煤矿井下电气作业手机同步练习。2021年煤矿井下电气考试题库及煤矿井下电气考试资料1、【多选题】短路电流的大小与()有关。(BCDE)A、电动机的额定功率B、电缆的长度C、电缆的截面D、电网电压E、变压器的容量F、电动机的负荷2、【多选题】漏电保护方式主要有()。(ABC)A、附加直流电源式B

    2022年9月26日
    0
  • 阿里云大数据存储密集型实例d2s云服务器配置性能详解

    阿里云大数据存储密集型实例d2s云服务器配置性能详解阿里云大数据存储密集型实例d2s云服务器配置性能CPU、内存、适用场景、大数据存储密集型d2s实例规格族和优惠报价信息,InstanceTypes分享大数据存储密集型d2s实例详解:大数据存储密集型d2s实例规格族特性I/O优化实例支持ESSD云盘、SSD云盘和高效云盘实例配备大容量、高吞吐SATAHDD本地盘,辅以最大35Gbit/s实例间网络带宽支持在线更换坏盘,支持热插拔坏盘,避免导致实例停机处理器:2.5GHz主频的Intel®Xeon®Platinum8163(Sky.

    2022年5月2日
    55
  • C#异步调用的方法

    最经公司工作需要调用一个外部的webservice,同时要将传出的数据进行保存,以自己以前的习惯,就打算逐步操作,失败啊,完全没考虑过用户体验效果,在同事指点下,意识到使用异步调用的好处,随便将自己找

    2021年12月24日
    37
  • 持久层(数据层,Dao层) MyBatis框架「建议收藏」

    持久层(数据层,Dao层) MyBatis框架「建议收藏」所谓的持久层就是把数据可以永久保持的存储到设备中,不像放到内存中那样断电就消失,一般来说,持久层为直接的理解就是对数据库的各种操作,如CRUD(增加,删除,修改,查询),更新等操作持久层,就是把持久

    2022年7月2日
    39
  • SOA到底是什么

    SOA到底是什么SOA到底是什么 首先,SOA是一种开发思想。是一种松耦合的框架。可以让软件超越开发语言。SOA强调的是一种架构思想,组件化的灵活的开发方式。SOA是一场革命。一个应用程序的业务逻辑(businesslogic)或某些单独的功能被模块化并作为服务呈现给消费者或客户端。这些服务的关键是他们的松耦合特性。例如,服务的接口和实现相独立。应用开发人员或者系统集成者可以通过组合一个或多个服务来…

    2022年6月17日
    27
  • npoi css,NPOI颜色对照表

    npoi css,NPOI颜色对照表颜色对照表:颜色测试Class名称shortTest颜色Black8Test颜色Brown60Test颜色Olive_Green59Test颜色Dark_Green58Test颜色Dark_Teal56Test颜色Dark_Blue18Test颜色Indigo62Test颜色Grey_80_PERCENT63Test颜色Dark_Red16Test颜色O…

    2022年5月13日
    62

发表回复

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

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