package fr.pagesjaunes.mdm.ui; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.Rect; import android.graphics.drawable.PaintDrawable; /** * Drawable bar graph */ public class BarGraphDrawable extends PaintDrawable { private static final int MIN_HEIGHT = 4; private static final int SPACING_X = 1; private final int[][] colors; private final long[][] data; private long max = 1; /** * Create drawable bar graph for data and colors * * @param data * @param colors */ public BarGraphDrawable(final long[][] data, final int[][] colors) { super(android.R.color.transparent); this.data = data; this.colors = colors; for (int i = 0; i < data.length; i++) { for (int j = 0; j < data[i].length; j++) { max = Math.max(max, data[i][j]); } } } @Override public void draw(final Canvas canvas) { final Paint paint = getPaint(); final Rect bounds = getBounds(); final float width = ((float) bounds.width() / data.length) - SPACING_X; final int height = bounds.height(); float x = 0; for (int i = 0; i < data.length; i++) { for (int j = 0; j < data[i].length; j++) { paint.setColor(colors[i][j]); float percentage = (float) data[i][j] / max; canvas.drawRect(x, height - Math.max(MIN_HEIGHT, percentage * height), x + width, bounds.bottom, paint); } x += width + SPACING_X; } } }