Android开机动画、logo、字样的定制过程【转】
本文转载自:http://blog.csdn.net/yinhaide/article/details/43668401
Android开机画面总共有三屏
一、第一屏:开机logo
1、选张png格式的图片,在Linux任意下执行(安装工具):
sudo apt-get install pnmtoplainpm
2、在所要定制logo的pngtopnm logo.png目录执行(转换成pnm格式):
pngtopnm logo.png > logo_linux.pnm
3、再执行(转化成224的pnm图片):
pnmquant 224 logo_linux.pnm > logo_linux_clut224_formal.pnm
4、执行(转换成ppm格式):
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目录重新编译内核
cd kernel
make kernel.img
二、第二屏:Android字样
if( load_565rle_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);
}
} :
到这里大家就知道怎么修改了吧。但是这里要提到的一点就是,上面的代码片段有一个if语句,就是先检测在文件系统根目录下是否存在要实现的开机动画,如果不存在的话,那么就显示这个文本信息代替,所以,这个阶段是可以实现图片的显示的,而且图片的格式是.rle格式的。如果不存在就显示文本,所以你可以选择系那是自己的文字,也就是修改“A N D R O I D”字样啊。也可以选择显示图片,但是要自己在文件系统的根目录下提供提片,具体的图片的名字在init.h文件中定义:
#define INIT_IMAGE_FILE "/initlogo.rle"
int load_565rle_image( char *file_name );
看到上面的宏定义大家就懂了吧,至于怎么制作rle格式的,这个使用一些软件就好。
三、第三屏:开机动画
bool BootAnimation::android()
{
initTexture(&mAndroid[0], mAssets, "images/android-logo-mask.png");
initTexture(&mAndroid[1], mAssets, "images/android-logo-shine.png");
}
这就是设置显示的前景图片和背景图片。接着看还有如下代码:
#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
至此,自定义开机画面就完成了!
(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所在目录执行:
zip -0 bootanimation.zip android1/*png android2/*png desc.txt
4、将bootanimation.zip拷贝到自定义media目录下,修改自己的makefile文件,添加以下类似代码:
PRODUCT_COPY_FILES += \$(call find-copy-subdir-files,*,$(LOCAL_PATH)/media,system/media)
5、重新编译
Android开机动画、logo、字样的定制过程【转】的更多相关文章
- Android 开机动画源码分析
Android系统在启动SystemServer进程时,通过两个阶段来启动系统所有服务,在第一阶段启动本地服务,如SurfaceFlinger,SensorService等,在第二阶段则启动一系列的J ...
- OpenGL—Android 开机动画源码分析一
.1 Android开机动画实现方式目前实现Android开机动画的方式主要是逐帧动画和OpenGL动画. ?逐帧动画 逐帧动画是一种常见的动画形式(Frame By Frame),其原理是在“连续的 ...
- Android开机动画启动流程
android开机动画启动流程 从android的Surface Flinger服务启动分析知道,开机动画是在SurfaceFlinger实例通过调用startBootAnim()启动的. 下面我 ...
- android开机动画(bootanimation)
Android开机动画有两种修改方法,android 2.0及之后,使用bootanimation程序显示开机画面,如需修改开机画面,不用修改代码,只需按格式要求做bootanimation.zip包 ...
- android logo:内核、android开机动画【转】
本文转载自: 关键词:Android 开机logo 开机动画 initlogo.rle bootanimation desc.txt 平台信息:内核:linux2.6/linux3.0系统:a ...
- Android 开机动画启动过程详解
Android 开机会出现3个画面: 1. Linux 系统启动,出现Linux小企鹅画面(reboot)(Android 1.5及以上版本已经取消加载图片): 2. Android平台启动初始化,出 ...
- OpenGL—Android 开机动画源码分析二
引自http://blog.csdn.net/luoshengyang/article/details/7691321/ BootAnimation类的成员函数的实现比较长,我们分段来阅读: 第三个开 ...
- Android开机动画
Android系统的开机动画可分为三个部分,kernel启动,init进程启动,android系统服务启动.这三个开机动画都是在一个叫做 帧缓冲区(frame buffer)的硬件设备上进行渲染绘制的 ...
- Nexus5x 修改Android开机动画
1.制作帧动画 这里随便从网上找了一个gif图片,导入PS中,打开后会形成很多帧图层,选择导航栏中的文件->脚本->将图层导出到文件可以将所有图层导出来.要注意文件命名,Android会按 ...
随机推荐
- php数据库增删改查
首先建立一个数据库db_0808,将db_0808中表格student导入网页. CURD.php <!DOCTYPE html> <html lang="en" ...
- VHDL之concurrent之generate
GENERATE It is another concurrent statement (along with operators and WHEN). It is equivalent to the ...
- MyEclipse 连接Oracle数据库(初学者必看)
前言:刚接触Oracle数据库,便有一个需求,编写控制台程序,实现主人登录.数据库为Oracle.下面详细介绍一下MyEclipse 连接Oracle数据库. package DbHelp; im ...
- SLAM: SLAM的发展历程(WIKI)
参考维基百科: https://en.wikipedia.org/wiki/Simultaneous_localization_and_mapping 你们叫他SLAM,我还是习惯叫他三维重建.... ...
- 使用NDK编译VTK
VTK提供了对安卓的CMAKE编译支持,其介绍文件在源代码根目录下的 "/cmake/android.toolchain.cmake". 对Wndows的编译自持描述为: 注意:但 ...
- (转)C#开发微信门户及应用(6)--微信门户菜单的管理操作
http://www.cnblogs.com/wuhuacong/p/3701961.html 前面几篇继续了我自己对于C#开发微信门户及应用的技术探索和相关的经验总结,继续探索微信API并分享相关的 ...
- Ad hoc polymorphism
与面向对象中的接口类或抽象类中定义的函数组类似: 函数的具体执行依赖与函数医用的类型. In programming languages, ad-hoc polymorphism[1] is a ki ...
- 微信小程序 请求超时处理
1.在app.json加入一句 "networkTimeout": { "request": 10000 } 设置超时时间,单位毫秒 2.请求 wx.reque ...
- BZOJ 4817: [Sdoi2017]树点涂色 LCT+Access的性质+DFS序+线段树
Code: #include<bits/stdc++.h> #define maxn 200003 #define inf -1000000 using namespace std; vo ...
- 基于分布式框架 Jepsen 的 X-Cluster 正确性测试
转自:https://mp.weixin.qq.com/s/iOe1VjG1CrHalr_I1PKdKw 原创 2017-08-27 严祥光(祥光) 阿里巴巴数据库技术 1 概述 AliSQL X-C ...