Android开机画面总共有三屏
一、第一屏:开机logo

1、选张png格式的图片,在Linux任意下执行(安装工具):

  1. sudo apt-get install pnmtoplainpm

2、在所要定制logo的pngtopnm logo.png目录执行(转换成pnm格式):

  1. pngtopnm logo.png > logo_linux.pnm

3、再执行(转化成224的pnm图片):

  1. pnmquant 224 logo_linux.pnm > logo_linux_clut224_formal.pnm

4、执行(转换成ppm格式):

  1. pnmtoplainpnm logo_linux_clut224_formal.pnm > logo_linux_clut224.ppm

5、/kernel/drivers/video/logo/logo_linux_clut224.ppm是默认的启动Logo图片,把自己的ogo_linux_clut224.ppm替换这个文件,同时删除logo_linux_clut224.c
logo_linux_clut224.o文件(如果存在) 。

6、进入kernel目录重新编译内核

  1. cd kernel
  1. make kernel.img
二、第二屏:Android字样
Android系统开机会出现“A N D R O I D”这行字,相信大家都不陌生,那么这个怎么修改呢?相关文件在Android系统源码(不是Android内核源码)system/core/init/init.c,如下代码片段
  1. if( load_565rle_image(INIT_IMAGE_FILE) ) {
  2. fd = open("/dev/tty0", O_WRONLY);
  3. if (fd >= 0) {
  4. const char *msg;
  5. msg = "\n"
  6. "\n"
  7. "\n"
  8. "\n"
  9. "\n"
  10. "\n"
  11. "\n"  // console is 40 cols x 30 lines
  12. "\n"
  13. "\n"
  14. "\n"
  15. "\n"
  16. "\n"
  17. "\n"
  18. "\n"
  19. "             A N D R O I D ";
  20. write(fd, msg, strlen(msg));
  21. close(fd);
  22. }
  23. } :

到这里大家就知道怎么修改了吧。但是这里要提到的一点就是,上面的代码片段有一个if语句,就是先检测在文件系统根目录下是否存在要实现的开机动画,如果不存在的话,那么就显示这个文本信息代替,所以,这个阶段是可以实现图片的显示的,而且图片的格式是.rle格式的。如果不存在就显示文本,所以你可以选择系那是自己的文字,也就是修改“A
N D R O I D”字样啊。也可以选择显示图片,但是要自己在文件系统的根目录下提供提片,具体的图片的名字在init.h文件中定义:

  1. #define INIT_IMAGE_FILE   "/initlogo.rle"
  2. int load_565rle_image( char *file_name );

看到上面的宏定义大家就懂了吧,至于怎么制作rle格式的,这个使用一些软件就好。

三、第三屏:开机动画
这个阶段就是大家能看到的系统启动过程中,显示完"A N D R O I D"字样后显示的图片,类似进度条一样,图片内容也是“A N D
R O I
D”字样。这里怎么修改呢?其实这个部分的动画是使用两个图片显示出来的,具体的图片文件所在路径为:frameworks/base/core/res/assets/images,大家看一下就知道了,也就知道怎么修改了。但是还没完。和这部分相关的源码文件主要是如下几个:frameworks/base/cmds/bootanimation下面的几个文件就是的了,可以看看BootAnimation.cpp文件的内容,有如下代码片段:
  1. bool BootAnimation::android()
  2. {
  3. initTexture(&mAndroid[0], mAssets, "images/android-logo-mask.png");
  4. initTexture(&mAndroid[1], mAssets, "images/android-logo-shine.png");
  5. }

这就是设置显示的前景图片和背景图片。接着看还有如下代码:

  1. #define USER_BOOTANIMATION_FILE "/data/local/bootanimation.zip"
  2. #define SYSTEM_BOOTANIMATION_FILE "/system/media/bootanimation.zip"
  3. #define SYSTEM_ENCRYPTED_BOOTANIMATION_FILE "/system/media/bootanimation-encrypted.zip"

看宏名相信大家就知道了,这就是设置动画文件的名称了。为什么会又显示图片又设置动画显示呢,这个Android版本有关。显示两个图片:前景和背景图片是在1.5版本用,后来就改为了设置动画文件,就是:bootanimation.zip,是zip格式的,这个文件包含三个内容:两个目录:part0和part1,一个文件desc.txt。两个目录用来包含要显示的图片,分为第一阶段和第二阶段。剩下的文件就是设置关于如何显示的信息:
示例如下:

  1. 480 800 15
  2. p 1 0 part0
  3. p 0 0 part1

具体的含义如下:

  1. 480--width of the image, 800--height of the image, 15--frames of second
  2. p 1, display one time
  3. p 0, display recycling till handset power on finished
相信大家懂了!呵呵。
你可以制作自己的bootanimation.zip文件放置在合适的目录下,这样可以代替默认的开机界面:这里说的合适的目录就是上面的宏定义,大家都懂^_^!怎么制作bootanimation.zip文件呢?和上面一样创建两个目录和一个文件,然后使用软件或者是命令行大包即可

  1. zip -r -0 bootanimation.zip part0 part1 desc.txt

至此,自定义开机画面就完成了!

以下是我自己定制开机动画的过程:

(1)、如果只要替换原动画的话流程如下:
 1、编译成功后在android源码根目录生成out目录
 2、修改android\out\target\product\sdkDemo\system\framework目录下的framework-res.apk
    用winrar格式打开,替换assets\images里的2张图片即可
(2)、如果要完全自己制作开机动画的话,流程如下:
 1、准备好要制作的图片放在指定文件夹内(我的是android1、android2两个目录,里面是若干png格式图片)
 2、编写desc.txt文件,指定动画参数(我的配置是:1366 768 9p 1 0 android1p 0 0 android2)

3、在android1、android2、desc.txt所在目录执行:

  1. zip -0 bootanimation.zip android1/*png android2/*png desc.txt

4、将bootanimation.zip拷贝到自定义media目录下,修改自己的makefile文件,添加以下类似代码:

  1. PRODUCT_COPY_FILES += \$(call find-copy-subdir-files,*,$(LOCAL_PATH)/media,system/media)

5、重新编译

开机logo以及两种修改开机动画方法的更多相关文章

  1. C#程序实现软件开机自动启动的两种常用方法

    C#/WPF/WinForm/.NET程序代码实现软件程序开机自动启动的两种常用方法函数的示例与实例带详细注释 方法一:将软件的快捷方式创建到计算机的自动启动目录下(不需要管理员权限) 1.必要引用 ...

  2. C#/WPF/WinForm/.NET程序代码实现软件程序开机自动启动的两种常用方法的示例与源码下载带详细注释-源码代码-注册表方式-启动目录快捷方式

    C#/WPF/WinForm/.NET程序代码实现软件程序开机自动启动的两种常用方法的示例与源码下载带详细注释-源码代码-注册表方式-启动目录快捷方式 C#实现自动启动的方法-两种方法 源码下载地址: ...

  3. 两种ps切图方法(图层/切片)

    两种Ps切图方法 一.      基础操作: a)    Ctrl++ 放大图片,ctrl - -缩小图片 b)    按住空格键space+,点击鼠标左键,拖动图片. c)    修改单位,点击编辑 ...

  4. Tomcat下载安装并部署到IDEA(附带idea两种热部署设置方法)

    目录 Tomcat下载教程 Tomcat安装教程 Tomcat热部署到IDEA idea两种热部署设置方法 使用Idea的时候,修改了代码,需要反复的重启Tomcat,查看效果,是不是贼烦?还记得刚上 ...

  5. SSH简介及两种远程登录的方法

    出处 https://blog.csdn.net/li528405176/article/details/82810342 目录 SSH的安全机制 SSH的安装 启动服务器的SSH服务 SSH两种级别 ...

  6. C#两种创建快捷方式的方法

    C#两种创建快捷方式的方法http://www.cnblogs.com/linmilove/archive/2009/06/10/1500989.html

  7. HTTP/HTTPS GET&POST两种方式的实现方法

    关于GET及POST方式的区别请参照前面文章:http://www.cnblogs.com/hunterCecil/p/5698604.html http://www.cnblogs.com/hunt ...

  8. iOS - UITableView中有两种重用Cell的方法

    UITableView中有两种重用Cell的方法: - (id)dequeueReusableCellWithIdentifier:(NSString *)identifier; - (id)dequ ...

  9. Eclipse中SVN的安装步骤(两种)和使用方法

    Eclipse中SVN的安装步骤(两种)和使用方法 一.给Eclipse安装SVN,最常见的有两种方式:手动方式和使用安装向导方式.具体步骤如下: 方式一:手动安装 1.下载最新的Eclipse,我的 ...

随机推荐

  1. 为什么使用Reazor

    原因:类似于前边写的模板页,自己写了.还需要用replace来替换成自己想要的变量.. 常见的模板引擎:Razor.Nvelocity.Vtemplate. Razor有VS自动提示,而且有助于学习a ...

  2. 百度 echarts

    插件地址:http://echarts.baidu.com/index.html ECharts 特性 特性 丰富的可视化类型 多种数据格式无需转换直接使用 千万数据的前端展现 移动端优化 多渲染方案 ...

  3. 字典的增删改查 daty 5

    字典:python中非常重要的数据类型,在python中唯一一个映射的数据类型数据类型分类 按照数据可变与不可变: # 不可变数据类型: int str bool tuple # 可变数据类型: li ...

  4. 10.17JS日记

    1.变量提升 变量提升是浏览器的一个功能,在运行js代码之前,浏览器会给js一个全局作用域,叫window, window分为两个模块,一个叫做内存模块,一个叫做运行模块,内存模块找到当前作用域下的 ...

  5. qrcodenet二维码图片下扩展区域添加号段的操作

    总监安排了个任务,一个号码导出一个二维码图, 我实现了最终还能批量生成,结果主管说要在图片下边添加一行,和图片是一起的 最开始把控件的上的图给改了,结果保存起来没用,控件上的图跟要保存的不是一个事. ...

  6. UML 图C#

    继承关系(类1继承类2) 代码: class Class1:Class2 { } class Class2 { } 实现(实现接口) 代码: interface interface1 { void s ...

  7. RDMA的原理、传输与Verbs

    RDMA的原理.传输与Verbs   RDMA最早专属于infiniband架构.在网络融合的大趋势下出现的RoCE,使高速.超低延时.极低cpu使用率的RDMA得以部署在目前使用最广泛的以太网上.  ...

  8. 大数乘法java版

    import java.util.*; import java.math.*; public class NumMul{ public static void main(String args[]){ ...

  9. Git 分支 主干

    ~/Desktop/work/movies/movie(apps) $ git status  //先查看是否有需要提交的东西# On branch appsnothing to commit (wo ...

  10. Windows 修改的hosts记录没有效果

    windows修改的hosts记录没有效果,新添加的也没有效果. 检查DNS设置相关的均正常, <Dns client为此计算机解析和缓冲域名系统 (DNS) 名称.> 为此计算机注册并更 ...