android 用Achartengine 作图

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:

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());
        }
    }
}

  




posted on 2012-03-19 17:51  leavingseason  阅读(20365)  评论(4编辑  收藏  举报

导航

Bye!