package ca.etsmtl.applets.etsmobile.views;
import org.achartengine.ChartFactory;
import org.achartengine.GraphicalView;
import org.achartengine.model.CategorySeries;
import org.achartengine.renderer.DefaultRenderer;
import org.achartengine.renderer.SimpleSeriesRenderer;
import android.content.Context;
import android.widget.LinearLayout;
/**
* code pris de Archartengine
*
* @author Laurence de Villers
*
*/
public class PieChart {
private Context context;
private GraphicalView mChartView;
public PieChart(Context context, double[] values, int[] colors, LinearLayout layout) {
this.context = context;
DefaultRenderer renderer = buildCategoryRenderer(colors);
renderer.setChartTitleTextSize(50);
renderer.setDisplayValues(true);
renderer.setShowLabels(false);
renderer.setPanEnabled(false);
renderer.setZoomEnabled(false);
renderer.setShowLegend(false);
if (mChartView == null) {
layout.removeAllViews();
mChartView = ChartFactory
.getPieChartView(context, buildCategoryDataset("Project budget", values), renderer);
layout.addView(mChartView);
} else {
mChartView.repaint();
}
}
/**
* Builds a category series using the provided values.
*
* @param titles
* the series titles
* @param values
* the values
* @return the category series
*/
protected CategorySeries buildCategoryDataset(String title, double[] values) {
CategorySeries series = new CategorySeries(title);
int k = 0;
for (int i = 0; i < values.length; i++) {
if (i < values.length - 1)
series.add(" " + values[i] + "Go", values[i]);
else
series.add("Go Restant : " + values[i] + "Go", values[i]);
}
return series;
}
/**
* Builds a category renderer to use the provided colors.
*
* @param colors
* the colors
* @return the category renderer
*/
protected DefaultRenderer buildCategoryRenderer(int[] colors) {
DefaultRenderer renderer = new DefaultRenderer();
renderer.setLabelsTextSize(40);
// renderer.setLegendTextSize(25);
renderer.setMargins(new int[] { 10, 0, 0, 0 });
// renderer.setLegendHeight(200);
for (int color : colors) {
SimpleSeriesRenderer r = new SimpleSeriesRenderer();
r.setColor(color);
renderer.addSeriesRenderer(r);
}
return renderer;
}
}