Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.dropix.onerz.views;
- import android.content.Context;
- import android.content.res.Resources;
- import android.graphics.Canvas;
- import android.graphics.Paint;
- import android.graphics.Rect;
- import android.graphics.RectF;
- import android.graphics.Typeface;
- import android.util.AttributeSet;
- import android.view.View;
- import com.dropix.onerz.R;
- public class CircularProgressBar extends View {
- private float mRadius;
- private float mProgress;
- private Paint mCirclePaint;
- private Paint mInnerCirclePaint;
- private Paint mBigTextPaint, mSmallTextPaint;
- private RectF mOval;
- private int mNormalColor, mProgressColor;
- private String mBigText, mSmallText;
- private Rect mBigRect, mSmallRect;
- private int width, height;
- private Resources resources;
- public CircularProgressBar(Context context, AttributeSet attrs) {
- super(context, attrs);
- this.resources = getResources();
- mCirclePaint = new Paint();
- mCirclePaint.setStyle(Paint.Style.STROKE);
- mCirclePaint.setStrokeWidth(resources.getDimension(R.dimen.discovery_process_circle_thickness));
- mInnerCirclePaint = new Paint();
- mInnerCirclePaint.setStyle(Paint.Style.FILL);
- mInnerCirclePaint.setColor(resources.getColor(R.color.discovery_inner_circle));
- mBigTextPaint = new Paint();
- mBigTextPaint.setColor(resources.getColor(R.color.discovery_circle_big_text));
- mSmallTextPaint = new Paint();
- mSmallTextPaint.setColor(resources.getColor(R.color.discovery_circle_small_text));
- mRadius = resources.getDimension(R.dimen.discovery_process_circle_radius);
- mProgressColor = resources.getColor(R.color.blue);
- mNormalColor = resources.getColor(R.color.discovery_circle_empty_arc);
- mBigRect = new Rect();
- mSmallRect = new Rect();
- }
- public void setText(String bigText, float bigTextSize, String smallText, float smallTextSize, Typeface font) {
- mBigTextPaint.setTypeface(font);
- mBigTextPaint.setTextSize(bigTextSize);
- mSmallTextPaint.setTypeface(font);
- mSmallTextPaint.setTextSize(smallTextSize);
- this.mBigText = bigText;
- this.mSmallText = smallText;
- mBigTextPaint.getTextBounds(bigText, 0, bigText.length(), mBigRect);
- mSmallTextPaint.getTextBounds(smallText, 0, smallText.length(), mSmallRect);
- }
- public void setProgressColor(int progressColor) {
- this.mProgressColor = progressColor;
- }
- public void setProgress(float progress) {
- this.mProgress = progress;
- }
- @Override
- protected void onSizeChanged(int w, int h, int oldw, int oldh) {
- super.onSizeChanged(w, h, oldw, oldh);
- mOval = new RectF(w / 2 - mRadius, h / 2 - mRadius, w / 2 + mRadius, h / 2 + mRadius);
- this.width = w;
- this.height = h;
- }
- @Override
- protected synchronized void onDraw(Canvas canvas) {
- // Fill inner circle
- canvas.drawCircle(getWidth() / 2, getHeight() / 2, mRadius, mInnerCirclePaint);
- // Draws the circle
- if (mProgress < 100) {
- mCirclePaint.setColor(mProgressColor);
- canvas.drawArc(mOval, 271, (mProgress - 1) * 3.6f, false, mCirclePaint);
- mCirclePaint.setColor(mNormalColor);
- canvas.drawArc(mOval, 271 + (mProgress) * 3.6f, (100 - mProgress - 1) * 3.6f, false, mCirclePaint);
- }
- else {
- mCirclePaint.setColor(mProgressColor);
- canvas.drawCircle(getWidth() / 2, getHeight() / 2, mRadius, mCirclePaint);
- }
- // Draws the big text
- canvas.drawText(mBigText, width / 2 - mBigRect.right / 2, height / 2, mBigTextPaint);
- // Draws the small text
- canvas.drawText(mSmallText, width / 2 - mSmallRect.right / 2, height / 2 - mSmallRect.top, mSmallTextPaint);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement