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.Paint; import android.graphics.Path; 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 dst; private Path path; private PathMeasure pathMeasure; private float length; private float mAnimationValue; 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); dst=new Path(); path=new Path(); path.addCircle(500,500,100, Path.Direction.CW); pathMeasure=new PathMeasure(); pathMeasure.setPath(path,true); length=pathMeasure.getLength(); mAnimationValue=0.4f; ValueAnimator animator=ValueAnimator.ofFloat(0,1); animator.setInterpolator(new LinearInterpolator()); animator.setRepeatCount(ValueAnimator.INFINITE); animator.setDuration(1000); animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator animation) { mAnimationValue=(float)animation.getAnimatedValue(); invalidate(); } }); animator.start(); } public MyPathTracingView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); dst.reset(); dst.moveTo(500,500); float stop=length*mAnimationValue; float start=(float)(stop -((0.5 - Math.abs(mAnimationValue-0.5))*length)); pathMeasure.getSegment(start,stop,dst,true); canvas.drawPath(dst,paint); } @Override public void onClick(View v) { } }
自定义view 进度圈
最新推荐文章于 2023-09-08 17:15:43 发布