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) 编辑 收藏 举报