【VR9项目】开机动画以及开机Logo修改

一、 开机Logo修改方法:


Logo使用的BMP文件目录:/work/VR9/Source/lichee/tools/pack/chips/sun50iw3p1/configs/y2/bootlogo.bmp

替换此BMP文件即可。


二、开机动画修改


目录为: android/device/softwinner/neptune-y2/media/bootanimation.zip

解压此文件后可以看到为两个png图片,分别为左眼右眼的图片。

还有一个desc.txt内容如下:

280 280 15
p 1 0 part0
p 0 0 part1


开机动画模块的源码位于:android/frameworks/base/cmds/bootanimation

目前实现开机动画的方式主要为逐帧动画和OPENGL动画

Android.mk       Android编译定义

Bootanimation_main.cpp  入口文件

Bootanimation.cpp             开机动画类的定义和实现

Bootanimation.h                 开机动画类声明


内核

1: init.rc脚本中,bootanim是disable的

2:启动界面依赖于安卓系统的surface管理服务,显示必须初始化完成

3: surfaceflinger服务完成后,才能显示开机界面,OPENGL ES

4: system_server启动系统HomeUI的时候 关闭bootanim





启动框架图



Zygote创建Java层的服务和应用。




首先分析Bootanimation_main.cpp,其中只有一个main函数。

main函数的作用为:

启动prcocess线程池,创建bootanimation对象,将此对象加入到线程池中。


分析代码:

 property_get("debug.sf.nobootanimation", value, "0");  获取service.bootanim.exit的值,

即判断是否继续执行开机动画显示还是退出开机动画显示,当系统HomeUI启动以后,该值会被置1.

开机动画执行过程中会一直检查此值。

这个函数首先检查系统属性“debug.sf.nobootnimaition”的值是否不等于0。如果不等于的话,那么接下来就会启动一个Binder线程池,
并且创建一个BootAnimation对象。这个BootAnimation对象就是用来显示第三个开机画面的。由于BootAnimation对象在显示第三个
开机画面的过程中,需要与SurfaceFlinger服务通信,因此,应用程序bootanimation就需要启动一个Binder线程池。
BootAnimation类间接地继承了RefBase类,并且重写了RefBase类的成员函数onFirstRef,因此,当一个BootAnimation对象第一次被
智能指针引用的时,这个BootAnimation对象的成员函数onFirstRef就会被调用。


BootAnimation





http://www.maiziedu.com/course/485-6301/





//待补充

猜你喜欢

转载自blog.csdn.net/musicalspace/article/details/78720365