第一种和第二种方法亲测可用,安卓版本是4.2和安卓5.1均可。第二种方法待验证

以下三种方法

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和开机动画的方法的更多相关文章

  1. 安卓开机logo和开机动画的几种实现方法

    安卓4.2可用方法2-4,第一种方法未验证. 从理论上来说,android 有4个开机启动画面. 第一个应该是U-BOOT的启动画面,有些设备为了满足按动电源即有显示,在UBOOT里加了开机画面,实现 ...

  2. DIY固件系列教程——实现开机LOGO三屏动画的完全替换【转】

    本文转载自:http://blog.csdn.net/sdgaojian/article/details/9192433 本教程需要用到如下工具:1,7Z压缩工具2,AddCrc32效验工具3,raw ...

  3. Android5.1开机LOGO与开机动画【转】

    本文转载自:http://blog.csdn.net/u014770862/article/details/52624627 android5.1中,开机LOGO部分和之前版本的并不相同,主要区别在于 ...

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

    我们要修改的是system>media文件夹下的bootanimation.zip(手机开机动画)这个文件 先来讲讲这个文件结构:该zip解压后得到两个文件, 第一个目录存放了开机时播放的图片( ...

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

    Android开机画面总共有三屏 一.第一屏:开机logo 1.选张png格式的图片,在Linux任意下执行(安装工具): sudo apt-get install pnmtoplainpm 2.在所 ...

  6. Android9.0 MTK 平板横屏方案修改(强制app横屏 + 开机logo/动画+关机充电横屏 + RecoveryUI 横屏)

    文章较长建议先收藏再看 拆解步骤 1.app 强制横屏显示,无视 android:screenOrientation="portrait" 属性 2.屏幕触摸坐标修改为横屏 3.开 ...

  7. Android 系统开机logo的修改【转】

    本文转载自:http://blog.csdn.net/yandongqiangZHRJ/article/details/8585273 看到了好几个修改logo的博文,但是说的不是很清楚,在这里亲手送 ...

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

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

  9. 八、启动linux内核并修改开机logo

    1. 编译并烧写linux内核 1)先准备好内核源码包urbetter-linux2.6.28-v1.0.tgz,输入命令:tar -zxvf urbetter-linux2.6.28-v1.0.tg ...

随机推荐

  1. phalcon安装-遇坑php-config is not installed 解决方法

    通过源码编译安装php环境,按照phalcon官方文档安装扩展,会遇到php-config is not installed的坑. 尝试通过下列命令可以解决: cd /opt/cphalcon-/bu ...

  2. BCH/BCHABC/BCHSV分叉后重放机制小结

    1. 不过,在谈重放保护之前,我们需要先了解一下重放攻击(又称重播攻击.回放攻击).实际上,重放攻击在互联网行业里就有过出现,也是计算机世界黑客最常用的攻击方式之一,它是指攻击者发送一个目的主机已接收 ...

  3. 当前上下文中不存在viewbag

    参考链接:http://www.cnblogs.com/chas/p/5076297.html view文件夹下的web.config中的appsetting节点中缺少了 <add key=&q ...

  4. JwtBearerAppBuilderExtensions.UseJwtBearerAuthentication(IApplicationBuilder

    netcore从1.1升级到2.0时,出的错,因为使用的时Jwt token参考https://github.com/aspnet/Security/issues/1310#issuecomment- ...

  5. c# 上传excel数据总结(一)线程的使用

    1: 因为程序涉及到上传,开始暂停,继续,删除, thread 在老版本用使用th.Abort(); th.Resume(); 停止 恢复  th.Suspend(); 挂起 猛的一看挺合适啊..但微 ...

  6. springboot 项目添加jaeger调用链监控

    1.添加maven依赖<dependency> <groupId>io.opentracing.contrib</groupId> <artifactId&g ...

  7. Python while for if....else

    1函数input()的工作原理: 函数input()让程序暂停运行,等待用户输入一些文本.获取用户输入后,python将其存储在一个变量(即要向用户显示的提示或说明) raw_input    是Py ...

  8. 关系测试# 或 print(s2-s)Python 集合

    1集合是一个无序的,不重复的数据组合,它的主要作用如下(set和dict类似,也是一组key的集合,但不存储value.由于key不能重复,所以,在set中,没有重复的key): 去重,把一个列表变成 ...

  9. hdu (欧拉函数+容斥原理) GCD

    题目链接http://acm.hdu.edu.cn/showproblem.php?pid=1695 看了别人的方法才会做 参考博客http://blog.csdn.net/shiren_Bod/ar ...

  10. $(QTDIR);$(QTDIR)\include\QtCore;$(QTDIR)\include;

    $(QTDIR); 在系统环境变量中定义即可  vs属性中设置头文件路径