Android中使用achartengine生成图表的具体方法

时间:2022-05-31 06:55:00

今天在做项目的时候用到了图表功能,记录下来

achartengine是google的一个开源项目,可以在https://code.google.com/p/achartengine/ 下载技术文档,jar包以及项目源代码

demo下载:https://code.google.com/p/achartengine/downloads/list

Android中使用achartengine生成图表的具体方法

一、饼状图

新建工程,添加achartengine  jar包

piechart.java

 

复制代码 代码如下:


package com.meritit.footlottery.view;

 

import org.achartengine.chartfactory;
import org.achartengine.model.categoryseries;
import org.achartengine.renderer.defaultrenderer;
import org.achartengine.renderer.simpleseriesrenderer;

import android.content.context;
import android.graphics.color;
import android.view.view;

public class piechart {
 public view execute(context context) {
  int[] colors = new int[] { color.red, color.yellow, color.blue };
  defaultrenderer renderer = buildcategoryrenderer(colors);
  categoryseries categoryseries = new categoryseries("vehicles chart");
  categoryseries.add("胜 ", 30);
  categoryseries.add("负", 20);
  categoryseries.add("平", 60);
  return chartfactory
    .getpiechartview(context, categoryseries, renderer);
 }

 protected defaultrenderer buildcategoryrenderer(int[] colors) {
  defaultrenderer renderer = new defaultrenderer();
  for (int color : colors) {
   simpleseriesrenderer r = new simpleseriesrenderer();
   r.setcolor(color);
   renderer.addseriesrenderer(r); 
  }
  //显示标签
  renderer.setshowlabels(true);
  //不显示底部说明
  renderer.setshowlegend(false);
  //设置标签字体大小
  renderer.setlabelstextsize(15);
  renderer.setlabelscolor(color.black);
  renderer.setzoomenabled(false);
  renderer.setpanenabled(false);
  return renderer;
 }
}

 

使用方法

复制代码 代码如下:

//view piechart = new piechart().execute(this);
//chartarea.addview(piechart);

 

获得一个view对象,在需要添加的布局下面直接addview

二、柱状图

 

复制代码 代码如下:


package com.meritit.footlottery.view;

 

import java.util.random;

import org.achartengine.chartfactory;
import org.achartengine.chart.barchart.type;
import org.achartengine.model.categoryseries;
import org.achartengine.model.xymultipleseriesdataset;
import org.achartengine.renderer.defaultrenderer;
import org.achartengine.renderer.simpleseriesrenderer;
import org.achartengine.renderer.xymultipleseriesrenderer;

import com.meritit.footlottery.r;

import android.content.context;
import android.graphics.color;
import android.view.view;

public class barchart {
 private context context;
 public view execute(context context) {
  this.context = context;
  return chartfactory
    .getbarchartview(context, getbardemodataset(), getbardemorenderer(), type.default);
 }

    /**
     * xymultipleseriesdataset 类型的对象,用于提供图表需要表示的数据集,
     * 这里我们用 getbardemodataset 来得到它。
     */ 
    private xymultipleseriesdataset getbardemodataset() { 
        xymultipleseriesdataset dataset = new xymultipleseriesdataset(); 
        final int nr = 10; 
        random r = new random(); 
        for (int i = 0; i < 3; i++) { 
            categoryseries series = new categoryseries("球队 " + (i + 1)); 
            for (int k = 0; k < nr; k++) { 
                series.add(100 + r.nextint() % 100); 
            } 
            dataset.addseries(series.toxyseries()); 
        } 
        return dataset; 
    }

    /**
     * xymultipleseriesrenderer 类型的对象,用于提供图表展现时的一些样式,
     * 这里我们用 getbardemorenderer 方法来得到它。
     * getbardemorenderer 方法构建了一个 xymultipleseriesrenderer 用来设置2个系列各自的颜色
     */ 
    public xymultipleseriesrenderer getbardemorenderer() { 
        xymultipleseriesrenderer renderer = new xymultipleseriesrenderer(); 
        simpleseriesrenderer r = new simpleseriesrenderer(); 
        r.setcolor(color.blue); 
        renderer.addseriesrenderer(r); 
        r = new simpleseriesrenderer(); 
        r.setcolor(color.green); 
        renderer.addseriesrenderer(r);
        r = new simpleseriesrenderer(); 
        r.setcolor(color.red); 
        renderer.addseriesrenderer(r);
        renderer.setapplybackgroundcolor(true);
        renderer.setbackgroundcolor(color.transparent);
        renderer.setmarginscolor(context.getresources().getcolor(r.color.main_background_color));
        renderer.setzoomenabled(false, false);
        renderer.setpanenabled(false, false);
        renderer.setlabelstextsize(15);
  renderer.setlabelscolor(color.black);
        setchartsettings(renderer); 
        return renderer; 
    }

    /**
     * setchartsettings 方法设置了下坐标轴样式。
     */ 
    private void setchartsettings(xymultipleseriesrenderer renderer) { 
        renderer.setcharttitle("战绩分析"); 
        renderer.setxtitle("横坐标"); 
        renderer.setytitle("纵坐标"); 
        renderer.setxaxismin(0.5); 
        renderer.setxaxismax(10.5); 
        renderer.setyaxismin(0); 
        renderer.setyaxismax(210); 
    } 
}

 

上面代码部分解释:
renderer.setapplybackgroundcolor(true);  //设置背景使能,为true下面的设置背景才有效

renderer.setbackgroundcolor(color.transparent);  //设置背景

renderer.setmarginscolor() //设置周围区域颜色

renderer.setzoomenabled(false, false);  //设置是否能放大

renderer.setpanenabled(false, false);  //设置是否可以移动

renderer.setlabelstextsize(15);  //设置标签文字大小
renderer.setlabelscolor(color.black);