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... 

5 comentários:

  1. Como fica o xml para gerar esse gráfico ?

    ResponderExcluir
  2. Oye sabes ¿como puedo hacerle para quitar el contorno negro o darle color?

    ResponderExcluir
  3. Boa tarde,
    Feliz 2016...
    Tem algum exemplo utilizando Banco de Dados?

    Parabéns pelo post.

    Att.
    Jr.

    ResponderExcluir
  4. Boa tarde,
    Feliz 2016...
    Tem algum exemplo utilizando Banco de Dados?

    Parabéns pelo post.

    Att.
    Jr.

    ResponderExcluir