android 开机动画

#移动开发 #Android

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

bootanimation)显示(动画)

2. bootloader 开机图片

  1. 一般使用 rle 格式图片,不同的 android 系统不同此图片可能放在不同位置,以下实例均以 G1 为例,G1 放在

splash 分区中

  1. 制作 rle 格式开机图片
  1. 将图片转成 320x480,256 色,保存成不带 Alpha 通道的 png 格式

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

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

  1. 烧写(以 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 之前
  1. 说明
    使用 bootanimation 程序显示开机画面,如需修改开机画面,需要修改源码

  2. 代码
    frameworks/base/cmds/bootanimation/*
    frameworks/base/core/res/assets/images/android-logo*

  1. android 2.0 及之后
  1. 说明
    使用 bootanimation 程序显示开机画面,如需修改开机画面,不用修改代码,只需按格式要求做 bootanimation.zip

包,放在系统的 /system/media 目录中,或 /data/local 目录中即可,两个目录下都存在时,优先使用 /data/local

下的

  1. 代码
    frameworks/base/cmds/bootanimation/*
    frameworks/base/core/res/assets/images*

  2. 制作动画包

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

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

  3. 打包

² 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

](http://blog.21ic.com/user1/2537/archives/2009/65606.html)

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

](http://hi.baidu.com/kernel_linux/blog/item/9eff140f9d089c206159f3cb.html)

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

](http://blog.csdn.net/yili_xie/archive/2010/05/14/5592276.aspx)

(转载请注明出处 http://xy0811.spaces.live.com/)