[转载]Android系统开机画面的实现

摘要:
Android系统的引导屏幕分为以下三个阶段:1.引导映像:Android内核基于标准内核,熟悉Linux。特别是那些在开发板上移植了Linux系统的人知道,在内核的引导过程中会显示一张小企鹅的照片。这是第一阶段的启动映像。我相信你知道如何修改它。Android 1.5及以上版本已取消此图像的显示。有关详细信息,请参阅内核相关代码;2.启动文本:Android系统启动时将显示“Android”。相信大家都很熟悉,那么如何修改呢?

 Android系统开机画面分为下面三个阶段:

1、开机图片:Android内核是基于标准内核的,对linux比较熟悉,特别是在开发板上移植过Linux系统的人就知道在内核引导过程中会显 示出一 个小企鹅的图片,这就是第一阶段的开机图片,相信大家知道怎么去修改它。Android1.5及其以上版本都取消了这个图片的显示,具体的看内核相关代码 就知道了;

2、开机文字: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 = " "  
  6.          " "  
  7.          " "  
  8.          " "  
  9.          " "  
  10.          " "  
  11.          " "  // console is 40 cols x 30 lines   
  12.          " "  
  13.          " "  
  14.          " "  
  15.          " "  
  16.          " "  
  17.          " "  
  18.          " "  
  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.   
  3. int load_565rle_image( char *file_name );

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

3、开机动画:这个阶段就是大家能看到的系统启动过程中,www.linuxidc.com显示完"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");

这就是设置显示的前景图片和背景图片。

接着看还有如下代码:

  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。

两个目录用来包含要显示的图片,分为第一阶段和第二阶段。剩下的文件就是设置关于如何显示的信息

示例如下:

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

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

免责声明:文章转载自《[转载]Android系统开机画面的实现》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇参数估计MyBatis(缓存机制)下篇

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

相关文章

(appium+python)UI自动化_02_appium启动手机app

前提:需先安装配置好appium+python自动化环境,已配置好环境的小伙伴可以参考以下步骤启动Android app,具体步骤如下: 一、USB连接手机 (1)手机USB连接电脑 (2)手机打开开发者模式、USB调试功能 二、基础信息配置 1,获取设备号 终端获取设备号,指令:adb devices   2,获取apk包名、activity (1)打开...

android Scrollview弹出软键盘时页面扭曲、变形

当android界面中有scrollview并且有EditText时,当点击输入,EditText获取到焦点弹出软件盘时,界面会拉伸变形,非常影响界面美观 解决方法: 在ScrollView的属性中加上如下属性: android:windowSoftInputMode="stateVisible|adjustResize"android:fitsSyste...

友盟官方文档

#  产品概述 关于分享和授权的sdk接口,我们在v4.4.0做出了巨大的改变,精简了接口调用的代码。并将分享授权,与评论等功能做出了隔离,使结构更加清晰。所以本版本的功能也只有分享与授权并无其他功能,请开发者注意。 注意:本文示例代码只有分享与授权功能,并对接口进行了调整,如需要原功能的开发者,请继续使用v4.3.0版本。 # 获取友盟Appkey 如果你...

Android 自动生成表格

Layout.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layou...

HBuilderX 连接 逍遥模拟器 之 解决没法找到模拟器设备 问题

HBuilderX、逍遥模拟器的来源:官网 导入HBuilderX 一个项目文件夹,打开任一个html文件,我在 运行 —— 运行到手机或模拟器 里找不到可运行的设备,我采用的第一种方法: HBuilderX连接安卓模拟器 - 简书 (jianshu.com)(百度大多为这种但最后没得解决问题) 最后我找到了第二种方法: HBuilder使用逍遥安卓模拟器...

【转】Android各大发布市场

前言  如果只有一个或者少许的两三个Android市场,本文也没用存在的必要性,本文谨献给同在Android奋战的同仁。 声明 欢迎转载,但请保留文章原始出处:) 博客园:http://www.cnblogs.com农民伯伯: http://over140.cnblogs.com  正文  一、应用市场  1、Google Play https://pl...