开机动画(闪动的ANDROID字样的动画图片)

来源:互联网 发布:淘宝刷单怎么找客户 编辑:程序博客网 时间:2024/03/29 01:54

开机动画(闪动的ANDROID字样的动画图片)

 

Android 的系统登录动画类似于Windows系统的滚动条,是由前景和背景两张PNG图片组成,这两张图片存在于/system/framework /framework-res.apk文件当中。前景图片(android-logo-mask.png)上的Android文字部分镂空,背景图片(android-logo-shine.png)则是简单的纹理。系统登录时,前景图片在最上层显示,程序代码控制背景图片连续滚动,透过前景图片文字镂空部分滚动显示背景纹理,从而实现动画效果。

 

相关代码:

/frameworks/base/libs/surfaceflinger/BootAnimation.h

/frameworks/base/libs/surfaceflinger/BootAnimation.cpp

 

/frameworks/base/core/res/assets/images/android-logo-mask.png

Android默认的前景图片,文字部分镂空,大小256×64

/frameworks/base/core/res/assets/images/android-logo-shine.png

Android默认的背景图片,有动感效果,大小512×64

 

参考文档:

 

图说Android开机画面和开机动画

http://www.shudoo.com/09/1030/15/13418431.html

 

initlogo.rle: display an image on boot

http://forum.xda-developers.com/showthread.php?t=443431

 

分析Android 根文件系统启动过程(init守护进程分析)

http://crazier9527.javaeye.com/blog/454635

 

Android 开机会出现3个画面:

a.  Bootloader启动,出现Android机器人图像;

b.  Android平台启动初始化,出现"A N D R I O D"文字字样画面;

c.  Android平台图形系统启动,出现含闪动的ANDROID字样的动画图片(start)。

 

a. Bootloader显示的Android机器人图像

 

 

b. 开机文字("A N D R I O D")

 

 

Android 系统启动后,读取 /initlogo.rle(一张565 rle压缩的位图),如果读取成功,测在/dev/graphics/fb0显示Logo图片;如果读取失败,则将/dev/tty0设为TEXT模式,并打开/dev/tty0,输出文本“A N D R I O D”字样。

 

相关代码:

 

/system/core/init/init.c

/system/core/init/init.h

/system/core/init/init.rc

/system/core/init/logo.c

 

*.rle文件的制作步骤:

1. 使用GIMP或者Advanced Batch Converter软件,将图象转换为RAW格式;

2. 使用android自带的rgb2565工具,将RAW格式文件转换为RLE格式(如:rgb2565 -rle < initlogo.raw > initlogo.rle)。

 

c. Android平台图形系统启动

 

 

Android的系统登录动画类似于Windows系统的滚动条,是由前景和背景两张PNG图片组成。前景图片(android-logo-mask.png)上的Android文字部分镂空,背景图片(android-logo-shine.png)则是简单的纹理。系统登录时,前景图片在最上层显示,程序代码控制背景图片连续滚动,透过前景图片文字镂空部分滚动显示背景纹理,从而实现动画效果。

 

相关代码:

frameworks/base/cmds/bootanimation/BootAnimation.h

frameworks/base/cmds/bootanimation/BootAnimation.cpp

 

frameworks/base/core/res/assets/images/android-logo-mask.png

Android默认的前景图片,文字部分镂空,大小256×64

frameworks/base/core/res/assets/images/ android-logo-shine.png

Android默认的背景图片,有动感效果,大小512×64

 

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/yahoozhuo/archive/2010/04/28/5538047.aspx

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/swt914/archive/2010/05/04/5556552.aspx

 

 

Android开机动画
准备自己喜欢的开机图片,注意:图片必须为.png 格式,最好小于40Kb
(如果不会做连接的图片组 直接找个适合自己分辨率的动态图片分解出PNG格式的静态图片,
用ImageReady可以批量导出)
建立part1 part2或android文件夹 放进一组连接的图片组
保存下来的png图片记得要按顺序编号命名。
开始写desc.txt 这个文件里面的命令。
desc.txt里面的命令格式如下:
480 800 30
p 1 0 part0
p 0 0 part1
480 800意思是说你开机动画在屏幕先以多少的分辨率显示,注意不要超过480x854的分辨率,
否则你的画面就显示不全了。
30 这个数字是代表着每秒播放的帧数,打个比方,part0文件夹里面共76个图片,
播放时间就是76/30=2.533333秒播放完毕,当然在手机里面会有一定的延时,尤其是你的图片文件
比较大的情况下,手机想播快也快不起来,卡啊
p 1(代表着播放一次) 0(空指令)part0  */这句指令就代表这part0文件夹内的图片只按名称顺序播放一次
p 0(重复播放)0 (空指令)part1 */这一句指令代表着part1文件夹内的图片会循环反复播放
还有一种是指令
p 0 10 part1 这里面的那个10代表着播放完part1文件夹内的图片一遍之后稍作停顿,然后再循环播放一遍,
再停顿少许,再播放,再停顿稍许·········重复下去
p 1 10 part1  同理,这句代表着播放完part1文件夹内的图片之后稍作停顿然后继续执行下一条命令。
图片准备好了,desc.txt里面的命令准备好了,就可以把他们一起打包压缩成zip格式了。
记住,是zip格式,而不是rar格式。另外压缩的时候注意一点,压缩的时候压缩方式要选择存储,否则开机时
手机会不认的。开机的时候会黑着没动画一直到进入桌面为止。
如果压缩完太大,重新解压用JPEG Imager软件处理再压缩zip格式。建议不要大于6M。
压缩文件重命名为bootanimation.zip之后,放在sd卡里面,按照之前的路径替换、重启。

 

一.android 开机动画

1.     介绍

android开机画面由三部分组成,第一部分在bootloader启动时显示,第二部分在启动kernel时显示,第三部分在系统启动时(bootanimation)显示(动画)

2.     bootloader开机图片

1)         一般使用rle格式图片,不同的android系统不同此图片可能放在不同位置,以下实例均以g1为例,g1放在splash分区中

2)         制作rle格式开机图片

a)          将图片转成320x480,256色,保存成不带alpha通道的png格式

b)         使用convert工具将splash.png转换成8位色的splash.raw
convert splash.png -depth 8 rgb:splash.raw
确认splash.raw大小为460800字节

c)          使用android工具rgb2565改变图像格式
out/host/linux-x86/bin/rgb2565 < splash.raw > splash.raw565
确认splash.raw565大小为307200字节

3)         烧写(以g1为例)
按power+camera启动到烧写模式
fastboot flash splash1 splash.raw565

3.     kernel开机图片

1)         相关代码
kernel/drivers/video/msm/msm_fb.c(g1使用高通芯片组msm7201芯片组)
它会读出根目录下的xx.rle,并显示为开机画面,rle做法同上

4.     bootanimation开机动画

1)         android 2.0之前

a)          说明
使用bootanimation程序显示开机画面,如需修改开机画面,需要修改源码

b)         代码
frameworks/base/cmds/bootanimation/*
frameworks/base/core/res/assets/images/android-logo*

2)         android 2.0及之后

a)          说明
使用bootanimation程序显示开机画面,如需修改开机画面,不用修改代码,只需按格式要求做bootanimation.zip包,放在系统的/system/media目录中,或/data/local目录中即可,两个目录下都存在时,优先使用/data/local下的

b)         代码
frameworks/base/cmds/bootanimation/*
frameworks/base/core/res/assets/images*

c)          制作动画包

                                       i.              描述文件desc.txt
480 427 30
p 1 0 part0 
p 0 10 part1 
总体说明:480为宽度,427为高度,30为帧数,即每秒播放动画30帧
部分说明:第一项p为标志符,第二项为循环次数1为只播放1次,0为无限循环,第三项为两次循环之间间隔的帧数,第四项为对应的目录名

                                      ii.              图片
图片放在desc.txt中目录名指定的目录中,目录中按字符顺序播放

                                    iii.              打包

?         windows
使用winrar找包,选择zip格式,压缩标准要选“储存”

?         linux
zip -0 -r ../bootanimation.zip ./*
linux命令使用-0指定压缩等级为最低等级stored,即只归档不压缩,否则可能由于包格式问题引起动画显示为黑屏

?         注意
打包不要带上层目录

5.     参考

1)         bootanimation相关
http://blog.21ic.com/user1/2537/archives/2009/65606.html

2)         rle文件制作
http://hi.baidu.com/kernel_linux/blog/item/9eff140f9d089c206159f3cb.html

3)         bootloader启动
http://blog.csdn.net/yili_xie/archive/2010/05/14/5592276.aspx


 

二.android手机防止休眠

实现这一功能的方法有两种,一种是在manifest.xml文件里面声明,一种是在代码里面修改layoutparams的标志位。具体如下:

  1、在manifest.xml文件里面用user-permission声明。代码如下:

  


view plaincopy to clipboardprint?
< uses-permission android:name=”android.permission.wake_lock” >  
  < /uses-permission >  
< uses-permission android:name=”android.permission.wake_lock” >   < /uses-permission > 

  这种方法,在安装apk时,系统会提示安装人是否允许使用禁止休眠功能。

  2、在程序中用代码实现。代码如下:


view plaincopy to clipboardprint?
getwindow().setflags(windowmanager.layoutparams.flag_keep_screen_on, windowmanager.layoutparams.flag_keep_screen_on);  
getwindow().setflags(windowmanager.layoutparams.flag_keep_screen_on, windowmanager.layoutparams.flag_keep_screen_on); 

  把这段代码加在setcontentview(r.layout.main)之前即可

  这种方法,安装时,不会提示安装人是否允许使用禁止休眠功能


原创粉丝点击