public class WaterView extends View {
int w = 0;
int hh = 0;
int h = 0;
Paint paint = new Paint();
public WaterView(Context context) {
super(context);
}
public WaterView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
paint.setStyle(Paint.Style.STROKE);
paint.setColor(Color.RED);
}
public WaterView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
hh = getMeasuredHeight();
w = getMeasuredWidth();
h = hh/2;
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Path path = new Path();
path.moveTo(-w + x , h);
path.quadTo(-w/4*3 + x ,h-60 , -w/2 + x , h );
path.quadTo(-w/4 + x , h + 60 , 0 + x ,h);
path.quadTo(w/4 + x, h-60 , w/2 + x , h);
path.quadTo(w/4*3 + x , h + 60 ,w + x ,h );
path.lineTo(w , hh);
path.lineTo(0,hh);
path.close();
canvas.drawPath(path , paint);
if(isgoing){
startAnimation();
}
}
int x = 0;
boolean isgoing = true;
ValueAnimator mAnimator;
private void startAnimation() {
isgoing = false;
mAnimator = ValueAnimator.ofInt(0, w);
mAnimator.setDuration(5000);
mAnimator.setRepeatCount(ValueAnimator.INFINITE);
mAnimator.setInterpolator(new LinearInterpolator());
mAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
x = (int) animation.getAnimatedValue();
// Log.e("tag" ,"xxxxx = " + x);
postInvalidate();
}
});
mAnimator.start();
}
}
贝塞尔曲线
最新推荐文章于 2024-08-16 15:33:06 发布