private void init() {
    mWhitePaint = new Paint(Paint.ANTI_ALIAS_FLAG);
    mWhitePaint.setStyle(Paint.Style.FILL_AND_STROKE);
    mWhitePaint.setStrokeWidth(Helper.dpToPixel(0.1f, getContext()));
    mWhitePaint.setColor(Color.WHITE);

    mGreyPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
    mGreyPaint.setStyle(Paint.Style.STROKE);
    mGreyPaint.setStrokeWidth(Helper.dpToPixel(2, getContext()));
    mGreyPaint.setColor(Color.WHITE);

    mBound = new RectF();
  }
 @Override
 protected void onDraw(Canvas canvas) {
   super.onDraw(canvas);
   float mAngle = mProgress * 360f / mMax;
   canvas.drawArc(mBound, 270, mAngle, true, mWhitePaint);
   int padding = Helper.dpToPixel(4, getContext());
   canvas.drawCircle(getWidth() / 2, getHeight() / 2, getWidth() / 2 - padding, mGreyPaint);
 }
 private void updateBackgroundSize() {
   ViewGroup.LayoutParams params = mBackgroundLayout.getLayoutParams();
   params.width = Helper.dpToPixel(mWidth, getContext());
   params.height = Helper.dpToPixel(mHeight, getContext());
   mBackgroundLayout.setLayoutParams(params);
 }
 @Override
 protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
   super.onMeasure(widthMeasureSpec, heightMeasureSpec);
   int dimension = Helper.dpToPixel(40, getContext());
   setMeasuredDimension(dimension, dimension);
 }
 @Override
 protected void onSizeChanged(int w, int h, int oldw, int oldh) {
   super.onSizeChanged(w, h, oldw, oldh);
   int padding = Helper.dpToPixel(4, getContext());
   mBound.set(padding, padding, w - padding, h - padding);
 }
 public void setCornerRadius(float radius) {
   mCornerRadius = Helper.dpToPixel(radius, getContext());
   initBackground(mBackgroundColor, mCornerRadius);
 }