安卓系统修改开机动画,关机动画

简介: 笔记

开机动画


两种开机动画

关于安卓动画的研究主要在frameworks/base/cmds/bootanimation/BootAnimation.cpp中。

安卓系统默认的开机动画(谷歌)的动画是显示android字样。如下:

bool BootAnimation::threadLoop()
{
    bool r;
    if (mAndroidAnimation) {
        //如果没有bootanimation.zip则执行android原生动画
        r = android();
    } else {
        //否则执行自定义动画
        r = movie();
    }
    ...
    return r;
}

android()

代码如下:

bool BootAnimation::android()
{
    // SPRD: update android bootanimation resource @{
    if (mWidth <= 160) {
        initTexture(&mAndroid[0], mAssets, "images/welcome_rh.bmp");
        initTexture(&mAndroid[1], mAssets, "images/welcome_rh.bmp");
    } else if (mWidth <= 240) {
        initTexture(&mAndroid[0], mAssets, "images/welcome_rh.bmp");
        initTexture(&mAndroid[1], mAssets, "images/welcome_rh.bmp");
    } else {
        initTexture(&mAndroid[0], mAssets, "images/welcome_rh.bmp");
        initTexture(&mAndroid[1], mAssets, "images/welcome_rh.bmp");
    }
...
}

可以看到,原生动画是播放的两张图片,根据屏幕宽度来决定使用不同分辨离线率的图片。

该图片资源加载的是frameworks/base/core/res/assets/images下面的,所以如果需要修改这种开机动画的图片,那么就要把图片添加到该目录下,然后在android()方法中调用该图片即可。


movie()

该方法走的是自定义的开机动画,格式为bootanimation.zip。

  • system/media/bootanimation.zip,放到该目录下,动画可以执行到开机完成
  • data/local/bootanimation.zip,该到该目录下,动画只能执行10S。
    一般情况下我们放在system/media下面。


bootanimation.zip的制作

要注意以下几点:

  • 图片格式必须为png
  • 图片命名要有顺序
  • 压缩时要选择压缩方式为存储,即压缩比为0


bootanimation.zip的内容格式

包括part0,part1两个文件夹和一个desc.txt文件。

part0--一般用来存放播放一次的图片

part1--一般用来存放循环播放的图片

desx.txt--图片播放的配置文件


desc.txt

格式如下:

1080 1920 22
p 1 0 part0
p 0 0 part1

1080 1920分别为屏幕像素宽高,22为播放购帧率

p表示播放,1--播放一次,0--播放时动画线程休眠时间,一般为0,part0--指定为part0文件夹

p表示播放,0--循环播放,0--播放时动画线程休眠时间,一般为0,part1--指定为part1文件夹

保存的时候要注意为ANSI格式的,可以使用Notepad++来创建,默认为ANSI。


打包

如果是windows下面打包,注意选择打包方式为存储

5.png

如果是linux,可以执行如下命令(par0,part1文件夹和desc.txt在同一文件夹下):

zip -r -X -Z store bootanimation.zip part*/*.png desc.txt

到这里开机动画文件就做好了,再把bootanimatin.zip拷贝到system/meida或者data/local下面就可以了。

开机铃声和关机动画和关机铃声后续更新。。。

如果错误,欢迎指定,不胜感谢!

目录
相关文章
|
调度
MacBookPro外接显示器程序全屏状态,另一个显示器就黑屏
MacBookPro外接显示器程序全屏状态,另一个显示器就黑屏
703 0
MacBookPro外接显示器程序全屏状态,另一个显示器就黑屏
|
6月前
|
iOS开发
iOS16.1系统由于一个系统弹窗无法取消,导致屏幕卡死无法关机问题及解决方案
iOS16.1系统由于一个系统弹窗无法取消,导致屏幕卡死无法关机问题及解决方案
801 0