public class CircleProgressBar extends View { private int maxProgress = 100; RectF oval = new RectF(); Paint paint = new Paint(); private int progress = 0; private int progressStrokeWidth = 4; public CircleProgressBar(Context paramContext, AttributeSet paramAttributeSet) { super(paramContext, paramAttributeSet); } public int getMaxProgress() { return this.maxProgress; } protected void onDraw(Canvas paramCanvas) { super.onDraw(paramCanvas); int width = getWidth(); int height = getHeight(); int j = height; int i = width; if (width != height) { j = Math.min(width, height); i = j; } this.paint.setAntiAlias(true); this.paint.setColor(-1); paramCanvas.drawColor(0); this.paint.setStrokeWidth(this.progressStrokeWidth); this.paint.setStyle(Paint.Style.STROKE); this.oval.left = (this.progressStrokeWidth / 2); this.oval.top = (this.progressStrokeWidth / 2); this.oval.right = (i - (this.progressStrokeWidth / 2)); this.oval.bottom = (j - (this.progressStrokeWidth / 2)); this.paint.setColor(Color.parseColor("#4cd964")); paramCanvas.drawArc(this.oval, -90.0F, 360.0F * this.progress / this.maxProgress, false, this.paint); } public void setMaxProgress(int paramInt) { this.maxProgress = paramInt; } public void setProgress(int paramInt) { this.progress = paramInt; invalidate(); } public void setProgressNotInUiThread(int paramInt) { this.progress = paramInt; postInvalidate(); } }