效果图
先上效果图
screenshot.gif
实现
WaveView的属性
WaveView的属性
Wate Level(水位) - 波浪静止时水面距离底部的高度
Amplitude(振幅) - 波浪垂直振动时偏离水面的最大距离
Wave Length(波长) - 一个完整的波浪的水平长度
Wave Shift(偏移) - 波浪相对于初始位置的水平偏移
实现思路
设想我们有一个画好波形的图片,那么我们只需要用这张图片填充(X轴方向重复,Y轴方向延伸)整个View,然后水平移动图片,就可以得到波浪效果了。
所以要做的事很简单:绘制一个波形图,填充到View里,移动波形图。
1. 绘制初始波形
private void createShader() {
...
Bitmap bitmap = Bitmap.createBitmap(getWidth(), getHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
// Draw default waves into the bitmap
// y=Asin(ωx+φ)+h
float waveX1 = 0;
final float wave2Shift = mDefaultWaveLength / 4;
final flo