本系列文章主要介绍了OPhone 2.0 SDK提供的两种实现2D动画的方式:帧动画和补间动画。文章的每个知识点都提供了精彩的实例以向读者展示2D动画的具体实现方法。通过对本系列文章的学习,读者可利用2D动画实现非常绚丽的界面效果。
相关阅读:
帧动画简介
如果读者使用过Flash,一定对帧动画非常熟悉。帧动画实际上就是由若干图像组成的动画。这些图像会以一定的时间间隔进行切换。电影的原理也有些类似于帧动画。一般电影是每秒25帧,也就是说,电影在每秒钟内会以相等的时间间隔连续播放25幅电影静态画面。由于人的视觉暂留,在这样的播放频率下,看起来电影才是连续的。在onDraw方法中使用invalidate方法不断刷新View的方式实现旋转动画。实际上,这也相当于帧动画,只是并不是利用若干静态图像的不断切换来制作帧动画,而是不断地画出帧动画中的每一帧图像。
AnimationDrawable与帧动画
OPhone中的帧动画需要在一个动画文件中指定动画中的静态图像和每一张静态图像停留的时间(单位:毫秒)。一般可以将所有图像的停留时间设为同一个值。动画文件采用了XML格式。该文件需要放在res\anim目录中。让我们先来建立一个简单的动画文件,首先在res\anim目录中建立一个test.xml文件,然后输入如下的内容:
从anim.xml文件的内容可以看出,一个标准的动画文件由一个
编写完动画文件后,就需要装载动画文件,并创建AnimationDrawable对象。AnimationDrawable是Drawable的子类,并在Drawable的基础上提供了控制动画的功能。读者可以使用如下的代码来根据test.xml文件创建AnimationDrawable对象。
通过帧动画方式播放Gif动画
OPhone SDK中播放GIF动画的类库可能是因为GIF文件版本的问题,并不能播放所有的GIF动画文件,但我们可以采用帧动画的方式来播放GIF动画。
GIF动画文件本身由多个静态的GIF图像组成,因此,可以使用图像处理软件(如FireWorks)将GIF动画文件分解成多个GIF静态图像。然后将这些文件在res\anim目录中的动画文件中定义。frame_animation.xml文件的代码如下:

图1 播放第1个动画

图2 播放第2个动画
本例的完整代码如下: