package com.tomandjerry.coolanim.lib.letter; import android.animation.ValueAnimator; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.RectF; /** * Created by Weiwu on 16/2/19. */ public class OLetter extends Letter { private Paint mPaint; private RectF mRectF; //启动角度 private int mStartAngle; //偏移角度 private int mSweepAngle; private ValueAnimator mCirAnimator; public OLetter(int x, int y) { super(x, y); mPaint = new Paint(Paint.ANTI_ALIAS_FLAG); mPaint.setColor(Color.WHITE); mPaint.setStyle(Paint.Style.FILL); mRectF = new RectF(mCurX - 60, mCurY - 60, mCurX + 60, mCurY + 60); } @Override public void startAnim() { mCirAnimator = ValueAnimator.ofFloat(0, 1).setDuration(mDuration); mCirAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator animation) { float factor = (float) animation.getAnimatedValue(); if (factor < 0.5f) { mStartAngle = (int) (90 * factor); mSweepAngle = (int) (180 * factor); } else { float zoroToOne = (float) ((factor - 0.5) * 2); mStartAngle = (int) (45 + 135 * zoroToOne); mSweepAngle = (int) (90 + 270 * zoroToOne); } } }); mCirAnimator.start(); } @Override public void drawSelf(Canvas canvas) { canvas.drawArc(mRectF, mStartAngle, mSweepAngle, false, mPaint); } }