![Android App开发进阶与项目实战](https://wfqqreader-1252317822.image.myqcloud.com/cover/109/44510109/b_44510109.jpg)
上QQ阅读APP看书,第一时间看更新
4.1.2 实现波浪起伏动画
贝塞尔曲线表面上只是一条静止的曲线,不过通过持续改变曲线的起点位置就能实现曲线的波动特效。比如有人拿着一根绳子,上下反复抖动绳子,这根绳子便会波动展开。波浪起伏动画的实现原理与之类似,都是不断移动曲线的起点位置,波浪曲线便平移而去。
波浪动画的实现步骤简述如下:
重写自定义视图的onDraw方法,根据起点、终点以及控制点勾勒出一段波浪曲线。
初始化一个属性动画,随着时间推移逐渐挪动起点的坐标位置,并刷新视图界面。
提供开始播放动画和停止播放动画两个方法。
下面是集成了贝塞尔曲线的波浪视图的示例代码:
(完整代码见ebook\src\main\java\com\example\ebook\widget\WaveView.java)
![](https://epubservercos.yuewen.com/0C084D/23721623101012206/epubprivate/OEBPS/Images/Figure-P127_17442.jpg?sign=1739262447-fVfyUjB0gXUv5coYjFQ9IxSQF3SnlUdM-0-4cce98264f902a49da87e1e61ff5fab3)
然后在布局文件中添加WaveView节点,并在对应的活动页面调用startAnim方法播放动画。运行并测试该App,可观察到波浪起伏的动画效果如图4-5和图4-6所示。图4-5为波浪动画开始播放的画面,图4-6为波浪动画播放一阵的画面。
![](https://epubservercos.yuewen.com/0C084D/23721623101012206/epubprivate/OEBPS/Images/Figure-P128_8326.jpg?sign=1739262447-z9yR9qHiSlCIwFQoNd1UICqUfUXSF494-0-4bd156ca9ab5e84e1c0a33a8e00f9627)
图4-5 波浪动画开始播放的画面
![](https://epubservercos.yuewen.com/0C084D/23721623101012206/epubprivate/OEBPS/Images/Figure-P128_8327.jpg?sign=1739262447-osEQYzh24SSQFt0Kbf28kNLl5UPhlg2I-0-d03268cbb8e826611c6361780a372584)
图4-6 波浪动画播放一阵的画面