开机logo以及两种修改开机动画方法

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、重新编译

时间: 2024-11-08 21:29:04

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

两种SQL Server灾难恢复方法

两种SQL Server灾难恢复方法 如果您的mdf文件是当前数据库产生的,那么很侥幸,也许你使用sp_attach_db或者sp_attach_single_file_db可以恢复数据库,但是会出现类似下面的提示信息: 设备激活错误.物理文件名 'C:\Program Files\Microsoft SQL Server\MSSQL\data\test_Log.LDF' 可能有误. 已创建名为 'C:\Program Files\Microsoft SQL Server\MSSQL\Data\

数据归一化和两种常用的归一化方法

数据标准化(归一化)处理是数据挖掘的一项基础工作,不同评价指标往往具有不同的量纲和量纲单位,这样的情况会影响到数据分析的结果,为了消除指标之间的量纲影响,需要进行数据标准化处理,以解决数据指标之间的可比性.原始数据经过数据标准化处理后,各指标处于同一数量级,适合进行综合对比评价.以下是两种常用的归一化方法: 一.min-max标准化(Min-Max Normalization) 也称为离差标准化,是对原始数据的线性变换,使结果值映射到[0 - 1]之间.转换函数如下: 其中max为样本数据的最大

找1~100之间素数的两种比较简单的方法

方法一:利用一个布尔类型的值的判断,优点想法更直接易懂 public static void main(String[] args) { for(int i=2;i<=100;i++){ boolean b=true; for(int n=2;n<i;n++){ if(i%n==0){ b=false; break; } } if(b==true){ System.out.print(i+"\t"); } } } 方法二:能被2和这个数本身以外的数整除的都不是素数.理解难但

【转】数据归一化和两种常用的归一化方法

转自http://www.cnblogs.com/chaosimple/p/3227271.html 数据标准化(归一化)处理是数据挖掘的一项基础工作,不同评价指标往往具有不同的量纲和量纲单位,这样的情况会影响到数据分析的结果,为了消除指标之间的量纲影响,需要进行数据标准化处理,以解决数据指标之间的可比性.原始数据经过数据标准化处理后,各指标处于同一数量级,适合进行综合对比评价.以下是两种常用的归一化方法: 一.min-max标准化(Min-Max Normalization) 也称为离差标准化

[转] 数据归一化和两种常用的归一化方法

原文链接:http://www.cnblogs.com/chaosimple/p/3227271.html 数据标准化(归一化)处理是数据挖掘的一项基础工作,不同评价指标往往具有不同的量纲和量纲单位,这样的情况会影响到数据分析的结果,为了消除指标之间的量纲影响,需要进行数据标准化处理,以解决数据指标之间的可比性.原始数据经过数据标准化处理后,各指标处于同一数量级,适合进行综合对比评价.以下是两种常用的归一化方法: 一.min-max标准化(Min-Max Normalization) 也称为离差

两种 设置 背景图片方法

两种设置背景图片方法 //    UIView *navigationbarTitleTupian =[[UIView alloc]initWithFrame:CGRectMake(0, 0, 40, 30)]; //    UIImageView *imageTitleTupian =[[UIImageView alloc]initWithImage:[UIImage imageNamed:@"bg.png"]]; // //    [navigationbarTitleTupian

ExtJS学习-------Ext.define的别名和备用名,两种定义静态方法的方法,混入属性和其他属性

(1)Ext.define起别名和备用名 Ext.onReady(function(){ Ext.define('User',{ config:{ name:'张三', age:23 }, //使用别名 alias:'alias_user', //使用备用名 alternateClassName:'alternateClassName_user', constructor:function(config){//构造器 var me=this; me.initConfig(config); } }

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

一.给Eclipse安装SVN,最常见的有两种方式:手动方式和使用安装向导方式.具体步骤如下: 方式一:手动安装 1.从官网下载site-1.6.9.zip文件,网址是:subclipse.tigris.org 2.从中解压出features与plugins文件夹,复制到E:/MyEclipse/myPlugin/svn里面,其它的*.xml文件不要. 3.在E:/MyEclipse/MyEclipse X.X/dropins下新建文件svn.link,内容是:path=E://MyEclips

两种解析JSON的方法

对一段json字符串,解析有两种方法 第一种是普通的解析方法:如下 比较有代表性的解析json的方法,嘿嘿 还有一种是利用Gson解析,这种方法解析起来比较方便,不需要像那种普通的方法一样写那么多代码 注:在使用gson的时候类中的属性名称要和json中的属性名称一样 两种解析JSON的方法