设置安卓开机动画、开机logo

摘要:
事实上,当安卓启动时,会有三张图片:1.第一张图片是Linux系统启动,显示的是Linux小企鹅;2.当android系统从Linux内核启动时,将运行android平台的初始化过程,屏幕上将出现“ANDRIOD”文本屏幕;3.启动动画:此阶段是在系统启动期间显示单词“ANDROID”后可以看到的图片。与进度条一样,图片内容也是单词“ANDROID”。
我们要修改的是system>media文件夹下的bootanimation.zip(手机开机动画)这个文件
设置安卓开机动画、开机logo第1张先来讲讲这个文件结构:该zip解压后得到两个文件,
设置安卓开机动画、开机logo第2张第一个目录存放了开机时播放的图片(图为佳域G3原厂的动绘图片包),见下图:
设置安卓开机动画、开机logo第3张
图片编号001,002,.......010这些是用来控制图片播放顺序的
。第二个 desc. txt的文本文档存放的数据和文字用来控制播放图片的速度(帧速)和播放方式,见下图:
设置安卓开机动画、开机logo第4张以下解说这些文字数据的含义: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》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇element el-cascader设置默认值Android开发 View的阴影详解下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

20_分钟构建你自己的_Linux_发行版

摘要: 你想要构建自己的 Linux 发行版吗?不喜欢市面上现有的Linux发行版?你认为自己可以构建一款更好的发行版?你很幸运。我要在 20 分钟里面介绍如何构建一款发行版。 是的,你没有听错,就是 20 分钟。 你想要构建自己的 Linux 发行版吗?不喜欢市面上现有的Linux发行版?你认为自己可以构建一款更好的发行版?你很幸运。我要在 20 分钟...

移植QT5.6到嵌入式开发板(史上最详细的QT移植教程)

目前网上的大多数 QT 移植教程还都停留在 qt4.8 版本,或者还有更老的 Qtopia ,但是目前 Qt 已经发展到最新的 5.7 版本了,我个人也已经使用了很长一段时间的 qt5.6 for windows ,本文就来介绍一下QT在嵌入式环境的搭建。   移植以到 JZ2440 为例,使用韦老大提供的 ubuntu9.10 虚拟机作为移植环境。当然,...

每天一个Linux命令(ls)

前提 文件路径的描述方式 只有1个盘,叫根目录/ 绝对路径:从根目录开始描述的文件路径描述方式,如/a/b/c。以/打头的路径描写法一定是绝对路径 相对路径:以相对于当前路径的文件路径描述方式。 .表示当前目录 ..表示上级目录 当前路径:系统目前正处于的目录就是系统的当前路径,描写在提示符中。 提示符:[用户名@主机名 当前路径最后一个目录]休止符 休止...

Android Studio同时监听多个Button实现activity跳转

   MainActivity.java: package com.example.test; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import androidx....

Linux内核镜像格式【转】

转自:https://www.cnblogs.com/big-devil/p/7625880.html <Linux内核镜像格式>   Linux内核有多种格式的镜像,包括vmlinux、Image、zImage、bzImage、uImage、xipImage、bootpImage等. ➤kernel镜像格式vmlinux   vmlinux是...

Linux磁盘设备文件(sda,sdb,sdc…)变化问题

在Linux下往往会碰到这样的问题,磁盘的设备文件,比如/dev/sda, sdb, sdc等等在某些情况下会混乱掉,比如sda变成了sdb或者sdc变成了sdb等等,这样无形中会导致磁盘设备管理的混乱,最常见的比如Linux文件系统的启动问题。很多人在遇到这种问题的时候都去找磁盘、阵列厂家,怀疑是他们的问题,其实这种底层的磁盘(单个磁盘或者RAID阵...