为视图添加丝滑的水波纹

由于前段时间发现自己在Github上的这份代码被简书上某用户直接拷贝来发表了,而又并没有注明代码出处,于是决定还是自己着手写一篇好了。

先看一下最终效果图:

112082494-5d23f55c1b8751b5

首先我们可以把如此丝滑的水波纹拆分一下下:

  • 一条规律的曲线。
  • 曲线匀速向右移动。
  • 曲线下方的位置用颜色填充。

于是先来一条曲线吧。

对于需要产生波动如此规律的曲线,我们首先想到的应该就是三角函数了。

例如我们熟悉的正弦曲线:

122082494-6981a93684028de1

及其公式:

f(x) = Asin(ωx+φ)+k

而SDK也为我们提供了这个正弦函数:

于是乎通过一个循环就能轻易地获取到这条曲线了:

让它动起来

我们需要在屏幕每次刷新的时候进行一次曲线的绘制,让它不断地刷新。

而根据上面的正弦函数公式,曲线要向右移,其φ值就需要变小。于是在 currentWave 方法每次调用的时候,offsetX均减去同一个固定值,以实现匀速的运动。

涂个颜色

连个线,形成封闭空间:

再填个色:

好了。

至于最后的渐变消失略简单就不说了。有兴趣的直接到文末下载完整代码吧~

多扯两句

这水波纹并不限定在拖动过后才能波动,而是随时想动就动、想停就停。

于是最近我想到了一些新玩法,例如用作刷新等待视图。

132082494-b1c060d6a954c8ed

更多的玩法就自行发掘吧~

最后

完整代码呈上:

Github: WXWaveView

其使用方法在该页面中会有介绍。

喜欢的欢迎给个star~玩得开心哈。

1 收藏 评论

关于作者:Welkin

简介还没来得及写 :) 个人主页 · 我的文章 · 1 ·    

相关文章

可能感兴趣的话题



直接登录
跳到底部
返回顶部