当前位置: 首页> 科技> 数码 > Android开机动画压缩包zip,自制开机动画(基于Android10.0.0-r41)

Android开机动画压缩包zip,自制开机动画(基于Android10.0.0-r41)

时间:2025/7/11 8:14:47来源:https://blog.csdn.net/weixin_46039528/article/details/139485366 浏览次数:0次

文章目录

  • Android开机动画压缩包zip,自制开机动画
    • 1.Android加载压缩包原理
    • 2.自制开机动画

Android开机动画压缩包zip,自制开机动画

1.Android加载压缩包原理

这里有个md文件我们看下

在这里插入图片描述

核心部分,

首先要创建一个文件叫做desc.txt,这是规定的,

## desc.txt formatThe first line defines the general parameters of the animation://宽高,fps帧率WIDTH HEIGHT FPS* **WIDTH:** animation width (pixels)* **HEIGHT:** animation height (pixels)* **FPS:** frames per second, e.g. 60It is followed by a number of rows of the form://TYPE 是一个字符 ,是一个格式,COUNT多少次要运行bootanimation PAUSE是否延迟暂停一帧,PATH 0-4
//TYPE COUNT PAUSE PATH这四个参数都要写上TYPE COUNT PAUSE PATH [#RGBHEX [CLOCK1 [CLOCK2]]]* **TYPE:** a single char indicating what type of animation segment this is://启动结束会被打断,+ `p` -- this part will play unless interrupted by the end of the boot//无论如何都不会被打断+ `c` -- this part will play to completion, no matter what//0代表直到开机boot完成为止* **COUNT:** how many times to play the animation, or 0 to loop forever until boot is complete* **PAUSE:** number of FRAMES to delay after this part ends* **PATH:** directory in which to find the frames for this part (e.g. `part0`)* **RGBHEX:** _(OPTIONAL)_ a background color, specified as `#RRGGBB`
//坐标参数clock* **CLOCK1, CLOCK2:** _(OPTIONAL)_ the coordinates at which to draw the current time (for watches):+ If only `CLOCK1` is provided it is the y-coordinate of the clock and the x-coordinatedefaults to `c`+ If both `CLOCK1` and `CLOCK2` are provided then `CLOCK1` is the x-coordinate and `CLOCK2` isthe y-coodinate+ Values can be either a positive integer, a negative integer, or `c`- `c` -- will centre the text- `n` -- will position the text n pixels from the start; left edge for x-axis, bottom edgefor y-axis- `-n` -- will position the text n pixels from the end; right edge for x-axis, top edgefor y-axis- Examples:* `-24` or `c -24` will position the text 24 pixels from the top of the screen,centred horizontally* `16 c` will position the text 16 pixels from the left of the screen, centredvertically* `-32 32` will position the text such that the bottom right corner is 32 pixels aboveand 32 pixels left of the edges of the screenThere is also a special TYPE, `$SYSTEM`, that loads `/system/media/bootanimation.zip`
and plays that.

图片路径part0,表示图片文件夹,里面都是一张张的图片文件

## zipfile pathsThe system selects a boot animation zipfile from the following locations, in order:/system/media/bootanimation-encrypted.zip (if getprop("vold.decrypt") = '1')/system/media/bootanimation.zip/oem/media/bootanimation.zip## zipfile layoutThe `bootanimation.zip` archive file includes:desc.txt - a text filepart0  \part1   \  directories full of PNG frames...     /partN  /

如果我们预制了zip的文件,那么代码就会走movie

在这里插入图片描述

加载动画,解析zip里面的文件

在这里插入图片描述

BootAnimation::Animation* BootAnimation::loadAnimation(const String8& fn)
{if (mLoadedFiles.indexOf(fn) >= 0) {SLOGE("File \"%s\" is already loaded. Cyclic ref is not allowed",fn.string());return nullptr;}ZipFileRO *zip = ZipFileRO::open(fn);if (zip == nullptr) {SLOGE("Failed to open animation zip \"%s\": %s",fn.string(), strerror(errno));return nullptr;}Animation *animation =  new Animation;animation->fileName = fn;animation->zip = zip;animation->clockFont.map = nullptr;mLoadedFiles.add(animation->fileName);//解析desc.txt文件,parseAnimationDesc(*animation);if (!preloadZip(*animation)) {return nullptr;}mLoadedFiles.remove(fn);return animation;
}

读取描述文件

在这里插入图片描述

这四个参数是必须要写的

在这里插入图片描述

把文件夹的每一帧图片加载进来,

在这里插入图片描述

然后就到一个关键方法,播放动画。

在这里插入图片描述

他会去执行每一个part文件夹,一帧一帧的绘制图片纹理。

在这里插入图片描述

2.自制开机动画

准备资源

在这里插入图片描述

编写desc.txt文件规则

第一行是宽高,帧率fps

有多少个part文件夹就写多少行数,

c 无论如何都会执行完当前的这个part部分,保证动画的连续性,1 循环一次,只播放一次, 0 停留的帧数,

#ffee00代表颜色值,c c代表位置,横纵坐标,都是center居中。

1080 360 60
c 1 0 part0 #ffee00 c c
c 0 0 part1 #ffee00 c c
c 1 0 part2 #ffee00 c c
c 1 1 part3 #ffee00 c c
c 1 0 part4 #ffee00 c c

打包zip的压缩包

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

执行命令

如下图

在这里插入图片描述

预制到/system/media

把 bootanimation.zip 动画文件移动到 我们自定义的product 文件中。

在这里插入图片描述

配置文件 test.mk中添加如下内容

PRODUCT_COPY_FILES += \$(LOCAL_PATH)/bootanimation.zip:/system/media/bootanimation.zipPRODUCT_ARTIFACT_PATH_REQUIREMENT_WHITELIST +=\ /system/media/bootanimation.zip

在这里插入图片描述

然后测试运行
在这里插入图片描述

关键字:Android开机动画压缩包zip,自制开机动画(基于Android10.0.0-r41)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: