AChartEngine(简称ACE)是Google的一个开源图表库(for Android)。它功能强大,支持散点图、折线图、饼图、气泡图、柱状图、短棒图、仪表图等多种图表。

该项目地址位于: http://code.google.com/p/achartengine/

你可以选择合适的版本下载,每个版本都有一个jar包、实例源代码和javadoc提供下载。当前最新版本为0.6。

需要注意的是,0.6版本不再支持Android 2.0以下(包含2.0)。也就是说如果你的目标平台使用了7以下SDK版本,比如Android1.5-2.0。则需要下载老版本的ACE 0.5。

本文以ACE 0.5为例。

1、新建Android Project

在工程中新建一个文件夹比如lib,用于存放ACE Libraries,把achartegine-0.5.0.jar包复制到lib里面。

然后把这个jar的路径添加到项目的Build Path中。

2、修改AndroidManifest.xml

主要是加入一个<activity>:

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

呆会我们使用ACE生成柱状图,会在一个特殊的Activit中才能显示,这个Activity就是ACE库中的GraphicalActivity 。我们需要在AndroidManifest.xml中申明它,否则Android会报找不到Activity错误。

3、新建Activity

新建一个类,比如叫做main:

public class main extends ListActivity {

private static final int SERIES_NR = 2;

/** Called when the activity is first created. */

privateArrayList<Map<String,String>> maps=newArrayList<Map<String,String>>();

@Override

public void onCreate(BundlesavedInstanceState) {

super.onCreate(savedInstanceState);

//setContentView(R.layout.main);

// 加入ListItem “调度查询

HashMap<String,String> map=newHashMap<String,String>();

map.put("name","柱状图");

map.put("desc", "显示柱状图");

maps.add(map);

// 构建listView的适配器

SimpleAdapter adapter=new SimpleAdapter(this,maps,

android.R.layout.simple_list_item_2,// SDK库中提供的一个包含两个TextViewlayout

new String[]{"name","desc"},// maps中的两个key

new int[]{android.R.id.text1,android.R.id.text2}// 两个TextViewid

);

this.setListAdapter(adapter);

}

// ListItem监听器方法

protected voidonListItemClick(ListView l, View v, int position, long id) {

super.onListItemClick(l,v, position, id);

XYMultipleSeriesRendererrenderer = getBarDemoRenderer();

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

startActivity(intent);

}

privateXYMultipleSeriesDataset getBarDemoDataset() {

XYMultipleSeriesDatasetdataset = new XYMultipleSeriesDataset();

final int nr = 10;

Random r = new Random();

for (int i = 0; i < SERIES_NR; i++) {

CategorySeries series = new CategorySeries("Demoseries " + (i + 1));

for (int k = 0; k < nr;k++) {

series.add(100 + r.nextInt() % 100);

}

dataset.addSeries(series.toXYSeries());

}

return dataset;

}

publicXYMultipleSeriesRenderer getBarDemoRenderer() {

XYMultipleSeriesRendererrenderer = new XYMultipleSeriesRenderer();

SimpleSeriesRenderer r =new SimpleSeriesRenderer();

r.setColor(Color.BLUE);

renderer.addSeriesRenderer(r);

r = newSimpleSeriesRenderer();

r.setColor(Color.GREEN);

renderer.addSeriesRenderer(r);

setChartSettings(renderer);

return renderer;

}

private voidsetChartSettings(XYMultipleSeriesRenderer renderer) {

renderer.setChartTitle("Chart demo");

renderer.setXTitle("x values");

renderer.setYTitle("y values");

renderer.setXAxisMin(0.5);

renderer.setXAxisMax(10.5);

renderer.setYAxisMin(0);

renderer.setYAxisMax(210);

}

}

先把上面的代码进行简单的复制粘贴。好了,运行程序试试:

好了,下面来看代码。

onCreate方法不需要多说了吧,一个ListActivity而已。

onListItemClick方法中,当用户点击了“显示图表”之后,构造一个intent对象,然后用startActivity发送消息到前面AndroidManifest.xml申明的那个activity( GraphicalActivity )。于是图表就显示出来了。

关键是intent的构造方法 ChartFactory.getBarChartIntent。

ChartFactory提供了许多有用的工厂方法,如果你需要生成一个折线图,可以用它的 getLineChartIntent方法。

getBarChartIntent 方法有点复杂,需要我们准备很多参数传入。其中一个是 XYMultipleSeriesDataset类型的对象,用于提供图表需要表示的数据集,这里我们用 getBarDemoDataset 来得到它。另外一个是 XYMultipleSeriesRenderer 类型的对象,用于提供图表展现时的一些样式,这里我们用 getBarDemoRenderer 方法来得到它。

getLineChartIntent 方法很无聊,使用了一些随机数来作为图表数据。注意柱状图是支持多系列的,这里生成了两个系列的数据。

getBarDemoRenderer 方法构建了一个 XYMultipleSeriesRenderer 用来设置2个系列各自的颜色,然后调用 setChartSettings 方法设置了下坐标轴样式。

更多相关文章

  1. [Android菜鸟笔记]Android(安卓)Studio_2.3.3小白入门简单配置
  2. ffmpeg 编译android so库文件
  3. AndroidX
  4. Android(安卓)多 Fragment 切换优化
  5. 深入浅出Android事件分发机制——源码分析篇
  6. Android(安卓)之ActivityThead、ActivityManagerService 与activ
  7. Android(安卓)网络学习
  8. Android的Activity生命周期模拟程序及解析
  9. android动态壁纸1——初步框架(有背景,能使用,仿可爱宝贝)

随机推荐

  1. ADB命令行卸载或删除你的Android设备中的
  2. 图解 Android(安卓)事件分发机制
  3. 基于开源框架Glide加载Gif资源图到Androi
  4. Cocos2d Android移植手记(二)——cocos2d A
  5. 体验Android电子市场后的一些感受
  6. Android中View自定义XML属性详解以及R.at
  7. android 使用Kotlin operator 泛型属性委
  8. Flutter框架的安装与环境配置
  9. Android(安卓)jetpack最佳总结和实践
  10. Android学习记录