Android开机动画总共有三个过程。第一个开机动画是在Kenel启动时显示的,第二个开机动画是在init进程启动时显示的,这两个都是静态图片。第三个动画是在系统服务启动过程中显示的,他是一个动态图片,也是我们关注比较多的动画。
关于动画的播放,主要涉及frame buffer的知识,可以参考老罗的分析http://blog.csdn.net/luoshengyang/article/details/7691321/,从底层的角度,理清了Android的开机动画播放过程。
现在主要关注与开机动画相关的几个类、文件。
一、Kenel动画
Kenel logo是开机显示的第一个动画,用于显示Android内核正在启动过程中。播放的图片位于 vendor/mediatek/proprietary/bootable/bootloader/lk/dev/logo ,系统读取目录下的文件夹里面的logo图片(fwvga_kernel.bmp)显示到手机上的 。那么问题来了,系统默认读的是哪个文件夹? 如何客制化开机Kenel logo?我一修改这个文件夹不是所有的其他国家的logo都要变?
@1.1 系统默认使用哪个文件夹?
其实系统是有一套机制控制Kenel logo的,这也是客制化开机动画的基础,该目录下,有一个mk文件—rules.mk,他会决定当前系统使用哪一套开机kenel logo。
LOCAL_DIR := $(GET_LOCAL_DIR)
BOOT_LOGO_DIR := $(LOCAL_DIR)
#fix no boot_logo config
#LOCAL_CFLAGS += -DBOOT_LOGO=wvga
ifeq ($(strip $(BOOT_LOGO)),)
BOOT_LOGO = fwvga
endif
ifeq ($(strip $(MTK_LK_CAMERA_SUPPORT)), yes)
BOOT_LOGO = fhd
endif
$(info BOOT_LOGO = $(BOOT_LOGO))
$(info lk/logo/dir=$(LOCAL_DIR),builddir=$(BUILDDIR))
由上段代码可以看出来,在BOOT_LOGO没有赋值的情况下,默认使用fwvga文件夹下的Kenel logo。
@1.2 如何客制化开机Kenel logo?
看到这里,我们可以发现,如果要客制化开机Kenel logo图片,可以在rules.mk里面添加相关判断,以达到目的。以海外版本为例,我需要在发货海外的版本中,客制化kenel logo,就需要
1、在rules.mk中添加一下代码
#added by guohongcheng for kenel logo start
ifeq ($(strip $(KENEL_LOGO_PROC)), yes)
BOOT_LOGO = hd720
Endif
#added by guohongcheng for kenel logo end
这样当系统属性KENEL_LOGO_PROC是yes的时候,BOOT_LOGO会加载hd720下面的图片,
2、在ProjectConfig.mk中设置KENEL_LOGO_PROC值
而KENEL_LOGO_PROC这个属性值是在项目的ProjectConfig.mk设置的,添加一下语句
#added by guohongcheng for kenel logo start
KENEL_LOGO_PROC=yes
#added