转载地址:http://blog.csdn.net/myvest/article/details/50856199

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 completepart.playUntilComplete = 1;//edify by wusc to wait for bootanimation completepart.count = count;part.pause = pause;part.path = path;animation.parts.add(part);}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

另外还可以将“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,主要是要选成存储方式。

android开机动画bootanimation 分析相关推荐

  1. Android开机动画bootanimation

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

  2. Android 开机动画(bootanimation)启动

    Android 开机动画(bootanimation)启动 Android 开机动画启动 前言 一.简单的对话 二.过程 总结 前言 开机动画应该算是我接触的第一个AOSP的Native程序,网上讲解 ...

  3. android开机动画和图片在那个目录下,Android开机动画bootanimation.zip是怎么制作和使用的?...

    很多玩安卓手机的朋友都喜欢对自己的手机进行个性化的美化,下下主题,换换开机动画什么的,可是网上下载的开机动画千篇一律没有什么个性,是不是很想自己制作一个属于你的独一无二的开机动画呢? 制作安卓开通动画 ...

  4. android+p开机动画,Android开机动画bootanimation.zip文件制作以及注意事项

    PS:红色字体需要特别注意 刚刚将原生Android系统开机logo和开机动画做了调整,为此耗费了接近半天的时间,碰到了很多问题,幸好最终达成了目的. 一,首先说一下bootanimation.zip ...

  5. 制作Android开机动画 bootanimation.zip

    准备工作 新建文件夹 part01 和 part02 新建文本文档 desc.txt 内容添加 part01一般放开机动画的第一张图片,目录只放一张图片 part02 放循环的图片,多张图片形成视频的 ...

  6. windows,ubuntu,代码三种方式制作Android开机动画 bootanimation.zip

    一.bootanimation.zip结构 bootanimation.zip解压的目录结构,我的例子使用5张账片,总之是由(part文件夹+desc.txt) part文件夹里面存放图片,如下 de ...

  7. [Android 13]开机动画原理分析

    Android开机动画 hongxi.zhu 2023-6-12 Lineageos_20(Android T) on Pixel 2XL 目录 Android开机动画 一. 开机动画的启动 1.1 ...

  8. android开机动画 制作工具,开机动画包制作(bootanimation)

    本帖最后由 往事如风 于 2017-3-9 09:18 编辑 从买了一加1手机以后就是各种折腾,如今不知不觉已经过了三年了.由于我自己比较爱折腾各种软件,PS, AI, AE,C4D等设计类软件,所以 ...

  9. android logo:内核、android开机动画

    android logo:内核.android开机动画 关键词:android 开机logo  开机动画 initlogo.rle   bootanimation  desc.txt 平台信息: 内核 ...

最新文章

  1. 《深度学习》课程视频(含30份资料)
  2. loadrunner linux 端口,Linux下loadrunner generator的安装
  3. SSH Backgroup工具汇总
  4. 如何挖掘大数据的价值
  5. 某大型电商云平台实践
  6. 计算机无法安装蓝牙驱动,windows10系统安装蓝牙驱动图文教程|windows10系统如何安装蓝牙驱动...
  7. computeshader实现全局光照
  8. 匹配滤波器的仿真——原理说明与仿真
  9. 【美女送福利了win7主题】
  10. iperf3网络测速
  11. 智能人体感应灯,微波雷达存在感应,智能照明技术方案
  12. linux查看本机IP掩码,linux下 取得本机ip、掩码、网关
  13. Android 之自定义表情
  14. java : mozilla rhino js引擎 使用教程
  15. 因为很穷,所以一直很努力
  16. 三菱运动控制电子凸轮应用 三菱Q173系列的电子凸轮使用,包括凸轮参数设置
  17. 解决关闭浏览器后再打开,访问网站仍然自动登陆的问题
  18. 深入计算机组成原理(二十)面向流水线的指令设计(上):一心多用的现代CPU
  19. linux文件中的换行符,Linux中的换行符
  20. pythonif多个条件同时满足_Python if有多个条件怎么办

热门文章

  1. 教你如何快速突破TikTok限流--TK领航社tiktok苹果版安卓版下载教程
  2. Amazon亚马逊开发者账号申请
  3. Python实用技巧:global关键字的用法详解
  4. 【CEC2017】CEC2017优化算法目标测试函数综述以及CEC2017的matlab实现
  5. 群签名和环签名的区别_环签名,聚合签名
  6. ASCII码与字符移动
  7. java导入xmind的坑及解决方案
  8. 及时输出_玉露窜出花箭及时掐掉,减少养分输出,叶子不干瘪长得更好
  9. 可拖拽排序的GridView(高仿今日头条编辑频道效果)
  10. 互联网日报 | QQ正式上线QID功能;高通骁龙888处理器正式发布;嫦娥五号成功落月...