Android系统开机显示画面分成两个过程,第一个过程从按电源键到Frameworks启动为止。第二个过程从Frameworks启动完成到Launcher程序启动完成。

第一个过程显示的画面是一张图,第二个过程显示的是一个动画。分别简要记录一下怎么样在源码中修改这两个地方。

1、修改开机画面

找到源码kernel\drivers\video\logo\目录,在这个目录下你会发现logo_linux_clut224.ppm文件,这个就是开机画面的图片,如要替换成自己的Logo,则把自己的Logo图片(png格式)转换成ppm格式,替换这个文件,同时删除logo_linux_clut224.c logo_linux_clut224.o文件,重新编译烧录即可。

注:将png图片改成.ppm格式。首先你要有个 和自己屏幕分辨率一样 或者 小于屏幕分辨率的图片,如logo_linux_clut224.png

    ①将png图片转成pnm

pngtopnm logo_linux_clut224.png >logo_linux_clut224.pnm

    ②将pnm图片的颜色数限制在224色

pnmquant 224 logo_linux_clut224.pnm > logo_linux_clut224_backup.pnm(此处生成后的名字不可与前者相同,否则会报错)

    ③将pnm图片转换成我们需要的ppm

pnmtoplainpnm logo_linux_clut224_backup.pnm >logo_linux_clut224.ppm

2、修改开机动画

在源码跟目录中,执行  find . -name "bootanimation.zip"   找到文件所在路径,可以查看其中的Android.mk了解具体的编译过程,下面先介绍一下如何制作开机动画:

开机动画主要是由一个zip格式的压缩包组成,压缩包里面包含数张png格式的图片,还有一个desc.txt的文本文档,开机时按desc.txt里面的指令,屏幕上会按文件名称顺序连续的播放一张张的图片,

 
就像播放原始的胶带影片一样,形成动画。

具体这一部分图片怎么来,看个人喜好了,我是比较喜欢用flash制作好自己想要的动画然后按帧导出,然后按数字顺序给文件编号就可以了。

如果你不会flash制作也没关系,推荐一个软件:SWF2Video Pro ,链接我就不提供了,自己可以google搜索到,
这个软件可以把flash按帧导出成png格式图片。也就是说,只要有你喜欢的flash动画,你都可以用这个软件把画面截取出来用来做你小石头的开机动画。其他格式导出png格式的软件我就不一一说明了,大家有机会去搜索一下。
保存下来的png图片记得要按顺序编号命名。

下面重点讲的是desc.txt这个文件里面的命令。
desc.txt里面的命令格式如下:

480 427 30
p 1 0 part0
p 0 0 part1

我逐一解释一下:

480 427意思是说你开机动画在屏幕先以多少的分辨率显示,注意不要超过milestone屏幕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格式。另外压缩的时候注意一点,压缩的时候压缩方式要选择存储,否则开机时手机会不认的。当然不至于变砖,只是开机的时候会黑着没动画一直到进入桌面为止。看图:
 
压缩文件重命名为bootanimation.zip之后,放进源码相应的目录下重新编译,查看out\target\product\la0910\system\media\路径下的文件,即可发现已经修改成功,再烧录程序进行验证。
如果之前已经使用了其他的红眼之类的非默认开机动画,这里会已经存在这个文件,只需覆盖就好。

接下来介绍一下相关的代码:

主要的控制代码在/framework/base/cmds/bootanimation/BootAnimation.cpp中。这个文件定义了对动画显示规则的解析,所以,我们可以通过在bootanimation.zip中包含的描述文件来很简单地定义动画显示。只要把开机动画按一定规则做成bootanimation.zip压缩包存放在系统的/oem/media/或/system/media/这两个目录下。开机时,系统检测到这两个目录任意一个下面有名字为bootanimation.zip的压缩包的话,都会解压并播放里面定制的动画。检测顺序是先检测/oem/media/再检测/system/media/。

另外,我们还可以用另外一种方式修改动画,在/frameworks/base/core/res/assets/images/这个目录中,默认情况下,BootAnimation.cpp中的动画控制代码会使用变量mAndroid里面包含的两张图片来做为显示动画。我们要做的就是直接做好图片替换掉/frameworks/base/core/res/assets/images/中的两个文件,最主要的还是要把握好图片的分辨率。

如果只是要修改分辨率,那么可以通过将其中的图片修改分辨率后重新生成一个新的bootanimation.zip的方法,达到适配的效果。

android开机logo和动画修改相关推荐

  1. Android开机logo修改方法

    一体机平台开机logo修改方法 1:修改Kernel中的Logo: 若是要替换Kernel中的开机Logo,只需要把内核目录drivers/video/logo下的logo_android_1024_ ...

  2. Android开机logo修改方法 【转】

    本文转载自:http://blog.csdn.net/qq258711519/article/details/7766303 一体机平台开机logo修改方法 1:修改Kernel中的Logo: 若是要 ...

  3. Android 开机logo动画

    Android 开机会出现3个画面: 1. Linux 系统启动,出现Linux小企鹅画面(reboot)(Android 1.5及以上版本已经取消加载图片): 2. Android平台启动初始化,出 ...

  4. android 开机动画尺寸,Android开机Logo动画制作

    开机Logo制作 1.准备Logo图片 准备一张符合尺寸要求(例如:1280x720)的图片,最好是png或jgp. 2.用Hitool工具制作镜像文件 海思芯片使用的是Hitool工具,打开Hito ...

  5. Android开机画面的具体修改方法

    制作开机Logo  方法一:  Drivers/video/logo/logo_linux_clut224.ppm是默认的启动Logo图片,把自己的Logo图片(png格式)转换成ppm格式,替换这个 ...

  6. Android 开机震动、动画、铃声添加方案

    极力推荐Android 开发大总结文章:欢迎收藏 Android 开发技术文章大总结 本篇文章主要介绍 Android 开发中的部分知识点,通过阅读本篇文章,您将收获以下内容: 一. 开机震动添加方案 ...

  7. 增加开机logo和动画。

    注意!!!!开机动画和logo都需要和项目的分辨率相匹配,不然开不了机,过渡不了 了,开关机动画,~/code/39_O1/droi/pu1/pu181/pu181_e21b_hryt在对应的项目下, ...

  8. 地表最强之Android开机Logo动态替换(附100余款车商原厂高清logo)

    前言 现在很多车载大屏都是基于Android系统,其中都会有一个开机 logo 替换程序,任你选择各大车商 logo 替换,一开机就能查看效果. 一直对这块很感兴趣,研究了发现 MTK 平台可以通过 ...

  9. android开机logo制作工具,Android 开机Logo制作

    1.UBoot logo和kernel logo 找美工制作好指定格式的bmp图片替换到相应的目录就可以了.注意bmp的位深和分辨率 2.android logo 文件desc.txt的内容格式如下面 ...

最新文章

  1. 三位数除以两位数竖式计算没有余数_二年级数学第三十课:有余数的除法 例4 试商...
  2. mysql还书过程_记一次安装 MySQL 的过程
  3. Java Process中waitFor()的问题
  4. Codeforces Round #368 (Div. 2) C. Pythagorean Triples
  5. YUY2(YUV) 与 RGB 格式图片的相互转换 以及 基于YUY2(YUV)的blending
  6. 武器系统仿真技术(一):系统误差分析的蒙特卡洛算法
  7. Ansible之五:常用模块
  8. 基于IDEA使用Spark API开放Spark程序(1)
  9. vue 检测ie版本_vue判断当前浏览器为IE低版本,给出升级提示;IE11及其他浏览器正常使用-Go语言中文社区...
  10. 三星6818核心板接口众多兼容三星4418开发板
  11. php调用酷狗音乐APi
  12. 为什么Uber微服务架构使用多租户?
  13. 最容易理解的Raft算法讲解
  14. 一辆适合长途出行的电动跑车 奥迪RS e-tron GT正式上市
  15. Spring Gateway集成 Nacos注册中心不能够发现服务的问题解决
  16. ping: unknown host www.baidu.com的解决
  17. 框架:什么是框架?为什么要使用框架?框架有什么作用
  18. 张量的向量化vectorization、模n(mode-n)展开
  19. RestTemplate设置通用header 并获取header请求参数
  20. 用Mysql做个人信息管理系统_个人信息管理系统数据库设计精选.doc

热门文章

  1. 【Redux 和 React-Recux】
  2. matlab图像配准之SSD、NCC、SAD等相似度计算
  3. 通过Exchange Online(Office365)地址簿策略实现用户地址簿隔离
  4. 【Android 数据业务解析】APN参数创建
  5. SMT在生产时,对环境温度的要求有哪些?
  6. 【Android】图像像素点理解
  7. Java发送QQ邮件问题Could not connect to SMTP host: smtp.qq.com, port: 465(内附完整代码)
  8. tplink无线网卡的linux,Ubuntu 13.10 使用 TP-LINK TL-WN725N v2.0
  9. 怎么用CSS实现三角形?
  10. python 调用easydl接口