先上图,然后我在讲,老规矩,没图说个几把!
看完效果图,我们就开始构思。我是先在草稿纸上面画了一下大概的思路
从图上可知,水波纹效果是一个个同心圆进行距离按照时间进行缩放形成的效果,然后我根据这个思路,写了这个自定义的view
我们先新建一个paint画笔画中心那个圆,然后定义默认半径为100,然后再定义一个画笔画缩放的同心圆,定义X轴和Y轴的位置,接着我们定义同心圆的圆心距,然后再定义最大的那个圆的半径。缩放的圆的半径是一个整形集合,透明值也是一个整形集合,所以我们要定义两个List集合存放我们要的值
新建构造方法:在里面定义我们需要的东西,画笔,颜色,抗锯齿,里面的方法和相关的函数我也做了注释
我们现在在OnSizeChanged里面定义X,Y轴的位置,主要是通过用户对其进行赋值,我们进行动态获取值,进行位置的固定
我们主要是通过一个for循环,达到颜色和圆半径大小递增的效果
onDraw方法里面,我们通过for循环里面的i值,达到alpha值的变化,并且同时改变同心圆的大小。当然,同心圆的数量有固定,最大为8个,超过8个就移除刚开始的那个,紧接着又产生同心圆,接着绘制,然后通过drawCircle方法进行圆心和半径,颜色的绘制,启动线程,进行延迟更新postInvalidateDelayed方法进行延迟绘制,达到渐变效果
我现在给出资源文件样式的代码:
以上是我的个人想法和思路,当然,如果你有更好的想法或者思路,我们可以一起讨论!!!
毕竟我还是一个大二的学生而已,能力和知识有限,没办法做出什么高大上的效果!!如果有什么错误,请大佬们纠正!!