terça-feira, 4 de dezembro de 2012

Utilizando Achartengine em sua aplicação Android. Crie diversos gráficos com a API

Olá pessoal, precisei utilizar gráficos em uma aplicação android e vou postar um exemplo que criei para facilitar para quem precisar depois.

Utilizei a API Achartengine, disponível para download aqui: http://www.achartengine.org/
Depois de adicionar a API no Build Path do projeto podemos começar.

Existem diversas propriedades da api que não conheço ainda mais pelo que já pesquisei encontrei algumas coisas bem interessantes. Segue o exemplo:



  1. public class BarGraphActivity extends Activity{
  2. private GraphicalView mChartView;
  3. @Override
  4. protected void onCreate(Bundle savedInstanceState) {
  5. super.onCreate(savedInstanceState);
  6. setContentView(R.layout.bar_char_activity);
  7. createChart();
  8. }
  9. public void createChart(){
  10. int[] valores = {6, 7, 5, 3};
  11. CategorySeries series = new CategorySeries("Grafico de barras");
  12. for (int i = 0; i < valores.length; i++) {
  13. series.add(valores[i]);
  14. }
  15. XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
  16. dataset.addSeries(series.toXYSeries());
  17. XYMultipleSeriesRenderer renderer = getBarDemoRenderer();
  18.    setChartSettings(renderer);
  19.    LinearLayout layout = (LinearLayout) findViewById(R.id.layout_chart);
  20.    mChartView = ChartFactory.getBarChartView(this, getBarDemoDataset(),
  21.     renderer, Type.DEFAULT);
  22.    layout.addView(mChartView);
  23. }
  24. private XYMultipleSeriesDataset getBarDemoDataset() {
  25.    XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
  26.    int[] valores = {6, 7, 5, 3};
  27.    CategorySeries series = new CategorySeries("Demo series");
  28.    for (int i = 0; i < valores.length; i++) {
  29.     series.add(valores[i]);
  30.    }
  31.    dataset.addSeries(series.toXYSeries());
  32.    return dataset;
  33.  }
  34. public XYMultipleSeriesRenderer getBarDemoRenderer() {
  35.    XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();
  36.    renderer.setAxisTitleTextSize(16);
  37.    renderer.setBarSpacing(1);
  38.    renderer.setLegendTextSize(15);
  39.    SimpleSeriesRenderer r = new SimpleSeriesRenderer();
  40.    r.setColor(Color.YELLOW);
  41.    renderer.addSeriesRenderer(r);
  42.    return renderer;
  43.  }
  44. private void setChartSettings(XYMultipleSeriesRenderer renderer) {
  45.    renderer.setShowLegend(false);
  46.    renderer.setAxesColor(Color.DKGRAY);
  47.    renderer.setXAxisMin(0.5);
  48.    renderer.setXAxisMax(12.5);
  49.    renderer.setYAxisMin(0);
  50.    renderer.setYLabelsAlign(Align.RIGHT);
  51.    renderer.setXLabels(0);
  52.    renderer.setZoomEnabled(false, false);
  53.    renderer.setShowCustomTextGrid(true);
  54.    renderer.setShowGridY(true);
  55.    renderer.setShowGridX(true);
  56.    renderer.addXTextLabel(1, "Jan");
  57.    renderer.addXTextLabel(2, "Fev");
  58.    renderer.addXTextLabel(3, "Mar");
  59.    renderer.addXTextLabel(4, "Abr");
  60.     
  61.  }

  62. }

E o resultado disso tudo ficará assim:



Qualquer dúvida que tiverem tentarei ajudar, no site tem uma documentação legal e lá também está disponível para download um projeto com alguns exemplos utilizando outros tipos de gráficos.

Até a próxima...