1.下载jar包:链接地址:点击打开链接 (提取码:bf9d)
2.创建接口
package com.cnten.demo.graph;
import android.content.Context;
import android.content.Intent;
/**
* 演示图表的接口
*/
public interface IDemoChart {
/** 图表的名称 */
String NAME = "name";
/** 图描述 */
String DESC = "desc";
/**
* 返回返回图表的名称
*
* @return the chart name
*/
String getName();
/**
* 返回图描述
*
* @return the chart description
*/
String getDesc();
/**
* 执行图演示。
*
* @param context
* the context
* @return the built intent
*/
Intent execute(Context context);
}
3
.创建一个抽象类
package com.cnten.demo.graph;
import java.util.Date;
import java.util.List;
import org.achartengine.chart.PointStyle;
import org.achartengine.model.CategorySeries;
import org.achartengine.model.MultipleCategorySeries;
import org.achartengine.model.TimeSeries;
import org.achartengine.model.XYMultipleSeriesDataset;
import org.achartengine.model.XYSeries;
import org.achartengine.renderer.DefaultRenderer;
import org.achartengine.renderer.SimpleSeriesRenderer;
import org.achartengine.renderer.XYMultipleSeriesRenderer;
import org.achartengine.renderer.XYSeriesRenderer;
/**
* 演示图表的一个抽象类来扩展。它包含一些方法
*/
public abstract class AbstractDemoChart implements IDemoChart {
/**
* 构建一个XY多个数据集使用提供的值。
*
* @param titles
* the series titles
* @param xValues
* the values for the X axis
* @param yValues
* the values for the Y axis
* @return the XY multiple dataset
*/
protected XYMultipleSeriesDataset buildDataset(String[] titles,
List<double[]> xValues, List<double[]> yValues) {
//
XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
addXYSeries(dataset, titles, xValues, yValues, 0);
return dataset;
}
/**
* 添加图表中显示的数据
*
* @param dataset
* @param titles
* @param xValues
* @param yValues
* @param scale
*/
public void addXYSeries(XYMultipleSeriesDataset dataset, String[] titles,
List<double[]> xValues, List<double[]> yValues, int scale) {
int length = titles.length;
for (int i = 0; i < length; i++) {
XYSeries series = new XYSeries(titles[i], scale);
double[] xV = xValues.get(i);
double[] yV = yValues.get(i);
int seriesLength = xV.length;
for (int k = 0; k < seriesLength; k++) {
series.add(xV[k], yV[k]);// 增加一个 值
}
dataset.addSeries(series);
}
}
/**
* 一个常数名称字段的活动列表。
*
* @param colors
* the series rendering colors
* @param styles
* the series point styles
* @return the XY multiple series renderers
*/
protected XYMultipleSeriesRenderer buildRenderer(int[] colors,
PointStyle[] styles) {
XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();
setRenderer(renderer, colors, styles);
return renderer;
}
protected void setRenderer(XYMultipleSeriesRenderer renderer, int[] colors,
PointStyle[] styles) {
renderer.setAxisTitleTextSize(16);
renderer.setChartTitleTextSize(20);
renderer.setLabelsTextSize(15);
renderer.setLegendTextSize(15);
renderer.setPointSize(5f);
renderer.setMargins(new int[] { 20, 30, 15, 20 });
int length = colors.length;
for (int i = 0; i < length; i++) {
XYSeriesRenderer r = new XYSeriesRenderer();
r.setColor(colors[i]);
r.setPointStyle(styles[i]);
renderer.addSeriesRenderer(r);
}
}
/**
* 渲染器设置
*
* @param renderer
* the renderer to set the properties to
* @param title
* the chart title
* @param xTitle
* the title for the X axis
* @param yTitle
* the title for the Y axis
* @param xMin
* the minimum value on the X axis
* @param xMax
* the maximum value on the X axis
* @param yMin
* the minimum value on the Y axis
* @param yMax
* the maximum value on the Y axis
* @param axesColor
* the axes color
* @param labelsColor
* the labels color
*/
protected void setChartSettings(XYMultipleSeriesRenderer renderer,
String title, String xTitle, String yTitle, double xMin,
double xMax, double yMin, double yMax, int axesColor,
int labelsColor) {
renderer.setChartTitle(title);
renderer.setXTitle(xTitle);
renderer.setYTitle(yTitle);
renderer.setXAxisMin(xMin);
renderer.setXAxisMax(xMax);
renderer.setYAxisMin(yMin);
renderer.setYAxisMax(yMax);
renderer.setAxesColor(axesColor);
renderer.setLabelsColor(labelsColor);
}
/**
* 构建一个XY多个数据集使用提供的值。
*
* @param titles
* the series titles
* @param xValues
* the values for the X axis
* @param yValues
* the values for the Y axis
* @return the XY multiple time dataset
*/
protected XYMultipleSeriesDataset buildDateDataset(String[] titles,
List<Date[]> xValues, List<double[]> yValues) {
XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
int length = titles.length;
for (int i = 0; i < length; i++) {
TimeSeries series = new TimeSeries(titles[i]);
Date[] xV = xValues.get(i);
double[] yV = yValues.get(i);
int seriesLength = xV.length;
for (int k = 0; k < seriesLength; k++) {
series.add(xV[k], yV[k]);
}
dataset.addSeries(series);
}
return dataset;
}
/**
* 构建一个提示文字值
*
* @param titles
* the series titles
* @param values
* the values
* @return the category series
*/
protected CategorySeries buildCategoryDataset(String title, double[] values) {
CategorySeries series = new CategorySeries(title);// 实例化一个图表类
int k = 0;
for (double value : values) {
series.add("Project " + ++k, value);
}
return series;
}
/**
* 建立多个类别系列使用提供的值。
*
* @param titles
* the series titles
* @param values
* the values
* @return the category series
*/
protected MultipleCategorySeries buildMultipleCategoryDataset(String title,
List<String[]> titles, List<double[]> values) {
MultipleCategorySeries series = new MultipleCategorySeries(title);
int k = 0;
for (double[] value : values) {
series.add(2007 + k + "", titles.get(k), value);
k++;
}
return series;
}
/**
* 构建一个类别渲染器使用提供的颜色
*
* @param colors
* the colors
* @return the category renderer
*/
protected DefaultRenderer buildCategoryRenderer(int[] colors) {
DefaultRenderer renderer = new DefaultRenderer();// 实例化 DefaultRenderer
renderer.setLabelsTextSize(25);// 设置內容文本大小。
renderer.setLegendTextSize(20);// 设置标签提示文本大小
renderer.setMargins(new int[] { 20, 30, 15, 0 });// 设置margin属性
for (int color : colors) {
SimpleSeriesRenderer r = new SimpleSeriesRenderer();// 构建一个简单的渲染器
r.setColor(color);// 设置颜色
renderer.addSeriesRenderer(r);// 添加一个简单的多个渲染器渲染器。
}
return renderer;
}
/**
* 构建一个酒吧多个系列数据集使用提供的值。
*
* @param titles
* the series titles
* @param values
* the values
* @return the XY multiple bar dataset
*/
protected XYMultipleSeriesDataset buildBarDataset(String[] titles,
List<double[]> values) {
XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
int length = titles.length;
for (int i = 0; i < length; i++) {
CategorySeries series = new CategorySeries(titles[i]);
double[] v = values.get(i);
int seriesLength = v.length;
for (int k = 0; k < seriesLength; k++) {
series.add(v[k]);
}
dataset.addSeries(series.toXYSeries());
}
return dataset;
}
/**
* 构建一系列酒吧多个渲染器使用提供的颜色
*
* @param colors
* the series renderers colors
* @return the bar multiple series renderer
*/
protected XYMultipleSeriesRenderer buildBarRenderer(int[] colors) {
XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();
renderer.setAxisTitleTextSize(16);
renderer.setChartTitleTextSize(20);
renderer.setLabelsTextSize(15);
renderer.setLegendTextSize(15);
int length = colors.length;
for (int i = 0; i < length; i++) {
SimpleSeriesRenderer r = new SimpleSeriesRenderer();
r.setColor(colors[i]);
renderer.addSeriesRenderer(r);
}
return renderer;
}
}
4.创建一个圆环
package com.cnten.demo.graph;
import org.achartengine.ChartFactory;
import org.achartengine.renderer.DefaultRenderer;
import org.achartengine.renderer.SimpleSeriesRenderer;
import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
/**
* 圆饼
*
* @author Administrator
*
*/
public class RoundGraph extends AbstractDemoChart {
@Override
public String getName() {
// TODO Auto-generated method stub
return null;
}
@Override
public String getDesc() {
// TODO Auto-generated method stub
return null;
}
@Override
public Intent execute(Context context) {
double[] values = new double[] { 12, 14, 11, 10, 19 };
int[] colors = new int[] { Color.BLUE, Color.GREEN, Color.MAGENTA,
Color.YELLOW, Color.CYAN };
/**
* DefaultRenderer :一个抽象的渲染器由多个系列类扩展;
* buildCategoryRenderer():构建一个类别渲染器使用提供的颜色
*/
DefaultRenderer renderer = buildCategoryRenderer(colors);
renderer.setZoomButtonsVisible(false);// 设置变焦按钮是否可见
renderer.setZoomEnabled(false);// 设置变焦的启用状态
renderer.setChartTitleTextSize(20);// 设置图表文字大小
renderer.setDisplayValues(true);// 设置是否显示文本
renderer.setShowLabels(true);// 设置标签是否可见
SimpleSeriesRenderer r = renderer.getSeriesRendererAt(0);// 返回指定的渲染器
r.setGradientEnabled(true);// 设置是否渐变
r.setGradientStart(0, Color.BLUE);// 设置渐变开始值
r.setGradientStop(0, Color.GREEN);// 设置渐变结束值
r.setHighlighted(true);// 设置是否突出
/**
* 创建一个饼图 CategorySeries dataset:, DefaultRenderer renderer:, String
* activityTitle
*/
Intent intent = ChartFactory.getPieChartIntent(context,
buildCategoryDataset("Project budget", values), renderer, "图表");
return intent;
}
}
5.activity中使用
package com.cnten.demo;
import com.cnten.demo.graph.AverageTemperatureChart;
import com.cnten.demo.graph.RoundGraph;
import com.cnten.demo.graph.TemperatureChart;
import com.cnten.demo.graph.WeightDialChart;
import android.os.Bundle;
import android.app.ListActivity;
import android.content.Intent;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class MainActivity extends ListActivity {
private String[] title = new String[] { "圆饼", "仪表盘", "折线图", "双线折线图", "雷达图" };
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setListAdapter(new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, title));
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
Intent intent = null;
switch (position) {
case 0:
intent = new RoundGraph().execute(this);
break;
case 1:
intent = new WeightDialChart().execute(this);
break;
case 2:
intent = new AverageTemperatureChart().execute(this);
break;
case 3:
intent = new TemperatureChart().execute(this);
break;
case 4:
intent = new Intent(this, SendActivity.class);
break;
}
startActivity(intent);
}
}
6.apk下载地址:
点击打开链接 访问密码 53da
本文介绍了如何在安卓应用中使用AChartEngine库来创建图表。首先,提供了下载AChartEngine jar包的链接和提取码。接着,讲解了创建图表的相关接口设计,并详细阐述了在Activity中如何集成和使用该图表引擎。

390

被折叠的 条评论
为什么被折叠?



