package com.sero.vk.signNow.ViewBezier;
import android.animation.ValueAnimator;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.DashPathEffect;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.PathEffect;
import android.graphics.PathMeasure;
import android.util.AttributeSet;
import android.view.View;
import android.view.animation.LinearInterpolator;
/**
* Created by Administrator on 2017/3/1.
*/
public class MyPathTracingView extends View implements View.OnClickListener {
private Paint paint;
private Path path;
private PathMeasure pathMeasure;
private float length;
private float mAnimationValue;
private PathEffect pathEffect;
public MyPathTracingView(Context context) {
super(context);
}
public MyPathTracingView(Context context, AttributeSet attrs) {
super(context, attrs);
paint = new Paint(Paint.ANTI_ALIAS_FLAG);
paint.setStrokeWidth(3);
paint.setStyle(Paint.Style.STROKE);
paint.setColor(Color.RED);
path = new Path();
path.moveTo(100, 100);
path.lineTo(100, 500);
path.lineTo(400, 300);
path.close();
pathMeasure = new PathMeasure();
pathMeasure.setPath(path,true);
length = pathMeasure.getLength();
ValueAnimator animator = ValueAnimator.ofFloat(1, 0);
animator.setInterpolator(new LinearInterpolator());
animator.setRepeatCount(ValueAnimator.INFINITE);
animator.setDuration(2000);
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
mAnimationValue = (float) animation.getAnimatedValue();
pathEffect = new DashPathEffect(new float[]{length, length},
length * mAnimationValue);
paint.setPathEffect(pathEffect);
invalidate();
}
});
animator.start();
}
public MyPathTracingView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawPath(path, paint);
}
@Override
public void onClick(View v) {
}
}