开机过程涉及到3个界面,1个是uboot界面(wvga_uboot.bmp)、1个是kernel界面(wvga_kernel.bmp),1个是android启动的动画。
1. 开机logo
因为我们显示屏分辨率480*800,所以
\mediatek\config\hsimobile77_ics2\ProjectConfig.mk下的BOOT_LOGO=wvga
可以在\mediatek\custom\common\uboot\logo看到wvga_uboot.bmp和wvga_kernel.bmp,分别是uboot阶段和kernel阶段的开机logo,我替换为其他图编./mk r ub k,然后再./mk bootimage,然后更新ub、kernel和bootimage后还是原来的开机logo,采用./mk n后全部更新就是替换后的logo了。
2. 开机动画
在Android中的开机动画有两种,一种是默认的Android文字显示,还有一种是自定义的动画。其主要实现的代码在\frameworks\base\cmds\bootanimation中。这里主要说明添加自定义的开机动画的方法:
添加自定义开机动画就是把要显示的动画的图片打包成bootanimation.zip文件。然后放到手机的“/data/local/”或“/system/media/”目录下。开机时,系统会检查这两个目录下有没bootanimation.zip文件,如果没有,则用默认的Android开机动画。
bootanimation.zip文件打包前的结构为:
(1) desc.txt
动画属性描述文件,播放控制由“desc.txt”指定,内容如下:
320 480 30
p 1 0 part0
p 0 0 part1
480 250 15
p 1 0 part0
p 0 10 part1
其中各个参数的意义为:
图1
标识符:p 是必须的。
循环次数:指该目录中图片循环显示的次数,0表示本阶段无限循环。
每秒显示的帧数:就是每秒显示的图片数量,决定每张图片显示的时间。
阶段切换间隔时间:指的是该阶段结束后间隔多长时间显示下一阶段的图片,其单位是每张图片显示的时间。
对应图片的目录:就是该阶段动画的系列图片,以图片文件目录的顺序显示动画,而且图片的格式必须要为PNG。
(2) part0文件夹
“part0”中存储动画的第一阶段的资源图片(动画是由一帧帧图片组成的)
(3) part1
“part1”存储第二阶段的资源图片,注意图片为png格式,注意图片为png格式
编译后bootanimation.zip在system/media/bootanimation.zip或者data/local/bootanimation.zip
这两处的区别在于动画放在system中动画会全部播放完,放到data中动画只播放10秒
我把bootanimation.zip拷贝在工程的资源目录\frameworks\base\data\sounds下面,修改此Android.mk文件,通过以下语句将该压缩包打到system\medial\路径下:
$(LOCAL_PATH)/bootanimation.zip:system/media/bootanimation.zip
然后再次./mk systemimage即可,并在
\out\target\product\hsimobile77_ics2\system\media目录下看到bootanimation.zip,并把它打包到system.img中。
我试着替换system/media/bootanimation.zip,开机本来是显示开机动画那段时间是黑屏,出现需要确保下面两点是正确的:
(1) bootanimation.zip文件权限
图2
这时执行的是android默认的开机动画,改为下面的权限就OK
图3
(2) 正确压缩bootanimation文件夹
我指着右键文件夹来压缩的方式开机时黑屏,改为进入此文件夹下,选择里面需要的文件压缩就OK,压缩文件名必须为bootanimation.zip,压缩文件格式为ZIP,压缩方式为“存储”,如下图。
图4
3. 系统桌面图标替换
静态壁纸
Android V2.3版本上:
替换frameworks/base/core/res/res/drawable/default_wallpaper.jpg图片
Android V4.0版本上:
替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.jpg图片
动态壁纸
修改frameworks/base/core/res/res/values/config.xml文件中
找到<string name=”default_wallpaper_component”>@null</string>
修改为
<stringname=”default_wallpaper_component”>com.android.wallpaper/.nexus.NexusWallpaper</string>
其中com.android.wallpaper/.nexus.NexusWallpaper,”/”前为包名,后为类名
备注:如果要将内置到系统中的无source code的第三方动态壁纸程序设置为默认动态壁纸,则需要知道该apk中
WallpaperService对应的类名和包名,可以通过Google提供的apk-tool工具来得到该apk的资源文件,那么就可以通过查
看AndroidManifest.xml文件去查找到对应的Wallpaper Service的类名和包名。
参考链接:
Android MTK平台修改开机动画,开机logo
Mtk Android 系统桌面图标替换
android ICS 系统启动之Logo有关学习总结
Android开机动画bootanimation.zip