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

frameworks/base/cmds/bootanimation/BootAnimation.cpp

首先看一下定义的常量:


BootAnimation::readyToRun()

进入一个if判断语句

如何修改开机动画的两种方式剖析_第1张图片" src="https://img.it610.com/image/product/54835a84e8ed4cbd85a35bc1cc38d816.png" width="632" height="169" style="border:1px solid black;">

BootAnimation::threadLoop()

如何修改开机动画的两种方式剖析_第2张图片" src="https://img.it610.com/image/product/bf8acab51396418d8efa941dfc395a5c.png" width="650" height="286" style="border:1px solid black;">

==> 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合成的)。

如何修改开机动画的两种方式剖析_第3张图片" src="https://img.it610.com/image/product/8147ca5c5f08487fb6f56d7a543257eb.png" width="650" height="106" style="border:1px solid black;">


方法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。如下图:
如何修改开机动画的两种方式剖析_第4张图片" style="border: none; max-width: 100%;;border:1px solid black;" width="650" src="https://img.it610.com/image/product/58559d6172474c8794ec2645acc253d4.jpg" height="462">

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,压缩方式选择:存储,然后点击确定即可。

如何修改开机动画的两种方式剖析_第5张图片" style="border: none; max-width: 100%; font-family: Arial; font-size: 14px; line-height: 26px;;border:1px solid black;" src="https://img.it610.com/image/product/9b155de2b4804cf8b02251606e150552.jpg" width="409" height="361">



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



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

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

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

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


更多相关文章

  1. Android图片内存优化的几点心得
  2. Android(安卓)实现头像上传功能
  3. Android(安卓)Animation (动画设计)
  4. Android滑动手势侦测方法
  5. android中anim动画效果
  6. animation1
  7. react-native-image-picker图片上传
  8. Android(安卓)Retrofit 2.0框架上传图片解决方案(一张与多张的处
  9. Android中ImageButton自定义按钮的按下效果的代码实现方法,附网上

随机推荐

  1. Android(安卓)VelocityTracker简介
  2. JobService的使用介绍
  3. Android(安卓)UI高级控件之SimpleAdapter
  4. 利用busybox制作android下的ramdisk启动
  5. 自定义TextView实现跑马灯
  6. android学习日记之intent与IPC
  7. TinyTask: 一个Android异步任务处理库
  8. Android----单元测试 (1)
  9. [HTML5]android远程调试工具chrome
  10. Android学习笔记,Notification通知事件