项目中要用到的一个动画,比较简单,记录一下
public class AnimView extends View { private int mStop = 90; private int mStart = 90; private Paint mPaint; private static final int TARGET_DEGREE = 270; private boolean mStartCtrl = true; public AnimView(Context context) { super(context); init(); } public AnimView(Context context, @Nullable AttributeSet attrs) { super(context, attrs); init(); } public AnimView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); init(); } private void init() { mPaint = new Paint(); mPaint.setAntiAlias(true); mPaint.setColor(0xffffffff); mPaint.setStyle(Paint.Style.STROKE); mPaint.setStrokeWidth(DensityUtil.dp2px(2f)); } private void drawCircle(Canvas canvas, int viewWidth) { mStart += mStartCtrl ? 3 : 10; mStop += mStartCtrl ? 10 : 3; mStart = mStart % 360; mStop = mStop % 360; float x = mPaint.getStrokeWidth() / 2; int swipe = mStop - mStart; swipe = swipe < 0 ? swipe + 360 : swipe; canvas.drawArc(new RectF(x, x, viewWidth - x, getHeight() - x), mStart, swipe, false, mPaint); if (swipe >= TARGET_DEGREE) { mStartCtrl = false; } else if (swipe <= 10) { mStartCtrl = true; } invalidate(); } @Override protected void onDraw(Canvas canvas) { final int viewWidth = this.getWidth(); drawCircle(canvas, viewWidth); super.onDraw(canvas); } }
效果就是Chrome浏览器上方转圈圈的效果