首先,我们先来分析一下源码:

frameworks/base/cmds/bootanimation/BootAnimation.cpp

首先看一下定义的常量:

BootAnimation::readyToRun()

进入一个if判断语句

BootAnimation::threadLoop()

==> BootAnimation::Android()会加载"images/android-logo-mask.png"和"images/android-logo-shine.png"

==> BootAnimation::movie()会加载bootanimation.zip中的内容

我们下载的源码里默认是没有那些个.zip动画的,所以总会跳到android字体闪动的画面

所以如果你系那个用.zip的动画那么把你做好的动画拷贝到编译好对应的目录下即可,然后执行make snod整合进img包就可以看到效果了

如果你想修改android闪动的那两张图片的话,最简单的方法是直接替换图片,如果你懂openGL的话也可以自己做酷炫的动画

那两张图片放在./frameworks/base/core/res/assets/images  目录下,一张镂空的android图,一张发光效果,动画效果就是下面那张发光的效果图不断左右移动。

方法1:

直接修改~/mx0831-0525/frameworks/base/core/res/assets/images目录下的图片即可(这个动画是由android-logo-mask.png和android-logo-shine.png合成的)。





方法2:(转载于:http://blog.csdn.net/mlbcday/article/details/7410509)

Android开机动画有两种修改方法,android 2.0及之后,使用bootanimation程序显示开机画面,如需修改开机画面,不用修改代码,只需按格式要求做bootanimation.zip包,放在系统的/system/media目录中,或/data/local目录中即可,两个目录下都存在时,优先使用/data/local下的。android 2.0之前,则需要修改源码。



 开机画面主要是由一个zip格式的压缩包bootanimation.zip组成,压缩包里面包含数张png格式的图片,还有一个desc.txt的文本文档,开机时按desc.txt里面的指令,屏幕上会按文件名称顺序连续的播放一张张的图片,就像播放原始的胶带影片一样,形成动画。

(1)动画图片制作。由于缺少横屏动画的源文件,本例采取的是使用屏幕录像软件录制android模拟器中的横屏开机动画(如屏幕录像专家V2011),然后在媒体播放器中捕获每一帧(如KMPlayer),保存为PNG格式的图片。这两个软件的使用方法比较简单,可参考网上的使用说明。  根据个人喜好,如果替换成别的动画方法也类似,如用flash制作好自己想要的动画,按帧导出,然后按数字顺序给文件编号就可以了。           

图片按照数字编号后统一放在一个文件夹下,本例中为part0。如下图:

android平台默认竖屏扫描图片,所以在这里需要把图片顺时针旋转一次。

(2)动画属性描述文件。desc.txt是一个保存形式为ANSI格式的文件,用于设置这个动画像素(大小),帧数,闪烁次数,文件夹名称等。内容如下:

480 427 30

p 1 0 part0

p 0 0 part1

480 427 30  ---这里的480代表图片的像素(大小)宽度,427代表图片的像素(大小)高度,30代表帧数;

 p 1 0 part0 ---这里的p代表标志符,1代表循环次数为1次,0代表阶段间隔时间为0,part0代表对应的文件夹名,为第一阶段动画图片目录;

 p 0 0 part1---这里的p代表标志符,0代表本阶段无限循环,0代表阶段间隔时间为0,part1代表对应的文件夹名,为第二阶段动画图片目录;

阶段切换间隔时间:单位是一个帧的持续时间,比如帧数是30,那么帧的持续时间就是1秒/30 = 33.3毫秒。阶段切换间隔时间期间开机动画进程进入休眠,把CPU时间让给初始化系统使用。也就是间隔长启动会快,但会影响动画效果。

    part0和part1文件夹内包含的是两个动画的系列图片,图片为PNG格式。系列图片文件的加载刷新按文件名的名称排序。必须注意的是,在属性描述完成后要有换行符(回车跳入下一行),已确保指令都已完成。

(3)图片和desc.txt文档都准备好后,开始打包为bootanimation.zip。选中图片文件夹part0和desc.txt(提醒一下:打包前将图片文件夹中的Thumbs.db删除),然后右键选择WINRAR的"添加到压缩文件"进入自定义压缩文件设置:压缩文件格式选择:ZIP,压缩方式选择:存储,然后点击确定即可。

注意:/system/media是在/out/target/product/TBDG1073/system/media/下

==================================================================================================

  作者:欧阳鹏  欢迎转载,与人分享是进步的源泉!

  转载请保留原文地址:http://blog.csdn.net/ouyang_peng

==================================================================================================

Android系统移植与调试之------->如何修改开机动画的两种方式剖析的更多相关文章

  1. Android系统移植与调试之------->如何修改Android手机显示的4G信号强度的格子数

    在修改显示的信号强度之前,先了解一下什么是dB,什么是dBm? 1.dB dB是一个表征相对值的值,纯粹的比值,只表示两个量的相对大小关系,没有单位,当考虑甲的功率相比于乙功率大或小多少个dB时, 按 ...

  2. Android系统移植与调试之------->如何修改Android自带的apk出现一圈圈类似鸡蛋的花纹

    最近被一个问题烦恼到了,就是android4.1系统自带的Email.文件管理器.信息等apk都出现同一个问题,就是现实在平板上的时候会出现一圈圈类似鸡蛋的花纹. 我想了两种方法来解决,第一种方法没有 ...

  3. Android系统移植与调试之------->如何修改Android系统默认显示【开发者选项】并默认打开【USB调试】和【未知来源】开关

    今天有个用户对[设置]有个特殊的要求,即: 1.开机的时候默认显示[开发者选项]并打开[USB调试]开关    ([Developer options]-->[USB debugging]) 2 ...

  4. Android系统移植与调试之------->如何修改Android设备添加重启、飞行模式、静音模式等功能(二)

    今天要说的是为Android设备添加重启.飞行模式.静音模式按钮,客户需求中需要添加这项功能,在长按电源键弹出的菜单中没有这些选项,谨以此文记录自己添加这个功能的过程. 首先找到长按电源键弹出的对话框 ...

  5. [置顶] Android系统移植与调试之------->如何修改Android设备状态条上音量加减键在横竖屏的时候的切换与显示

    这两天由于一个客户的要求,将MID竖屏时候的状态条上的音量键去掉.所以尝试修改了一下,成功了,分享一下经验. 先看一下修改后的效果图,如下所示 . 横屏的时候:有音量加减键 竖屏的时候:音量加减键被去 ...

  6. Android系统移植与调试之------->如何修改Android手机NFC模块,使黑屏时候能够使用NFC

    我们都知道在不修改源代码的情况下,只能是解锁之后才能使用NFC功能.而在锁屏和黑屏2个状态下是没办法用NFC的,但是最近有个客户要求手机在黑屏状态下能够使用NFC,因此我们需要去修改Android源代 ...

  7. Android系统移植与调试之------->如何修改Android设备状态条上音量加减键在横竖屏切换的时候的显示于隐藏

    这两天由于一个客户的要求,将MID竖屏时候的状态条上的音量键去掉.所以尝试修改了一下,成功了,分享一下经验. 先看一下修改后的效果图,如下所示 . 横屏的时候:有音量加减键 竖屏的时候:音量加减键被去 ...

  8. Android系统移植与调试之------->如何修改Android设备存储盘符名称与Android设备的型号

    一.修改Android设备存储盘符名称 (注:TBDG1073为我的项目名称) 1.修改device/other/TBDG1073/system.prop 文件 2.修改ro.media.patiti ...

  9. Android系统移植与调试之------->如何修改Android默认字体大小和设置里面字体大小比例

    因为我修改 ro.sf.lcd_density的值,将它从160修改 为120,所以导致整个系统的字体都变得很小.因此需要将整个字体变大,并且在设置-->显示-->字体大小的4个选项的值都 ...

随机推荐

  1. UIAlertViewController 2

    iOS 8的新特性之一就是让接口更有适应性.更灵活,因此许多视图控制器的实现方式发生了巨大的变化.全新的UIPresentationController在实现视图控制器间的过渡动画效果和自适应设备尺寸 ...

  2. Mac 上的终端神器 iTerm2

    官方下载地址:http://www.iterm2.com/ 主题下载地址:https://github.com/mbadolato/iTerm2-Color-Schemes 第三方教程推荐:http: ...

  3. js 判断是否为数组

    http://www.jb51.net/article/79939.htm Object.prototype.toString.call([1,2,3,4]) == '[object Array]'

  4. C/C++ 错误笔记-在给结构体中的指针赋值时,要注意该指针是否已指向内存空间

    先来看下面的例子: #include <stdlib.h> #include <string.h> #include <stdio.h> #pragma warni ...

  5. c++ istream(ostream)是如何转换为bool的

    http://www.cplusplus.com/reference/ios/ios/operator_not/ http://stackoverflow.com/questions/8117566/ ...

  6. Vue 组件 非父子组件通信

    有时候两个组件也需要通信(非父子关系),在简单的场景下,可以使用一个空的vue实例作为中央事件总线: var bus = new Vue(); //触发组件a中的事件 bus.$emit('id-se ...

  7. MapReduce源码分析之作业Job状态机解析(一)简介与正常流程浅析

    作业Job状态机维护了MapReduce作业的整个生命周期,即从提交到运行结束的整个过程.Job状态机被封装在JobImpl中,其主要包括14种状态和19种导致状态发生的事件. 作业Job的全部状态维 ...

  8. openWRT自学---初始化过程和主要脚本的分析

    参考文档: http://wiki.openwrt.org/doc/techref/process.boot http://blog.csdn.net/jk110333/article/details ...

  9. void bind(String sName,Object object);――绑定:把名称同对象关联的过程

    void bind(String sName,Object object);――绑定:把名称同对象关联的过程 void rebind(String sName,Object object);――重新绑 ...

  10. Hibernate每个子类一张表(使用XML文件)实例

    在每个子类一张表的情况下,子类映射表与主键和外键关系与父类映射表相关. 类的<joined-subclass>元素用于使用主键和外键关系将子类与父对象进行映射. 在这个例子中,我们将使用h ...