android图表引擎AchartEngine制作柱图

[来源] 达内    [编辑] 达内   [时间]2012-09-14

废话不多说 关于android图表制作引擎AchartEngine的介绍我这里直接略去 大家想要了解它可以直接百度

废话不多说 关于 android 图表制作引擎AchartEngine 的介绍我这里直接略去   大家想要了解它可以直接百度。

网上关于
AChartEngine绘制柱状图的介绍非差稀少,而 AchartEngine它本身 Api 帮助文档写的非常的简略,给我们学习带来很大的不便。所以我在这里凭借个人的理解,以一个简单的柱状图的例子来解释 AchartEngine绘制柱图的一个过程,希望会对大家有所帮助。

 

首先简略的理解一下AchartEngineAPI

AchartEngine
的提供的Api 非常的简单,其中最重要的两个概念就是数据设置器(dataset )和所谓的描绘器(renderer )。顾名思义,数据设置器就是为我们提供了一系列对图表进行值传入的方法,而描绘器为我们提供了修改图表外观的一些方法。

 

本例结合简单的SQLite数据库表来建立一张柱状图

 

以下是我们要用到的数据库表的信息:

其实待会我们要用到的 只有_name money 两个字段,大家只要关注这两个字段即可

首先 我们打开本地数据库  得到游标:

接下去我们要声明一个数据设置器  和一个描绘器

其中 getBarRenderer()函数是我们自定义的方法,用于初始化描绘器,其方法具体如下:

 

//描绘器设置
  
    public   XYMultipleSeriesRenderer getBarRenderer() {
  
        XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();
  
                     
  
//通过SimpleSeriesDenderer设置描绘器的颜色
  
        SimpleSeriesRenderer r = new SimpleSeriesRenderer();
  
        r.setColor(Color.RED);
  
        renderer.addSeriesRenderer(r);
  
setChartSettings(renderer);//设置描绘器的其他属性
  
return renderer;     }   
   private  void setChartSettings(XYMultipleSeriesRenderer renderer) {
  
   renderer.setChartTitle( "个人收支表" );//设置柱图名称
  
        renderer.setXTitle( "名单" );//设置X轴名称
  
        renderer.setYTitle( "金额" );//设置Y轴名称
  
        renderer.setXAxisMin(0.5); //设置X轴的最小值为0.5
  
        renderer.setXAxisMax(5.5); //设置X轴的最大值为5
  
        renderer.setYAxisMin(0); //设置Y轴的最小值为0
  
        renderer.setYAxisMax(500); //设置Y轴最大值为500
  
        renderer.setDisplayChartValues( true);  //设置是否在柱体上方显示值
  
        renderer.setShowGrid( true);//设置是否在图表中显示网格
  
        renderer.setXLabels(0); //设置X轴显示的刻度标签的个数       
  
         
  
       }

接下去我们再来看数据设置器

 

//数据设置
 
  private  XYMultipleSeriesDataset getBarDataset(Cursor cur) {
 
    
 
  XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
 
       
 
  CategorySeries series = new CategorySeries( "本月金额");
  //声明一个柱形图      
   //为柱形图添加值
 
      while(cur.moveToNext())
 
      series.add(cur.getDouble(cur.getColumnIndex( "money")));
 
       
 
     dataset.addSeries(series.toXYSeries()); //添加该柱形图到数据设置列表
 
          
 
      return  dataset;     }

现在我们一张简单图表就建立好了,但是我们会发现我们并没有用到_name这个字段,所以为了让X 轴上面的刻度标签显示为 _name 这个字段中的值,我们需要写这样一段代码:

cur.moveToFirst();
  
int count=1;
  
do{
  
renderer.addTextLabel(count,cur.getString(cur.getColumnIndex("_name)));
  
count++;
  
}while(cur.moveToNext)

另外需要注意的是
在初始化描绘器的时候一定要加上renderer.setXLabels(0);
现在大功告成 ,我们再为这个Activity添加一个跳转图表的Intent就完成了

 

Intent intent = ChartFactory.getBarChartIntent
  
(this  , dataset, renderer, Type.DEFAULT );

效果如图:

 

 

 

 

资源下载