制作android开机动画

来源:互联网 发布:python时间毫秒数 编辑:程序博客网 时间:2024/04/28 07:46

开机时共分两部分,开机logo和开机动画
准备图片
1)(内核部分)第一阶段静态显示,要求一张 png 格式图片(满足机器要求分辨率),单张图片不大于 100kb。静态显示时间 5 秒左右

2)(android 部分)第二阶段静态显示,要求一张 png 格式图片(满足机器要求、分辨率,单张图片不大于 100kb。静态显示时间 15-20 秒左右。
3)(android 部分)第三阶段动态显示,要求多张 png 格式图片(满足机器要求、分辨率),单张图片不大于 100kb,动态显示时间 15s 秒左右。(总大小小于 4M,越小越好)

一、内核部分
android 系统默认为小企鹅。如需修改:
1.替换内核小企鹅
根 据 在 bootup logo 里 面 配 置 的 选 项 , 替 换 掉 drivers\video\logo\ 下 面 的logo_linux_clut224.ppm或 者 其 他 的 .ppm 文 件 , 同 时 删 除 logo_linux_clut224.c 。 使 用 附 件 脚 本png2ppm.sh ,放入虚拟机,在同一个目录下存放 logo.png(你想转换的),然后敲入./png2ppm.sh 即可生成 logo.ppm,再重命名为 logo_linux_clut224.ppm 即可用,
若原来没有安装 netpbm 工具,使用 sudo apt-get install netpbm 命令安装---Bootup logo[ ] Standard black and whiteLinux logo
[ ]Standard16-color Linux logo[*] Standard 224-color Linux logo[ ] 224-color Macintosh Linux logo[] 16-color SuperH Linux logo
二.android 部分
1、替换 android_小字
1、首先需要一个适合自己屏幕的 png 文件,可以自己制作或者网上下载,例如名称为 log.png
2、使用 ImageMagick 自带的 convert 命令,进行 raw 格式转换命令 $ convert -depth 8 log.png rgb:log.raw将获得一个叫做 log.raw 的文件
3、来到目录 platform\build\tools\rgb2565,编译 android 自带的 rgb2565 工具(如果没编译过),使用:$ gcc -O2 -Wall -Wno-unused-parameter -o rgb2565to565.c
4 、 将 log.raw 文 件 拷 贝 到 rgb2565 可 执 行 程 序 目 录 下 , 即platform\build\tools\rgb2565
5、对 raw 文件进行格式转换:$ ./rgb2565 -rle <logo.raw > initlogo.rle 生成initlog.rle 文件然后将 initlogo.rle 复制到 out/target/product/sdkDemo/root 目录下。
make firmware---->ok!
2.替换 android 闪光动画
vendor\....\sdkDemo\bootanimation.zip或者替换 out\target\product\sdkDemo\system\media\bootanimation.zip替换图片里面 part0 ,part1 两部分动画,一般 part0 顺序播放一遍,part1 循环播放直到系统启动完毕根据需要放入 png 格式图片,播放顺序按字母顺序,图片最好按序号命名。最后将 bootanimation 打包成.zip 包
方法:
进入 bootanimation 目录
执行: zip -0 -r ../bootanimation.zip ./*

linux 命令使用 -0 指定压缩等级为最低等级 stored ,即只归档不压缩,否则可能由于包格式问题引起动画显示为黑屏
将生成.zip 放入 out\target\product\sdkDemo\system\media\即可bootanimation.zip 解压后,有一个 desc.txt 文件
其内容分析如下:
480 272 20
//表示 480*272 分辨率,这个可以根据机器自己设定;每秒
钟播放 20 张图片
p 1 0 part0
p 0 0 part1
总体说明: 480 为宽度, 427 为高度, 30 为帧数,即每秒播放动画 30 帧
部分说明:第一项 p 为标志符,第二项为循环次数 1 为只播放 1 次,0为无限
循环,第三项为两次循环之间间隔的帧数,第四项为对应的目录名