Android App开发进阶与项目实战
上QQ阅读APP看书,第一时间看更新

4.1.2 实现波浪起伏动画

贝塞尔曲线表面上只是一条静止的曲线,不过通过持续改变曲线的起点位置就能实现曲线的波动特效。比如有人拿着一根绳子,上下反复抖动绳子,这根绳子便会波动展开。波浪起伏动画的实现原理与之类似,都是不断移动曲线的起点位置,波浪曲线便平移而去。

波浪动画的实现步骤简述如下:

重写自定义视图的onDraw方法,根据起点、终点以及控制点勾勒出一段波浪曲线。

初始化一个属性动画,随着时间推移逐渐挪动起点的坐标位置,并刷新视图界面。

提供开始播放动画和停止播放动画两个方法。

下面是集成了贝塞尔曲线的波浪视图的示例代码:

(完整代码见ebook\src\main\java\com\example\ebook\widget\WaveView.java)

然后在布局文件中添加WaveView节点,并在对应的活动页面调用startAnim方法播放动画。运行并测试该App,可观察到波浪起伏的动画效果如图4-5和图4-6所示。图4-5为波浪动画开始播放的画面,图4-6为波浪动画播放一阵的画面。

图4-5 波浪动画开始播放的画面

图4-6 波浪动画播放一阵的画面