以下介绍一些相关的点。

这里的开机动画指的是以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);

}

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怎么开机画面,android开机动画bootanimation 分析相关推荐

  1. 图说Android开机画面和开机动画

    转载请注明出处 电脑报( http://www.icpcw.com )        2009年第42期C版 责任编辑:   郭昱     作者 屈志伟 诺基亚.微软.苹果大战智能手机平台,巨头Goo ...

  2. android系统开机画面_Android开机画面

    android系统开机画面 Android Splash Screen is the first screen visible to the user when the application's l ...

  3. android开机动画bootanimation 分析

    转载地址:http://blog.csdn.net/myvest/article/details/50856199 android开机动画详细分析可以参见http://blog.csdn.net/lu ...

  4. 安卓linux开机画面,Android系统的开机画面显示过程分析(1)

    好几个月都没有更新过博客了,从今天开始,老罗将尝试对Android系统的UI实现作一个系统的分析,也算是落实之前所作出的承诺.提到Android系统的UI,我们最先接触到的便是系统在启动过程中所出现的 ...

  5. android os开机画面,Android简单实现启动画面的方法

    本文实例讲述了Android简单实现启动画面的方法.分享给大家供大家参考,具体如下: 核心代码: package com.demo.app; import android.app.Activity; ...

  6. android绘制黑色画面,Android音视频技术入门之绘制一张图片

    Android 的音视频入门学习,首先了解一下绘制图片.在 Android 平台绘制一张图片,使用至少 3 种不同的 API,ImageView,SurfaceView,自定义 View作绘制图片.下 ...

  7. android开发启动画面,Android开发笔记——如何正确实现App启动页

    启动页在当前的Android APP中有着广泛的使用,在Material Design规范出来之前,Android官方是不推荐使用启动页的,理由是让用户在启动APP后干等是一种浪费时间的行为.Mate ...

  8. 手机android怎么开机画面,安卓开机动画特效软件下载

    欢迎来到Android上最好的开机动画经理.这个程序包含了比任何其他的应用程序更多的功能和开机动画!请检查ROM的工具箱Pro来得到这个程序加得多. 此应用程序需要的busybox和root访问权限. ...

  9. 红米手机android无法开机画面,Android自动化之遇到的坑——解决View Hierarchy不能启动...

    Android自动化之遇到的坑--解决View Hierarchy不能启动 走心原创第11期 解决View Hierarchy不能启动? ▲▲▲ 求助:红米为什么不能debug? 背景: 我装的是移动 ...

  10. android n 更新画面,Android N的无缝更新是什么?

    原标题:Android N的"无缝更新"是什么? [天极网手机频道]谷歌在I/O开发者大会主题演讲中谈到了AndroidN的许多新特性,这里我们来特别聊聊谷歌提到的"无缝 ...

最新文章

  1. The expression cannot be a selector(occur after a dot)下面是 what went wrong: Execution failed for task
  2. 培训沙龙准备事项-看板记录
  3. 开启ubuntu的SSH服务,使用终端远程控制
  4. python 爬网页 发布wordpress 包含图片_使用python批量插入wordpress-从理清表结构开始...
  5. c#分页_使用Kotlin搭配Springboot开发RESTFul接口(二)自定义配置、跨域、分页
  6. 测试用例,怎么写 ?
  7. jquery全国省市县三级联动
  8. python for ArcGIS 绘制深圳市板块地图
  9. 2分钟完美激活Windows7旗舰版
  10. 二维码设备巡检解决方案
  11. win10开始菜单卡住没反应,其他都没问题 看视频也没问题。
  12. js中的四种常用数组排序方法(冒泡、选择、插入、快排)及sort排序
  13. 了解交换机、路由器、网关的概念以及它们各自属于什么层次?
  14. hive中order by、distribute by、sort by和cluster by的区别和联系
  15. 如何在Mac上使用“剪切和粘贴”
  16. etal斜体吗 参考文献_参考文献方面毕业论文格式模板,与文下载****北京化工大学学报相关论文下载...
  17. 2、AD18如何修改原理图纸张大小?
  18. 2016全球大数据战略版图剖析(6):应用篇下
  19. 【牛客网】树根与星际密码
  20. [LOJ3054] 「HNOI2019」鱼

热门文章

  1. 一个黑客都要学习什么语言
  2. 博客园博客下载工具,可以主动搜索某人的blog,并以MHTML格式保存到本地文件夹脱机浏览。...
  3. 二叉树的四种遍历算法
  4. STM32_HAL新建工程
  5. 人工智能算法:遗传算法
  6. 从官方例程深度学习海思SDK及API(2)
  7. 背包九讲(超详细 :算法分析 + 问题分析 + 代码分析)
  8. fortran语言能用matlab,fortran语言与matlab
  9. jquery queue ajax,插件 jQuery ajaxQueue 中文API文档
  10. 人脸识别考勤机软件驱动安装和设置