设置安卓开机动画、开机logo
我们要修改的是system>media文件夹下的bootanimation.zip(手机开机动画)这个文件
先来讲讲这个文件结构:该zip解压后得到两个文件,
第一个目录存放了开机时播放的图片(图为佳域G3原厂的动绘图片包),见下图:
图片编号001,002,.......010这些是用来控制图片播放顺序的
。第二个 desc. txt的文本文档存放的数据和文字用来控制播放图片的速度(帧速)和播放方式,见下图:
以下解说这些文字数据的含义:720表示图片像素宽为720像素点
1280表示图片高为1280像素点
10表示以10帧每秒的速度播放这些图片
P是play的首字母,意味着播放
第一个0表示动画循环播放,直到开机(假设此处为1表示仅仅播放一遍)
第二个0表示一组图片播放完到下一组图片延时为0秒(此处不用管,由于一般一组图片就
行了,后面会再讲)
folder1为存放图片的目录名称。
总之,通俗讲,就是开机logo显示完以后,系统以10张每秒的速度播放folder1目录中的图片,图片大小为720*1280,并不断循环播放这组图片直到开机。
讲完了结构,能够来开工了!(强烈建议,直接把自己要用的图片组命名为001,002, 003, 004.........格式为png或jpg都行,大小必须为720*1280,把图片直接复制进bootanimation.zip的folder1目录中,并删掉原来的10张图片, 控制文本desc. txt直接改动即可,不要自己新建!避免带来不必要麻烦!由于安卓基于linux系统,windows下编码不同,直接编写的desc.txt是无法控制图片播放的)。
Android 开机事实上总共会出现3个画面:
1、第一个就是 linux 系统启动,出现Linux小企鹅画面(reboot);
2、当android系统从Linux内核启动后,将会运行anddroid平台的初始化过程,屏幕上将会出现”A N D R I O D”文字字样画面(可是在我的系统里这个界面并不没有出现;或者说是肉眼没有看到这个画面的出现,这里依旧送上这个画面的改动方法);
3、开机动画:这个阶段就是大家能看到的系统启动过程中,显示完"A N D R O I D"字样后显示的图片,类似进度条一样,图片内容也是“A N D R O I D”字样。
第一个(小企鹅)画面的改动:
Linux Kernel引导启动后,载入该图片,涉及到的代码在例如以下的文件夹中:
/kernel/trunk/drivers/video/fbmem.c
/kernel/trunk/drivers/video/fbmem.h
/kernel/trunk/drivers/video/logo/logo.c
/kernel/trunk/drivers/video/logo/logo.h
/kernel/trunk/drivers/video/logo/Kconfig
/kernel/trunk/include/linux/linux_logo.h
让内核中加入此开机logo的过程例如以下:
1、让内核支持启动LOGO
在内核文件夹中 make menuconfig
Device Drivers ----> Graphics support ---->
选中 Bootup logo ----> Standard 224-color Linux logo
2、制作开机logo的图片
将要当作开机LOGO的图片依照你屏幕的大小进行裁减,并将其保存为bmp格式 或 png格式; 比如linuxlogo.bmp 或 linuxlogo.png
在linux下输入下面命令(for bmp):
#bmptoppm linuxlogo.bmp > linuxlogo.ppm //生成ppm
#ppmquant 224 linuxlogo.ppm > linuxlogo224.ppm //转换成224颜色
#pnmnoraw linuxlogo224.ppm > linuxlogo224.ppm //转换成ascii格式
在Linux下输入下面命令(for png):
# pngtopnm linuxlogo.png > linuxlogo.pnm
# pnmquant 224 linuxlogo.pnm > linuxlogo224.pnm
# pnmtoplainpnm linuxlogo224.pnm > linuxlogo224.ppm
注:上述命令须要安装netpbm的工具包 sudo apt-get install netpbm
3、将LOGO文件放入内核中
复制到制作好的LOGO文件到 /drivers/video/logo 目录
替换 logo_linux_clut224.ppm 文件,还要删除该目录下的logo_linux_clut224.o和logo_linux_clut224.c
4、又一次编译内核就OK了!这里就不详说。
第二个(”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). 制作当前屏幕像素的图片
使用PS制作一张适合屏幕大小的图片,保存时选“保存为 Web 所用格式”,然后在弹开的窗体上,“预设”项选择“PNG-24”,保存为android_logo.png(
注:好像仅仅支持png-24,其它格式生成的rle文件显示不正常,有兴趣大家能够再验证一下。
2). 将图片转换为raw格式
使用linux下的ImageMagick自带的convert命令,进行raw格式转换,命令为:
convert -depth 8 android_logo.png rgb:android_logo.raw
注:ubuntu 10.04 默认已经安装ImgageMagick工具,假设当前系统没有安装,能够运行以下的命令安装:
sudo apt-get install imagemagick
3). 将raw格式转化为rle文件
须要用到android编译后的rgb2565工具,在android/out/host/linux-x86/bin文件夹下(android为当前源代码所在文件夹),转换命令例如以下:
rgb2565 -rle < android_logo.raw > initlogo.rle
到眼下为止,启动须要显示的图像已经做好了,就是initlogo.rle,注意文件名称必须是这个,假设想改文件名称,须要改动
android/system/core/init/init.h中的宏:
#define INIT_IMAGE_FILE "/initlogo.rle"
4).将制作好的initlogo.rle文件复制到android系统的root文件夹下,也就是out/target/product/..../root下
最后编译成文件系统镜像 xxx.img又一次烧写。OK。
第三个(开机动画)画面
事实上这个部分的动画是使用两个图片显示出来的,详细的图片文件所在路径为:frameworks/base/core/res/assets/images,大家看一下就知道了,也就知道怎么改动了。
和这部分相关的源代码文件主要是例如以下几个:frameworks/base/cmds/bootanimation以下的几个文件就是的了,能够看看BootAnimation.cpp文件的内容,有例如以下代码片段:
bool BootAnimation::android()
{
initTexture(&mAndroid[0], mAssets, "images/android-logo-mask.png");
initTexture(&mAndroid[1], mAssets, "images/android-logo-shine.png");
bool BootAnimation::android()
{
initTexture(&mAndroid[0], mAssets, "images/android-logo-mask.png");
initTexture(&mAndroid[1], mAssets, "images/android-logo-shine.png"); 这就是设置显示的前景图片和背景图片。
接着看还有例如以下代码:
[cpp] #define USER_BOOTANIMATION_FILE "/data/local/bootanimation.zip"
#define SYSTEM_BOOTANIMATION_FILE "/system/media/bootanimation.zip"
#define SYSTEM_ENCRYPTED_BOOTANIMATION_FILE "/system/media/bootanimation-encrypted.zip"
#define USER_BOOTANIMATION_FILE "/data/local/bootanimation.zip"
#define SYSTEM_BOOTANIMATION_FILE "/system/media/bootanimation.zip"
#define SYSTEM_ENCRYPTED_BOOTANIMATION_FILE "/system/media/bootanimation-encrypted.zip" 看宏名相信大家就知道了,这就是设置动画文件的名称了。为什么会又显示图片又设置动画显示呢,这个Android版本号有关。显示两个图片:前景和背景图片 是在1.5版本号用,后来就改为了设置动画文件,就是:bootanimation.zip,是zip格式的,这个文件包括三个内容:两个文件夹:part0 和part1,一个文件desc.txt。
两个文件夹用来包括要显示的图片,分为第一阶段和第二阶段。剩下的文件就是设置关于怎样显示的信息:
示比例如以下:
480 800 15
p 1 0 part0
p 0 0 part1
详细的含义例如以下:
480--width of the image, 800--height of the image, 15--frames of second
p 1, display one time
p 0, display recycling till handset power on finished,相信大家懂了!呵呵。
你能够制作自己的bootanimation.zip文件放置在合适的文件夹下,这样能够取代默认的开机界面:这里说的合适的文件夹就是上面的宏定义,大家都懂^_^!
怎么制作bootanimation.zip文件呢?和上面一样创建两个文件夹和一个文件,然后使用软件或者是命令行大包就可以
zip -r -0 bootanimation.zip part0 part1 desc.txt
设置安卓开机动画、开机logo的更多相关文章
- Android开机动画、logo、字样的定制过程【转】
本文转载自:http://blog.csdn.net/yinhaide/article/details/43668401 Android开机画面总共有三屏 一.第一屏:开机logo 1.选张png格式 ...
- 安卓修改开机logo和开机动画的方法
第一种和第二种方法亲测可用,安卓版本是4.2和安卓5.1均可.第二种方法待验证 以下三种方法 Android 开机其实总共会出现3个画面: 1.第一个就是 linux 系统启动,出现Linux小企鹅画 ...
- 安卓开机logo和开机动画的几种实现方法
安卓4.2可用方法2-4,第一种方法未验证. 从理论上来说,android 有4个开机启动画面. 第一个应该是U-BOOT的启动画面,有些设备为了满足按动电源即有显示,在UBOOT里加了开机画面,实现 ...
- 开机logo以及两种修改开机动画方法
Android开机画面总共有三屏 一.第一屏:开机logo 1.选张png格式的图片,在Linux任意下执行(安装工具): sudo apt-get install pnmtoplainpm 2.在所 ...
- android logo:内核、android开机动画【转】
本文转载自: 关键词:Android 开机logo 开机动画 initlogo.rle bootanimation desc.txt 平台信息:内核:linux2.6/linux3.0系统:a ...
- 纯css做的安卓开机动画
随着css3的发展,越来越多的负责绚丽的效果可以由纯css来完成了.用css3实现的动画效果丝毫不必js实现的逊色,而且浏览器对css渲染的速度远比js快,大多数时候css的体积也不js小.其中css ...
- Android5.1开机LOGO与开机动画【转】
本文转载自:http://blog.csdn.net/u014770862/article/details/52624627 android5.1中,开机LOGO部分和之前版本的并不相同,主要区别在于 ...
- kernel logo到开机动画之间闪现黑屏(android 5.X)
在BootAnimation開始画图之前,会先做一次clear screen的动作,避免出现前面的图干扰到BootAnimation的显示. 通过check main_log先确认播放开机动画是哪个f ...
- 安卓 开机 动画 酷派大神F1开机动画 美化 自定义 修改
韩梦飞沙 韩亚飞 313134555@qq.com yue31313 han_meng_fei_sha 酷派大神F1开机动画.rar
随机推荐
- spring AOP详解四
AOP(Aspect Orient Programming),作为面向对象编程的一种补充,广泛应用于处理一些具有横切性质的系统级服务,如事务管理.安全检查.缓存.对象池管理等.AOP 实现的关键就在于 ...
- FTP的搭建过程,以及遇到的坑
在之前的博客中,我有说到,我最喜欢用Yum在线安装的方式安装软件,简单省事儿.现在看来,也不尽然,关键是,无法快速找到我要的文件,整个whereis 也很累.所以,现在觉得,还是乖乖的整个压缩包,自行 ...
- 【Luogu】P2886牛继电器(矩阵加速floyd)
题目链接 矩阵加速floyd……牛逼牛逼. 注意离散化,注意更新的时候要用旧的权值矩阵更新. #include<cstdio> #include<cstring> #inclu ...
- UVA12206 Stammering Aliens 【SAM 或 二分 + hash】
题意 求一个串中出现至少m次的子串的最大长度,对于最大长度,求出最大的左端点 题解 本来想练哈希的,没忍住就写了一个SAM SAM拿来做就很裸了 只要检查每个节点的right集合大小是否不小于m,然后 ...
- mybatis学习(十一)——springmvc++spring+mybatis整合
做任何一个项目都以一个需求,这里先定义一下需求:利用三大框架查询酒店列表. 一.搭建开发环境 1.创建一个web项目 我这里用的是 jdk1.8+tomact7.0 2.创建hotel表 CREATE ...
- 【CCF】最优灌溉 最小生成树
[AC] #include<iostream> #include<cstdio> #include<string> #include<cstring> ...
- es6总结(八)--模块化-import
- anaconda安装及环境变量配置
最近无聊想的学习一下python. 首先可以在官网上下载与自己电脑兼容的anaconda安装包,网址如下https://www.continuum.io/downloads 下载好后就是一个exe文件 ...
- 标准C程序设计七---60
Linux应用 编程深入 语言编程 标准C程序设计七---经典C11程序设计 以下内容为阅读: <标准C程序设计>(第7版) 作者 ...
- linux信号-------初涉
一.信号的本质 软中断信号(signal,又简称为信号)用来通知进程发生了异步事件.在软件层次上是对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的.信号是进程 ...