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
// ===========================================================
}