@Override public void draw(Canvas canvas) { final Rect bounds = getBounds(); final boolean isRtl = isLayoutRtl(); final float canvasRotate = lerp(isRtl ? -180 : 0, isRtl ? 0 : 180, mProgress); mPath.rewind(); for(int i = 0; i < mCurrent.size(); i++) { Bezier current = mCurrent.get(i); lerp(mStart.get(i), mEnd.get(i), mCurrent.get(i), mProgress); current.addTo(mPath); } canvas.save(); canvas.translate(bounds.centerX(), bounds.centerY()); if (mSpin) { canvas.rotate(canvasRotate * (isRtl ? -1 : 1)); } else if (isRtl) { canvas.rotate(180); } canvas.drawPath(mPath, mPaint); canvas.restore(); }