package com.amaze.filemanager.ui.views; import android.content.Context; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.RectF; import android.util.AttributeSet; import android.util.DisplayMetrics; import android.view.View; import com.amaze.filemanager.R; import com.amaze.filemanager.utils.Utils; /** * Created by Arpit on 30-07-2015. */ public class SizeDrawable extends View { Paint mPaint, mPaint1, mPaint2; RectF rectF; float startangle = -90, startangle1 = -90, startangle2 = -90, angle = 0, angle1 = 0, angle2 = 0; public SizeDrawable(Context context) { super(context); } int twenty; public SizeDrawable(Context context, AttributeSet attributeSet) { super(context, attributeSet); int strokeWidth = dpToPx(40); rectF = new RectF(getLeft(), getTop(), getRight(), getBottom()); //rectF = new RectF(dpToPx(0), dpToPx(0), dpToPx(200), dpToPx(200)); mPaint = new Paint(); mPaint.setAntiAlias(true); mPaint.setStyle(Paint.Style.FILL); mPaint.setColor(Utils.getColor(context, R.color.accent_indigo)); // mPaint.setStrokeCap(Paint.Cap.BUTT); mPaint.setStrokeWidth(strokeWidth); mPaint1 = new Paint(); mPaint1.setAntiAlias(true); mPaint1.setStyle(Paint.Style.FILL); mPaint1.setColor(Utils.getColor(context, R.color.accent_red)); // mPaint1.setStrokeCap(Paint.Cap.BUTT); mPaint1.setStrokeWidth(strokeWidth); mPaint2 = new Paint(); mPaint2.setAntiAlias(true); mPaint2.setStyle(Paint.Style.FILL); mPaint2.setColor(Utils.getColor(context, R.color.accent_green)); // mPaint2.setStrokeCap(Paint.Cap.BUTT); mPaint2.setStrokeWidth(strokeWidth); twenty = dpToPx(10); } DisplayMetrics displayMetrics; public int dpToPx(int dp) { if (displayMetrics == null) displayMetrics = getResources().getDisplayMetrics(); int px = Math.round(dp * (displayMetrics.xdpi / DisplayMetrics.DENSITY_DEFAULT)); return px; } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); // canvas.drawLine((getWidth() - twenty)-2,0,(getWidth() - twenty),0,mPaint1); if (angle2 != 0) canvas.drawLine(0, getHeight() - (getHeight() * angle1), 0, getHeight() - (getHeight() * angle2), mPaint2); canvas.drawLine(0, getHeight(), 0, getHeight() - (getHeight() * angle), mPaint); if (angle1 != 0) canvas.drawLine(0, getHeight() - (getHeight() * angle), 0, getHeight() - (getHeight() * angle1), mPaint1); /* Paint paint = new Paint(); paint.setColor(Color.WHITE); paint.setStyle(Paint.Style.STROKE); paint.setTextSize(20); canvas.drawText(Math.round(angle * 100)+"%",(getWidth() - twenty)*angle/2, 25,paint); if(angle1>0.20)canvas.drawText(Math.round((angle1-angle)*100)+"%",(getWidth() - twenty)*angle+(getWidth() - twenty)*(angle1-angle)/2, 25,paint); if(angle2>0.20)canvas.drawText(Math.round((angle2-angle1)*100)+"%",(getWidth() - twenty)*angle1+(getWidth() - twenty)*(angle2-angle1)/2, 25,paint); canvas.drawArc(rectF, startangle, angle, true, mPaint); canvas.drawArc(rectF, startangle1, angle1, true, mPaint1); canvas.drawArc(rectF, startangle2, angle2, true, mPaint2); */ } public void setAngle(float angle, float startangle) { this.angle = angle; this.startangle = startangle; } public void setAngle1(float angle, float startangle1) { this.angle1 = angle; this.startangle1 = startangle1; } public void setAngle2(float angle2, float startangle2) { this.angle2 = angle2; this.startangle2 = startangle2; } }