Advertisement
Guest User

Untitled

a guest
Nov 28th, 2014
195
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.52 KB | None | 0 0
  1. package com.dropix.onerz.views;
  2.  
  3. import android.content.Context;
  4. import android.content.res.Resources;
  5. import android.graphics.Canvas;
  6. import android.graphics.Paint;
  7. import android.graphics.Rect;
  8. import android.graphics.RectF;
  9. import android.graphics.Typeface;
  10. import android.util.AttributeSet;
  11. import android.view.View;
  12.  
  13. import com.dropix.onerz.R;
  14.  
  15. public class CircularProgressBar extends View {
  16.     private float mRadius;
  17.     private float mProgress;
  18.     private Paint mCirclePaint;
  19.     private Paint mInnerCirclePaint;
  20.     private Paint mBigTextPaint, mSmallTextPaint;
  21.     private RectF mOval;
  22.     private int mNormalColor, mProgressColor;
  23.     private String mBigText, mSmallText;
  24.     private Rect mBigRect, mSmallRect;
  25.     private int width, height;
  26.     private Resources resources;
  27.    
  28.     public CircularProgressBar(Context context, AttributeSet attrs) {
  29.         super(context, attrs);
  30.         this.resources = getResources();
  31.         mCirclePaint = new Paint();
  32.         mCirclePaint.setStyle(Paint.Style.STROKE);
  33.         mCirclePaint.setStrokeWidth(resources.getDimension(R.dimen.discovery_process_circle_thickness));
  34.         mInnerCirclePaint = new Paint();
  35.         mInnerCirclePaint.setStyle(Paint.Style.FILL);
  36.         mInnerCirclePaint.setColor(resources.getColor(R.color.discovery_inner_circle));
  37.         mBigTextPaint = new Paint();
  38.         mBigTextPaint.setColor(resources.getColor(R.color.discovery_circle_big_text));
  39.         mSmallTextPaint = new Paint();
  40.         mSmallTextPaint.setColor(resources.getColor(R.color.discovery_circle_small_text));
  41.         mRadius = resources.getDimension(R.dimen.discovery_process_circle_radius);
  42.         mProgressColor = resources.getColor(R.color.blue);
  43.         mNormalColor = resources.getColor(R.color.discovery_circle_empty_arc);
  44.         mBigRect = new Rect();
  45.         mSmallRect = new Rect();
  46.     }
  47.    
  48.     public void setText(String bigText, float bigTextSize, String smallText, float smallTextSize, Typeface font) {
  49.         mBigTextPaint.setTypeface(font);
  50.         mBigTextPaint.setTextSize(bigTextSize);
  51.         mSmallTextPaint.setTypeface(font);
  52.         mSmallTextPaint.setTextSize(smallTextSize);
  53.        
  54.         this.mBigText = bigText;
  55.         this.mSmallText = smallText;
  56.        
  57.         mBigTextPaint.getTextBounds(bigText, 0, bigText.length(), mBigRect);
  58.         mSmallTextPaint.getTextBounds(smallText, 0, smallText.length(), mSmallRect);
  59.     }
  60.    
  61.     public void setProgressColor(int progressColor) {
  62.         this.mProgressColor = progressColor;
  63.     }
  64.    
  65.     public void setProgress(float progress) {
  66.         this.mProgress = progress;
  67.     }
  68.  
  69.     @Override
  70.     protected void onSizeChanged(int w, int h, int oldw, int oldh) {
  71.         super.onSizeChanged(w, h, oldw, oldh);
  72.         mOval = new RectF(w / 2 - mRadius, h / 2 - mRadius, w / 2 + mRadius, h / 2 + mRadius);
  73.         this.width = w;
  74.         this.height = h;
  75.     }
  76.    
  77.     @Override
  78.     protected synchronized void onDraw(Canvas canvas) {
  79.         // Fill inner circle
  80.         canvas.drawCircle(getWidth() / 2, getHeight() / 2, mRadius, mInnerCirclePaint);
  81.        
  82.         // Draws the circle
  83.         if (mProgress < 100) {
  84.             mCirclePaint.setColor(mProgressColor);
  85.             canvas.drawArc(mOval, 271, (mProgress - 1) * 3.6f, false, mCirclePaint);
  86.             mCirclePaint.setColor(mNormalColor);
  87.             canvas.drawArc(mOval, 271 + (mProgress) * 3.6f, (100 - mProgress - 1) * 3.6f, false, mCirclePaint);
  88.         }
  89.         else {
  90.             mCirclePaint.setColor(mProgressColor);
  91.             canvas.drawCircle(getWidth() / 2, getHeight() / 2, mRadius, mCirclePaint);
  92.         }
  93.        
  94.         // Draws the big text
  95.         canvas.drawText(mBigText, width / 2 - mBigRect.right / 2, height / 2, mBigTextPaint);
  96.        
  97.         // Draws the small text
  98.         canvas.drawText(mSmallText, width / 2 - mSmallRect.right / 2, height / 2 - mSmallRect.top, mSmallTextPaint);
  99.     }
  100. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement