@Override public void draw(@NonNull Canvas canvas) { super.draw(canvas); float x = (mDrawRect.width() - mThumbRadius * 2) * mThumbPosition + mDrawRect.left + mThumbRadius; if (mIsRtl) x = 2 * mDrawRect.centerX() - x; float y = mDrawRect.centerY(); getTrackPath(x, y, mThumbRadius); mPaint.setColor( ColorUtil.getMiddleColor(getTrackColor(false), getTrackColor(true), mThumbPosition)); mPaint.setStyle(Paint.Style.FILL); canvas.drawPath(mTrackPath, mPaint); if (mShadowSize > 0) { int saveCount = canvas.save(); canvas.translate(x, y + mShadowOffset); canvas.drawPath(mShadowPath, mShadowPaint); canvas.restoreToCount(saveCount); } mPaint.setColor( ColorUtil.getMiddleColor(getThumbColor(false), getThumbColor(true), mThumbPosition)); mPaint.setStyle(Paint.Style.FILL); canvas.drawCircle(x, y, mThumbRadius, mPaint); }