I need to make a custom progress bar that looks like this: 
I'd love some advice for the best way to do this. thanks!
I need to make a custom progress bar that looks like this: 
I'd love some advice for the best way to do this. thanks!
 
    
    https://github.com/lzyzsd/CircleProgress
There are already many libraries providing these type of progressbar. Check above one.
   allprojects {
        repositories {
            ...
            maven { url "https://jitpack.io" }
        }
    }
app level gradle.
dependencies {
    compile 'com.github.lzyzsd:circleprogress:1.2.1'
}
In your layout
 <com.github.lzyzsd.circleprogress.DonutProgress
        android:layout_marginLeft="50dp"
        android:id="@+id/donut_progress"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        custom:donut_progress="30"/>
See https://github.com/lzyzsd/CircleProgress for all available customizations.
 
    
    @Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);
    int x = canvas.getWidth();
    int y = canvas.getHeight();
    float left      = x/2 ;
    float top       = y/2 ;
    float right     = x/2 ;
    float bottom    = y/2 ;
    mRectF.left     = left;
    mRectF.top      = top;
    mRectF.right    = right;
    mRectF.bottom   = bottom;
    mPaint.setStrokeWidth(strokeWidth);
    mPaint.setAntiAlias(true);
    mPaint.setDither(true);
    mPaint.setStyle(Paint.Style.FILL);
    mPaint.setColor(Color.WHITE);
    mPaint.setShader(null);
    canvas.drawCircle(x/2,y/2, strokeWidth* 1.5f,mPaint);
    mPaint.setStyle(Paint.Style.STROKE);
    mPaint.setShader(createGradient());
    canvas.drawArc(mRectF,0,360,false, mPaint);
    Shader mGradient = createGradient();
    mMatrix.setRotate(-90f, x / 2 , y / 2 );
    mGradient.setLocalMatrix(mMatrix);
    mPaint.setShader(mGradient);
    canvas.drawArc(mRectF,ANGLE_START,currentAngle,false, mPaint);
}
