android5.1开机动画分析


      android系统启动过程中有几个图片及动画过程,这里主要分析最后andriod的动画

1 linux启动小企鹅涉及的目录为android_source/kernel/drivers/video/logo下面有很多相关的图标,涉及到的文件就是 logo.c

2 当android系统从Linux内核启动后,会初始化anddroid平台,屏幕上将会出现”A N D R I O D”文字字样画面

   我这边没有出现,涉及到的文件为android_source/system/core/init/init.c,这里不展开说

3 android开机动画

   涉及到的文件为:android_source/frameworks/base/cmds/bootanimation/BootAnimation.cpp

#define OEM_BOOTANIMATION_FILE "/oem/media/bootanimation.zip"
#define SYSTEM_BOOTANIMATION_FILE "/system/media/bootanimation.zip"
#define SYSTEM_ENCRYPTED_BOOTANIMATION_FILE "/system/media/bootanimation-encrypted.zip"
#define EXIT_PROP_NAME "service.bootanim.exit"
#define FIXED_ONE 1

#define USER_BOOTANIMATION_FILE "/data/local/bootanimation.zip"

#define USER_SHUTDOWN_ANIMATION_FILE "/data/local/shutdownanimation.zip"
#define SYSTEM_SHUTDOWN_ANIMATION_FILE "/system/media/shutdownanimation.zip"

 bool BootAnimation::threadLoop()
{
    bool r;
    // We have no bootanimation file, so we use the stock android logo
    // animation.
    if (mZip == NULL) {
        r = android();
    } else {
        r = movie();
    }

    eglMakeCurrent(mDisplay, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT);
    eglDestroyContext(mDisplay, mContext);
    eglDestroySurface(mDisplay, mSurface);
    mFlingerSurface.clear();
    mFlingerSurfaceControl.clear();
    eglTerminate(mDisplay);
    IPCThreadState::self()->stopProcess();
    return r;
}


主要意思就是:如果在相关目录,比如/system/media ,/data/local 找不到bootanimation.zip,则会去加载frameworks/base/core/res/assets/images下的两张图片

 前景图片android-logo-mask.png和背景图片android-logo-shine.png,开机动画会显示一个"android"动画

如果在相关目录找到了bootanimation.zip,如果/system/media和/data/local都存在,则优先加载/data/local,那么会去显示bootanimation.zip定义的动画效果

文件名为bootanimation.zip 一定是这个不能修改,里面包含part1 part2文件夹 和desc.txtpart 文件夹里面放的是动画拆分的图片,格式为png desc.txt里面是播放的设置。
格式是这样的

480 800 15
p 1 0 part0
p 0 0 part1
480 800
是指显示的分辨率 宽 高
15
是一秒的帧数
p
后面的数字是指播放次数 0为循环,N为播放N
后面那位数字 一般为0(空指令), 表示播放一遍后稍作停顿的时间
part0
part1 为文件夹名
一般我们只使用part0目录

 bootanimation.zip文件的制作方法如下:
 1)先制作desc.txt、part0和part1三个文件,如下:
 2)把desc.txt、part0和part1三个文件制作为自拍格式的压缩文件,如下:
    其中图示标出的1、2和3和地方必须如图所示。在点击确定之后就会生成一个bootanimation.zip文件,即时Android系统播放的logo文件。直接替换掉系统data/local/下的bootanimation.zip即可

可以只制作part0,本人就是只做了part0,注意的是必须是zip压缩格式,并且压缩方式选择存储

你可能感兴趣的:(Android)