通过自定义view实现了一个水滴滴落到水波面,溅起水花并且水波流动上涨的进度条控件。之前看到过好多水波流动的进度条,感觉欠缺些东西,就想到了水滴到水平面,溅起水花然后水流动上涨的进度条效果,于是自己动手写了出来。效果如下,视频录制有些卡顿,实际会流畅很多。
一,用法:
1,布局文件中添加WaveProgressView,circleColor属性为圆环颜色,waterColor属性为水波水滴的颜色,progress属性为初始的进度
<com.yhongm.wave_progress_view.WaveProgressView
android:id="@+id/wave_progress_view"
android:layout_width="300dp"
android:layout_height="300dp"
android:layout_centerInParent="true"
app:circleColor="#e38854"
app:progress="0"
app:waterColor="#5488e3" />
2, WaveProgressView.setProgress()方法设置当前的进度
二,本文实现的逻辑:
1,画水波流动,通过三阶贝塞尔曲线画波形,通过不断的改变waveOffsetX和waveOffsetY的值实现流动的效果
/**
* 生成水波流动
*
* @param begin 水波形开始的位置
* @param waveLength 水波的长度
* @param waveOffsetX 水波水平的偏移
* @param waveOffsetY 水波垂直方向的偏移
* @return
*/
private Path getWavePath(float begin, int waveLength, int waveOffsetX, int waveOffsetY) {
Path mPath = new</