本文采用的统计图参考: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()
*/
@Override
public String getName() {
// TODO Auto-generated method stub
return "WeightTimeChart";
}
/* (non-Javadoc)
* @see com.cayden.weightnotes.achartengine.IDemoChart#getDesc()
*/
@Override
public String getDesc() {
// TODO Auto-generated method stub
return "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)
*/
@Override
public Intent execute(Context context) {
// TODO Auto-generated method stub
return 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,里面有很多方法哦!