Androidは統計図AChartEngineを使用してデータを表示


本明細書で使用する統計図の参照:AChartEngine
アクセス先:http://code.google.com/p/achartengine/
まず効果図を与える
Android使用统计图AChartEngine 来展示数据_第1张图片
Android使用统计图AChartEngine 来展示数据_第2张图片
本文の開発コードは主にこれらである:いくつかのコードを修正する
以下のファイルは公式ダウンロードをそのまま使用したものです
これらは主にファイル【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);

このまま運転するとエラーが発生します
プロファイルにコードを追加する必要があります.
 

 
以上、AChartEngineの使い方について概説しました.提供されているAPIを見るのを忘れないでください.中にはいろいろな方法がありますよ.