android怎么开机画面,android开机动画bootanimation 分析
以下介绍一些相关的点。
这里的开机动画指的是以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 分析相关推荐
- 图说Android开机画面和开机动画
转载请注明出处 电脑报( http://www.icpcw.com ) 2009年第42期C版 责任编辑: 郭昱 作者 屈志伟 诺基亚.微软.苹果大战智能手机平台,巨头Goo ...
- android系统开机画面_Android开机画面
android系统开机画面 Android Splash Screen is the first screen visible to the user when the application's l ...
- android开机动画bootanimation 分析
转载地址:http://blog.csdn.net/myvest/article/details/50856199 android开机动画详细分析可以参见http://blog.csdn.net/lu ...
- 安卓linux开机画面,Android系统的开机画面显示过程分析(1)
好几个月都没有更新过博客了,从今天开始,老罗将尝试对Android系统的UI实现作一个系统的分析,也算是落实之前所作出的承诺.提到Android系统的UI,我们最先接触到的便是系统在启动过程中所出现的 ...
- android os开机画面,Android简单实现启动画面的方法
本文实例讲述了Android简单实现启动画面的方法.分享给大家供大家参考,具体如下: 核心代码: package com.demo.app; import android.app.Activity; ...
- android绘制黑色画面,Android音视频技术入门之绘制一张图片
Android 的音视频入门学习,首先了解一下绘制图片.在 Android 平台绘制一张图片,使用至少 3 种不同的 API,ImageView,SurfaceView,自定义 View作绘制图片.下 ...
- android开发启动画面,Android开发笔记——如何正确实现App启动页
启动页在当前的Android APP中有着广泛的使用,在Material Design规范出来之前,Android官方是不推荐使用启动页的,理由是让用户在启动APP后干等是一种浪费时间的行为.Mate ...
- 手机android怎么开机画面,安卓开机动画特效软件下载
欢迎来到Android上最好的开机动画经理.这个程序包含了比任何其他的应用程序更多的功能和开机动画!请检查ROM的工具箱Pro来得到这个程序加得多. 此应用程序需要的busybox和root访问权限. ...
- 红米手机android无法开机画面,Android自动化之遇到的坑——解决View Hierarchy不能启动...
Android自动化之遇到的坑--解决View Hierarchy不能启动 走心原创第11期 解决View Hierarchy不能启动? ▲▲▲ 求助:红米为什么不能debug? 背景: 我装的是移动 ...
- android n 更新画面,Android N的无缝更新是什么?
原标题:Android N的"无缝更新"是什么? [天极网手机频道]谷歌在I/O开发者大会主题演讲中谈到了AndroidN的许多新特性,这里我们来特别聊聊谷歌提到的"无缝 ...
最新文章
- The expression cannot be a selector(occur after a dot)下面是 what went wrong: Execution failed for task
- 培训沙龙准备事项-看板记录
- 开启ubuntu的SSH服务,使用终端远程控制
- python 爬网页 发布wordpress 包含图片_使用python批量插入wordpress-从理清表结构开始...
- c#分页_使用Kotlin搭配Springboot开发RESTFul接口(二)自定义配置、跨域、分页
- 测试用例,怎么写 ?
- jquery全国省市县三级联动
- python for ArcGIS 绘制深圳市板块地图
- 2分钟完美激活Windows7旗舰版
- 二维码设备巡检解决方案
- win10开始菜单卡住没反应,其他都没问题 看视频也没问题。
- js中的四种常用数组排序方法(冒泡、选择、插入、快排)及sort排序
- 了解交换机、路由器、网关的概念以及它们各自属于什么层次?
- hive中order by、distribute by、sort by和cluster by的区别和联系
- 如何在Mac上使用“剪切和粘贴”
- etal斜体吗 参考文献_参考文献方面毕业论文格式模板,与文下载****北京化工大学学报相关论文下载...
- 2、AD18如何修改原理图纸张大小?
- 2016全球大数据战略版图剖析(6):应用篇下
- 【牛客网】树根与星际密码
- [LOJ3054] 「HNOI2019」鱼
热门文章
- 一个黑客都要学习什么语言
- 博客园博客下载工具,可以主动搜索某人的blog,并以MHTML格式保存到本地文件夹脱机浏览。...
- 二叉树的四种遍历算法
- STM32_HAL新建工程
- 人工智能算法:遗传算法
- 从官方例程深度学习海思SDK及API(2)
- 背包九讲(超详细 :算法分析 + 问题分析 + 代码分析)
- fortran语言能用matlab,fortran语言与matlab
- jquery queue ajax,插件 jQuery ajaxQueue 中文API文档
- 人脸识别考勤机软件驱动安装和设置