android 用Achartengine 作图

本文介绍如何使用AChartEngine开源库在Android应用中创建饼状图。通过示例代码展示了如何设置数据集、定义图表样式及生成Intent来展示图表。

Achartengine 是google的一个开源图标库。支持多种图标,如折线图、气泡图、饼状图等等。 (http://code.google.com/p/achartengine/

 

它的用法也很简单,今天在网上看了一个人的小结(http://www.cnblogs.com/hanyonglu/archive/2012/02/20/2360334.html),于是自己也学着试了一下。

简单的说,调用 ChartFactory 的get***()函数就能得到一个图表,以饼状图为例,ChartFactory.getPieChartIntent(android.content.Context context, CategorySeries dataset, DefaultRenderer renderer, java.lang.String activityTitle)可以返回一个图表的Intent, 至于图表的内容是什么,就需要在dataset 和renderer中布置。

 

dataset 里面是你的基本统计数据,例如每种元素的名称(string)和数量(double)。 Achartengine 根据每种成分的数量统计其所占百分比。

renderer 指明了图的样式, 例如每个元素的颜色,标题的大小,背景颜色等等。

具体怎么设置,可以从官方的API里面查找。

然后要记得修改AndroidManifest.xml:

加入一个<activity>:

< activity android:name = "org.achartengine.GraphicalActivity" />

 

附上源码一份:

AChartExample.java

复制代码
 1 package test.chart.Achartengine;
 2 
 3 import org.achartengine.ChartFactory;
 4 import org.achartengine.model.CategorySeries;
 5 import org.achartengine.renderer.DefaultRenderer;
 6 import org.achartengine.renderer.SimpleSeriesRenderer;
 7 
 8 import android.content.Context;
 9 import android.content.Intent;
10 import android.graphics.Color;
11 
12 public class AChartExample {  
13     
14     private double[] value = {22,22,22};    
15     
16     public AChartExample(){
17         value[0]= 1;
18         value[1]=2;
19         value[2] = 3;
20     }
21     
22     public AChartExample(double values[]){
23         for (int i=0;i<values.length;i++){
24             value[i] = values[i];
25         }
26     }
27     
28     public Intent execute(Context context) { 
29         int[] colors = new int[] { Color.RED, Color.YELLOW, Color.BLUE }; 
30         DefaultRenderer renderer = buildCategoryRenderer(colors); 
31         CategorySeries categorySeries = new CategorySeries("Vehicles Chart"); 
32         categorySeries.add("cars ", value[0]); 
33         categorySeries.add("trucks", value[1]); 
34         categorySeries.add("bikes ", value[2]); 
35         return ChartFactory.getPieChartIntent(context, categorySeries, renderer,"jialia"); 
36     } 
37       
38     protected DefaultRenderer buildCategoryRenderer(int[] colors) { 
39         DefaultRenderer renderer = new DefaultRenderer(); 
40         renderer.setBackgroundColor(Color.GRAY);
41         renderer.setApplyBackgroundColor(true);
42         renderer.setLabelsTextSize(20);
43         renderer.setChartTitle("pie chart");
44         renderer.setChartTitleTextSize(30);
45         renderer.setLegendTextSize(30);
46         renderer.setLegendHeight(50);
47         for (int color : colors) { 
48             SimpleSeriesRenderer r = new SimpleSeriesRenderer(); 
49             r.setColor(color); 
50             renderer.addSeriesRenderer(r); 
51         } 
52         return renderer; 
53     } 
54 }
复制代码

Achartengine.java:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
package test.chart.Achartengine;
  
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
  
public class Achartengine extends Activity {
     /** Called when the activity is first created. */
     @Override
     public void onCreate(Bundle savedInstanceState) {
         super .onCreate(savedInstanceState);
         try {
         Intent achartIntent = new AChartExample( new double []{ 3 , 2 , 1 }).execute( this );
         startActivity(achartIntent);
         } catch (Exception e){
              
             Log.d( "oncreate" ,e.getMessage());
         }
     }
}

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值