分类: Java
2011-10-21 10:28:01
Android开机logo
用图片工具编辑好想要的png之后,保存为logo.png
在logo.png所在命令下执行命令:
#使用ImageMagick自带的convert命令,进行raw格式转换
convert -depth 8 logo.png rgb:logo.raw |
android自带的rgb2565工具,对raw文件进行rle565格式转换 |
$(SRC_HOME)/out/host/linux-x86/bin/rgb2565 -rle |
然后将initlogo.rle拷贝到android系统根目录,也就是root目录底下 |
cp initlogo.rle root/ |
删除中间文件 |
rm -f logo.raw
在制作完 initlogo.rle 之后, 放入终端使用,发现第一次可以显示,第二次重启时又变成android的字符了,查看代码 system/core/init/init.c [load_565rle_image] --> logo.c 中发现源码在显示完毕initlogo.rle之后作了 unlink 操作, 而android 默认initlogo.rle 所在的system.img 是只读的,所以如果按照android 的标准形式作分区及其属性是没有问题, 但对于自定义的ya 或者 ubi形式的可读写的rootfs时就又问题了, 所以干脆注释unlink 代码吧. |
准备自己喜欢的开机图片,注意:图片必须为.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
system/media/bootanimation.zip 或system/customize/resource/bootanimation.zip 或 /data/local/bootanimation.zip 替换、重启。