package com.mercandalli.android.apps.files.view;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.drawable.Drawable;
import android.support.v4.content.ContextCompat;
import android.util.AttributeSet;
import android.widget.ProgressBar;
import com.mercandalli.android.apps.files.R;
import static com.mercandalli.android.library.base.view.ViewUtils.dpToPx;
public class StaticProgressBar extends ProgressBar {
private int mMeasuredWidth;
private int mMeasuredHeight;
private int mCircleRadius;
private Paint mPaint;
private int mStrokeWidth;
public StaticProgressBar(Context context) {
super(context);
init(context);
}
public StaticProgressBar(Context context, AttributeSet attrs) {
super(context, attrs);
init(context);
}
public StaticProgressBar(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init(context);
}
@Override
protected synchronized void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int dw = 0;
int dh = 0;
final Drawable d = getIndeterminateDrawable();
if (d != null) {
dw = d.getIntrinsicWidth();
dh = d.getIntrinsicHeight();
}
dw += getPaddingLeft() + getPaddingRight();
dh += getPaddingTop() + getPaddingBottom();
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.HONEYCOMB) {
mMeasuredWidth = resolveSizeAndState(dw, widthMeasureSpec, 0);
mMeasuredHeight = resolveSizeAndState(dh, heightMeasureSpec, 0);
} else {
mMeasuredWidth = 200;
mMeasuredHeight = 200;
}
setMeasuredDimension(mMeasuredWidth, mMeasuredHeight);
mCircleRadius = Math.min(mMeasuredHeight, mMeasuredWidth) / 2 - mStrokeWidth;
}
@Override
public synchronized void setIndeterminate(boolean indeterminate) {
super.setIndeterminate(false);
setProgress((int) (0.7f * getMax()));
}
@Override
protected synchronized void onDraw(Canvas canvas) {
canvas.drawCircle(mMeasuredWidth / 2, mMeasuredHeight / 2, mCircleRadius, mPaint);
}
private void init(final Context context) {
mStrokeWidth = (int) dpToPx(context, 4);
mPaint = new Paint();
mPaint.setColor(ContextCompat.getColor(context, R.color.accent));
mPaint.setStyle(Paint.Style.STROKE);
mPaint.setStrokeWidth(mStrokeWidth);
}
}