Android 开机动画定制
来源:互联网 发布:哈尔滨mac专柜地址 编辑:程序博客网 时间:2024/05/01 10:12
Android 开机会出现3个画面:
(一)底层Linux内核系统启动,出现Linux小企鹅画面(reboot);
(二)Android平台启动初始化,出现"A N D R I O D"文字字样画面;
(三)Android平台上层图形系统启动,出现含闪动的ANDROID字样的动画图片(start)。
一、 底层Linux内核系统启动logo(小企鹅)修改
1、分析过程:
(1)先看一下Bootup logo选项的帮助文档,其启动LOGO是如何配置的。
到Android内核源码根目录下执行make menuconfig,按如下层次依次进入:
->DeviceDrivers
->Graphicssupport
-> [*] Bootup logo --->
选择help查看详细信息:
CONFIG_LOGO:
Enable andselect frame buffer bootup logos.
Symbol: LOGO[=y]
Prompt: Bootuplogo
Defined at drivers/video/logo/Kconfig: 5
Depends on: HAS_IOMEM && (FB||SGI_NEWPORT_CONSOLE)
Location:
->DeviceDrivers
->Graphicssupport
由此可知:drivers/video/logo/Kconfig:5 由此句话,我们知道,启动LOGO的图片的设置是在这个文件中。
(2)再看那张启动图片(小企鹅)logo_linux_clut224.ppm是怎么配置的:
->DeviceDrivers
->Graphicssupport
-> [*] Bootup logo --->
->[*] Standard 224-color Linux logo
选择help查看详细信息:
Symbol: LOGO_LINUX_CLUT224 [=y]
Prompt: Standard224-colorLinux logo
Defined at drivers/video/logo/Kconfig: 26
Depends on: HAS_IOMEM && (FB||SGI_NEWPORT_CONSOLE) && LOGO
Location:
->DeviceDrivers
->Graphicssupport
->Bootuplogo (LOGO [=y])
由此可知:在~/work/android-2.6.29-samsung/drivers/video/logo目录下的Kconfig中有:
26 config LOGO_LINUX_CLUT224
27 bool"Standard224-colorLinux logo"
28 default y
——即选择了logo_linux_clut224这张图片作为启动画面的logo。
若我们想加一个图片,应该在Kconfig中添加相应的配置选项,同时,要在logo 目录下有一个相应的.ppm 格式的图片文件(一个.ppm图片文件、一个.c的文件、一个.h的文件)... ...
这种情况我先不给大家介绍,我们直接用一个.ppm格式的新的图片文件覆盖原来的开机logo 图片文件,重新编译内核即可,相关过程如下。
2、修改过程:
(1)首先找一张符合LCD分辨率的png图片(logo.png),(听说bmp格式的也可以,只是格式转换的命令不同),然后按下面的命令做格式转换:
pngtopnm logo.png > my_linux_logo.pnm(需要下载工具sudoapt-get install netpbm)
pnmquant 224 my_linux_logo.pnm > my_linux_logo224.pnm
pnmtoplainpnm my_linux_logo224.pnm > my_linux_logo.ppm
(2)将ppm图片文件拷贝到logo 目录下,将原开机启动图片文件(小企鹅)做下备份:
cp logo_linux_clut224.ppm logo_linux_clut224_copy.ppm
(3)将新图片文件替换原来的图片文件:
mv my_linux_logo.ppm logo_linux_clut224.ppm
(4)然后make menuconfig,选中Standard224-colorLinuxlogo:
->DeviceDrivers
->Graphicssupport
-> [*] Bootup logo --->
->[*] Standard 224-color Linux logo
(5)设置图片居中显示:
修改drivers/video/fbmem.c
/*modified bycreatory*/
// image.dx=0;
// image.dy=y;
image.dx=(info->var.xres/2)-(logo->width/2);
image.dy=(info->var.yres/2)-(logo->height/2);
在drivers/video/console/fbcon.c文件中的
logo_height=fb_prepare_logo(info,ops->rotate);
下面加入
logo_height +=(info->var.yres/2)-(logo_height/2);
最后make zImage,将内核镜像烧到开发板中,即可大功告成!!!
二、 Android平台启动初始化"AN D R I O D"字样修改
在启动代码system/core/init/init.c中将下面的代码修改红色字体部分,即可在开机时显示所修改的内容,一般为了开机的简约,这段代码通常被屏蔽掉。
if(load_565rle_image(INIT_IMAGE_FILE) ) {
fd =open("/dev/tty0", O_WRONLY);
if (fd >=0) {
constchar *msg;
msg= "\n"
"\n"
"\n"
"\n"
"\n"
"\n"
"\n" // console is 40cols x 30 lines
"\n"
"\n"
"\n"
"\n"
"\n"
"\n"
"\n"
" A N D R O I D ";//需要修改的地方
write(fd, msg, strlen(msg));
close(fd);
}
}
重新进行源码的编译,启动Android系统即可。
三、Android图形系统启动,动画闪动ANDROID修改
1、主要过程分析:
BootAnimation::readyToRun()
==> 程序会尝试打开/data/local/bootanimation.zip和/system/media/bootanimation.zip文件如果2个文件都不存在,那么mAndroidAnimation将为true:
mAndroidAnimation = false;
status_t err = mZip.open("/data/local/bootanimation.zip");
if (err != NO_ERROR) {
err = mZip.open("/system/media/bootanimation.zip");
if (err != NO_ERROR) {
mAndroidAnimation = true;
}
}
于是最终将在下面threadLoop()函数中
BootAnimation::threadLoop()
if (mAndroidAnimation) {
r = Android(); // 执行android字体闪动的图片
} else {
r = movie(); // 执行bootanimation.zip中提供的动画图片
}
==> BootAnimation::Android()会加载"images/android-logo-mask.png"和"images/android-logo-shine.png"
==> BootAnimation::movie()会加载bootanimation.zip中的内容
2、添加方法:
在/data/local和/system/media目录下添加自己的动画bootanimation.zip文件(同时也可以添加相应的开机音乐 bootanimation.MP3),这样在系统启动时就会播放自己的开机动画和播放音乐。
- Android 开机动画定制
- Android系统定制开机动画
- 【android】开机动画animation定制
- 定制android系统的开机动画
- Android系统的定制---定制系统开机动画
- Android开机动画、logo、字样的定制过程
- android 开机画面定制
- Android开机应用程序定制
- wince开机动画及loadcepc的定制
- android 开机logo 开机动画
- Android 入门 - 定制开机画面
- android系统开机logo定制
- Android如何定制开机Logo
- Android 开机动画
- Android 开机动画
- android 开机动画
- android 开机动画
- android开机动画
- VC 6.0 MFC ListControl 控件的使用
- android· 2.2上的任务管理器杀死进程的API
- Linux系统:不同主机同一用户之间SSH信任关系的建立
- JDK源码分析之Set类详解
- GDI+DrawImage
- Android 开机动画定制
- oracle EBS上传和下载文件(转)
- Asp.net上传视频到YouTube
- http://labs.iqiyi.com/multiplay/
- onvif规范的实现:使用gSOAP创建SOAP调用实例
- 分别用 循环 和 递归来实现 打印出前 n 个 菲波那切数列
- 6.2 拓扑排序
- css中实现显示和隐藏
- C++中代理类和句柄类