package net.tasksnow.view.reuse; import android.content.Context; import android.content.res.TypedArray; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.RectF; import android.util.AttributeSet; import android.view.View; import net.tasksnow.R; import net.tasksnow.R.styleable; /** * @author D056943 * @since 19:15:47 - 28.03.2013 * @project TasksNow */ public class HorizontalBarChart extends View { // =========================================================== // Constants // =========================================================== // =========================================================== // Fields // =========================================================== private int progressCount = 0; private int totalCount = 100; private int progressBackgroundColor = 0xffD7D7D7; private final Paint backgroundPaint = new Paint(); private int progressColor = 0xFFFF8800; private final Paint progressColorPaint = new Paint(); // =========================================================== // Constructors // =========================================================== public HorizontalBarChart(Context context) { super(context); init(); } public HorizontalBarChart(Context context, AttributeSet attrs) { super(context, attrs); TypedArray a = context.getTheme().obtainStyledAttributes(attrs, R.styleable.HorizontalBarChart, 0, 0); try { this.progressCount = a.getInteger(R.styleable.HorizontalBarChart_progressCount, 0); this.totalCount = a.getInteger(R.styleable.HorizontalBarChart_totalCount, 100); this.progressColor = a.getColor(R.styleable.HorizontalBarChart_progressColor, 0xFFFF8800); this.progressBackgroundColor = a.getColor(R.styleable.HorizontalBarChart_progressBackgrounColor, 0xffD7D7D7); } finally { // release the TypedArray so that it can be reused. a.recycle(); } init(); } public void init() { backgroundPaint.setColor(progressBackgroundColor); backgroundPaint.setStyle(Paint.Style.FILL); progressColorPaint.setColor(progressColor); progressColorPaint.setStyle(Paint.Style.FILL); } // =========================================================== // Methods for/from SuperClass/Interfaces // =========================================================== @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); canvas.drawRect(canvas.getClipBounds(), backgroundPaint); RectF background = new RectF(canvas.getClipBounds()); background.right = ((float) progressCount / (float) totalCount) * canvas.getWidth(); canvas.drawRect(background, progressColorPaint); } // =========================================================== // Methods // =========================================================== // =========================================================== // Getter & Setter // =========================================================== public int getProgressCount() { return progressCount; } public void setProgressCount(int progressCount) { this.progressCount = progressCount; } public int getTotalCount() { return totalCount; } public void setTotalCount(int totalCount) { this.totalCount = totalCount; } // =========================================================== // Inner and Anonymous Classes // =========================================================== }