3.1.3 淡入淡出动画

帧动画采取后面一帧直接覆盖前面一帧的显示方式,这在快速轮播时没有什么问题,但是如果每帧的间隔时间比较长(比如超过0.5秒),那么两帧之间的画面切换就会很生硬,直接从前一帧变成后一帧会让人觉得很突兀。为了解决这种长间隔切换图片在视觉方面的问题,Android提供了过渡图形TransitionDrawable处理两张图片之间的渐变显示,即淡入淡出的动画效果。

过渡图形同样需要宿主视图显示该图形,即调用图像视图的setImageDrawable方法进行图形加载操作。下面是TransitionDrawable的常用方法:

  • 构造方法:指定过渡图形的图形数组。该图形数组大小为2,包含前后两张图形。
  • startTransition:开始过渡操作。这里需要先设置宿主视图再进行渐变显示。
  • resetTransition:重置过渡操作。
  • reverseTransition:倒过来执行过渡操作。

下面是使用过渡图形的代码片段:

(完整代码见animation\src\main\java\com\example\animation\FadeAnimActivity.java)

过渡图形的播放效果如图3-8和图3-9所示。图3-8为开始转换不久的画面,此时仍以第一张图片为主;图3-9为转换将要结束的画面,此时已经基本过渡到第二张图片。

图3-8 淡入淡出动画开始播放

图3-9 淡入淡出动画即将结束