如何用ae做mg动画 ae怎么制作mg动画

35白皮书 2023-01-12

1.概述

2. Apng动画播放流程

Apng动画播放流程包括Apng解析和Apng渲染两个过程Apng解析主要有两种方法下面我们将会介绍而Apng渲染主要包括三个步骤:消除(dispose)、合成(blend)、绘制(draw)由此得到Apng动画播放流程图如下:

Apng动画播放流程

3. Apng的解析

Apng的解析主要是将Apng文件转化成Apng序列帧Frame-n从上面的流程图可知Apng文件的解析列出了两种方案下面来分别说说:

1)Apng文件首先经过一个解压(ApngExact)的过程生成png序列帧保存在本地然后经过加载(LoadPng)处理生成序列帧Frame-n。假设Apng动画文件总共有90帧那么经过ApngExact处理后会生成90张png序列帧保存在本地每帧通过LoadPng处理生成Bitmap并供后面的Apng渲染使用。

2)Apng是一个独立的文件我们自己编写读取Apng文件的代码类:ApngReader当渲染第i帧时通过ApngReader直接获取第i帧的Bitmap。

比较:

1)方案一是将Apng文件全部解压成png序列图片保存在本地方案二是把Apng文件当做一个整体去处理需要第几帧直接读取第几帧并将该帧以Bitmap的形似保存到内存。

2)方案一解压得到的png图片在后面的渲染中需要转化成Bitamp而方案二直接就获取了第几帧的Bitmap相比于方案一方案二减少了一个从SD卡读取png文件的操作。

4. Apng的渲染

方案一的具体实现大家可以参考github上面的一个项目apng-view下面我们来讲讲方案二的具体实现即ApngReader的具体实现。

1) 解析Apng的每一帧我们是将整个文件放到一个buffer里面并且通过RandomAccessFile、MappedByteBuffer来读取Apng的每一帧ApngReader的构造函数如下:

下面来看看读取每一帧的方法:

2) Apng的消除操作Apng的消除操作是在ApngFrameRender的render方法做的方法如下:

dispose(ApngFrame frame)方法如下:

3) Apng的合成操作Apng的合成操作是在每一帧经过dispose之后做的具体方法是blend(ApngFrame frame, Bitmap frameBmp)代码如下:

4) Apng的绘制Apng的每一帧经过消除、合成操作之后就可以在View上面draw具体代码如下:

实例我们是在SurfaceView上面来绘制Apng的每一帧例子如下:

Activity代码:

Layout代码:

我们把一张Apng图片放到Asset目录下通过ApngSurfaceView来播放。

5. 说明

例子演示: