android4.2 开机动画源码跟踪
来源:互联网 发布:淘宝网关键词排名 编辑:程序博客网 时间:2024/06/08 15:17
PS:Android4.2
Android系统开机过程中主要会出现3个动画:
1.Linux系统启动(默认不出现)
2.Android平台启动初始化(默认出现“ANDROID的字样”)
3.ANDROID平台图形系统启动(默认出现含ANDROID字样的闪动动画图片)
下面我们一一来进行跟踪。
首先关于Linux的开机图画在/home2/zfl/a20-4.2/lichee_zfl/linux-3.3/drivers/video/logo/logo.c中。Linux kernel引导启动后,加载该图片。logo.c中定义了nologo,然后在linux_logo * __init_refok fb_find_logo(int depth)方法中根据nologo 来进行判断是否进行显示相关图画。具体相关代码如下:
static bool nologo;module_param(nologo, bool, 0);MODULE_PARM_DESC(nologo, "Disables startup logo");/* logo's are marked __initdata. Use __init_refok to tell * modpost that it is intended that this function uses data * marked __initdata. */const struct linux_logo * __init_refok fb_find_logo(int depth){ const struct linux_logo *logo = NULL; if (nologo) return NULL; if (depth >= 1) {#ifdef CONFIG_LOGO_LINUX_MONO /* Generic Linux logo */ logo = &logo_linux_mono;...}
接下来进行开机“ANDROID”字样的跟踪:
ANDROID系统启动后,在/home2/zfl/a20-4.2/android/system/core/init/init.c 中有
static int console_init_action(int nargs, char **args){ int fd; char tmp[PROP_VALUE_MAX]; if (console[0]) { snprintf(tmp, sizeof(tmp), "/dev/%s", console); console_name = strdup(tmp); } fd = open(console_name, O_RDWR); if (fd >= 0) have_console = 1; close(fd); //if( load_565rle_image(INIT_IMAGE_FILE) ) { if( load_argb8888_image(INIT_IMAGE_FILE) ) { fd = open("/dev/tty0", O_WRONLY); if (fd >= 0) { const char *msg; msg = "\n" "\n" "\n" "\n" "\n" "\n" "\n" // console is 40 cols x 30 lines "\n" "\n" "\n" "\n" "\n" "\n" "\n" " A N D R O I D "; write(fd, msg, strlen(msg)); close(fd); } } return 0;}而在main()中有相关的调用:
/* skip mounting filesystems in charger mode */ if (!is_charger) { action_for_each_trigger("early-fs", action_add_queue_tail); queue_builtin_action(console_init_action, "console_init"); action_for_each_trigger("fs", action_add_queue_tail); action_for_each_trigger("post-fs", action_add_queue_tail); action_for_each_trigger("post-fs-data", action_add_queue_tail); }
上述中的INIT_IMAGE_FILE 在init.h中有相关定义:
#define INIT_IMAGE_FILE "/initlogo.rle"int load_565rle_image( char *file_name );int load_argb8888_image(char *fn);
接下来进行最后的开机动画即闪动的ANDROID字样的跟踪:
在ANDROID4.2中,ANDROID的系统登录动画由前景和背景两站PNG图片组成,在我的系统中,这两张图片位于 /home2/zfl/a20-4.2/android/frameworks/base/core/res/assets/images 如图:
前景图片(android-logo-mask.png)中的ANDROID文字部分镂空,如图:
背景图片则是简单的纹理,如图:
前景图片在最上层显示,程序代码控制背景图片的连续滚动,透过前景图片文字镂空部分进行滚动进而显示纹理,从而显示动画效果。
其相关的代码在:
/home2/zfl/a20-4.2/android/frameworks/base/cmds/bootanimation/BootAnimation.cpp
/home2/zfl/a20-4.2/android/frameworks/base/include/androidfw/AssetManager.h
/home2/zfl/a20-4.2/android/frameworks/base/include/androidfw/Asset.h
.............................待
- android4.2 开机动画源码跟踪
- Android4.2锁屏源码跟踪
- android4.04 修改开机动画
- android4.0开机动画加音乐
- Android 开机动画源码分析
- Android4.0.3修改启动动画和开机声音
- Android4.0.3修改启动动画和开机声音[转载]
- Android4.0.3修改启动动画和开机声音
- android4.0.3 修改启动动画和开机声音
- android4.0.3 修改启动动画和开机声音
- android4.0.3 修改启动动画和开机声音
- Android4.0.3 修改启动动画和开机声音
- android4.0.3 修改启动动画和开机声音
- Android4.0.3修改启动动画和开机声音
- android4.0.3 修改启动动画和开机声音
- android4.0.3 修改启动动画和开机声音
- android4.0.3 修改启动动画和开机声音
- android4.0.3 修改启动动画和开机声音
- 试试看
- Groovy 学习1
- 微软必应搜索公开PK谷歌
- 跟Google学习Android开发起始篇文章索引(包括整章PDF下载)
- Teamviewer 开机启动
- android4.2 开机动画源码跟踪
- *** No rule to make target `xxx1', needed by `xxx2'. Stop
- SqlServer和Oracle中一些常用的sql语句4 局部/全局变量
- Java 之 内联函数
- 反向代理负载均衡
- SqlServer重建索引
- 64 位 win7 配置 PLSQL Developer
- [OpenGL]OpenGl中的纹理
- Linux 终端中常用的快捷键(转)