Android使用统计图AChartEngine 来展示数据本文采用的统计图参考:AChartEngine访问地址 :http://code.goog
Android使用统计图AChartEngine 来展示数据
本文采用的统计图参考:AChartEngine
访问地址 :http://code.google.com/p/achartengine/
先给出效果图


本文的开发代码主要是这些:对一些代码进行修改
以下文件是直接使用官方下载后
这些主要是对文件【WeightTimeChart.java】做了修改
/** * WeightTimeChart.java * 版权所有(C) 2013 * 创建:cuiran 2013-10-24 下午4:11:28 */package com.cayden.weightnotes.achartengine;import java.util.Date;import java.util.Random;import org.achartengine.ChartFactory;import org.achartengine.chart.PointStyle;import org.achartengine.chart.TimeChart;import org.achartengine.model.TimeSeries;import org.achartengine.model.XYMultipleSeriesDataset;import org.achartengine.renderer.SimpleSeriesRenderer;import org.achartengine.renderer.XYMultipleSeriesRenderer;import org.achartengine.renderer.XYSeriesRenderer;import com.cayden.weightnotes.util.VeDate;import android.content.Context;import android.content.Intent;import android.graphics.Color;/** * TODO 折线图 * @author cuiran * @version 1.0.0 */public class WeightTimeChart extends AbstractDemoChart {private static final int SERIES_NR = 1;/* (non-Javadoc) * @see com.cayden.weightnotes.achartengine.IDemoChart#getName() */@Overridepublic String getName() {// TODO Auto-generated method stubreturn "WeightTimeChart";}/* (non-Javadoc) * @see com.cayden.weightnotes.achartengine.IDemoChart#getDesc() */@Overridepublic String getDesc() {// TODO Auto-generated method stubreturn "WeightTimeChart";} private XYMultipleSeriesDataset getDateDemoDataset() { XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset(); final int nr = 7; long value = new Date().getTime() - 3 * TimeChart.DAY; Random r = new Random(); for (int i = 0; i < SERIES_NR; i++) { TimeSeries series = new TimeSeries("体重变化趋势 "); series.add(VeDate.strToDate("2013-10-19"), 85.3); series.add(VeDate.strToDate("2013-10-20"), 85.6); series.add(VeDate.strToDate("2013-10-21"), 84.5); series.add(VeDate.strToDate("2013-10-22"), 85.0); series.add(VeDate.strToDate("2013-10-23"), 85.1); series.add(VeDate.strToDate("2013-10-24"), 85.3); series.add(VeDate.strToDate("2013-10-25"), 85.3); series.add(VeDate.strToDate("2013-10-26"), 85.3); // for (int k = 0; k < nr; k++) {// series.add(new Date(value + k * TimeChart.DAY / 4), 20 + r.nextInt() % 100);// } dataset.addSeries(series); } return dataset; } private XYMultipleSeriesRenderer getDemoRenderer() { XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer(); renderer.setAxisTitleTextSize(19); renderer.setChartTitleTextSize(23); renderer.setLabelsTextSize(18); renderer.setLegendTextSize(18); renderer.setPointSize(6f); //in this order: top, left, bottom, right renderer.setMargins(new int[] {20, 30, 15, 0}); XYSeriesRenderer r = new XYSeriesRenderer(); r = new XYSeriesRenderer(); r.setPointStyle(PointStyle.CIRCLE); r.setColor(Color.GREEN); r.setFillPoints(true); renderer.addSeriesRenderer(r); renderer.setAxesColor(Color.DKGRAY); renderer.setLabelsColor(Color.LTGRAY); renderer.setChartTitle("体重变化趋势"); renderer.setXTitle("日期"); renderer.setYTitle("体重(kg)"); renderer.setZoomButtonsVisible(true); int length = renderer.getSeriesRendererCount(); for (int i = 0; i < length; i++) { SimpleSeriesRenderer seriesRenderer = renderer.getSeriesRendererAt(i); seriesRenderer.setDisplayChartValues(true); } return renderer; }/* (non-Javadoc) * @see com.cayden.weightnotes.achartengine.IDemoChart#execute(android.content.Context) */@Overridepublic Intent execute(Context context) {// TODO Auto-generated method stubreturn ChartFactory.getTimeChartIntent(context, getDateDemoDataset(), getDemoRenderer(), "yyyy-MM-dd");}}如何调用呢?需要先获取对象参考提供的demo
private IDemoChart[] mCharts = new IDemoChart[] {new WeightDialChart(),new WeightTimeChart()};Intent intent=mCharts[1].execute(this); startActivity(intent);
如果直接这样运行会报错
需要在配置文件中添加代码:
<activity android:name="org.achartengine.GraphicalActivity" />
以上是针对如何使用AChartEngine 进行了大概说明。不要忘记看提供的API,里面有很多方法哦!
