Android中圖表AChartEngine學習使用與例子

很多時候項目中我們需要對一些統計數據進行繪制表格,更多直觀查看報表分析結果。基本有以下幾種方法:

1:可以進行android api進行draw這樣的話,效率比較低

2:使用開源繪表引擎,這樣效率比較高.下面就介紹一種。

AChartEngine(簡稱ACE)是Google的一個開源圖表庫(for Android)。它功能強大,支持散點圖、折線圖、餅圖、氣泡圖、柱狀圖、短棒圖、儀表圖等多種圖表。

該項目地址位於: https://code.google.com/p/achartengine/

你可以選擇合適的版本下載,每個版本都有一個jar包、實例源代碼和java doc提供下載。當前最新版本為1.1.0。

上面是兩幅用該引擎繪制出來的圖標例子.vcD4KPHA+CjxpbWcgc3JjPQ==”/uploadfile/Collfiles/20140307/2014030715095551.jpg” alt=”\”>

如上圖所示:可以有demo源代碼,文檔和jar包,根據所需進行下載:

下面稍微演示一下生成一個樹狀圖:

1:新建項目,把jar引入進去

2:在Androidmanifest.xml文件中進行配置文件

因為接下來要考這個Activity進行顯示圖表

3:下面創建一個AChart接口

public interface AChartAbstract {
	
	/**
	 * 獲取一個當前類型圖標的Intent實例
	 */
	public Intent getIntent(Context context);
}

4:創建BarChart.java進行準備數據源和引擎設置

public class BarChart implements AChartAbstract {

	public Intent getIntent(Context context) {
		Intent mIntent=ChartFactory.getBarChartIntent(context, getDataSet(), getRenderer(), Type.STACKED, "當月開票金額樹狀圖");
		return mIntent;
	}

	/**
	 * 構造數據
	 * @return
	 */
	public XYMultipleSeriesDataset getDataSet() {
		// 構造數據
		XYMultipleSeriesDataset barDataset = new XYMultipleSeriesDataset();
		CategorySeries barSeries = new CategorySeries("2014年3月");
		barSeries.add(865.5969);
		barSeries.add(2492.6479);
		barSeries.add(891.0137);
		barSeries.add(0.0);
		barSeries.add(691.0568);
		barDataset.addSeries(barSeries.toXYSeries());
		return barDataset;
	}

	/**
	 * 構造渲染器
	 * @return
	 */
	public XYMultipleSeriesRenderer getRenderer() {
		XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();
//		renderer.setChartTitle("當月開票");
//		// 設置標題的字體大小
//		renderer.setChartTitleTextSize(16);
		renderer.setXTitle("事業部");
		renderer.setYTitle("單位(萬元)");
		renderer.setAxesColor(Color.WHITE);
		renderer.setLabelsColor(Color.WHITE);
		// 設置X軸的最小數字和最大數字
		renderer.setXAxisMin(0.5);
		renderer.setXAxisMax(5.5);
		// 設置Y軸的最小數字和最大數字
		renderer.setYAxisMin(0);
		renderer.setYAxisMax(3000);
		renderer.addXTextLabel(1, "電網");
		renderer.addXTextLabel(2, "通信");
		renderer.addXTextLabel(3, "寬帶");
		renderer.addXTextLabel(4, "專網");
		renderer.addXTextLabel(5, "軌交");
		renderer.setZoomButtonsVisible(true);
		// 設置渲染器允許放大縮小
		renderer.setZoomEnabled(true);
		// 消除鋸齒
		renderer.setAntialiasing(true);
		// 設置背景顏色
		renderer.setApplyBackgroundColor(true);
		renderer.setBackgroundColor(Color.GRAY);
		// 設置每條柱子的顏色
		SimpleSeriesRenderer sr = new SimpleSeriesRenderer();
		sr.setColor(Color.YELLOW);
		renderer.addSeriesRenderer(sr);
		// 設置每個柱子上是否顯示數值
		renderer.getSeriesRendererAt(0).setDisplayChartValues(true);
		// X軸的近似坐標數  (這樣不顯示橫坐標)
		renderer.setXLabels(0);
		// Y軸的近似坐標數
		renderer.setYLabels(6);
		// 刻度線與X軸坐標文字左側對齊
		renderer.setXLabelsAlign(Align.LEFT);
		// Y軸與Y軸坐標文字左對齊
		renderer.setYLabelsAlign(Align.LEFT);
		// 允許左右拖動,但不允許上下拖動.
		renderer.setPanEnabled(true, false);
		// 柱子間寬度
		renderer.setBarSpacing(0.5f);
		// 設置X,Y軸單位的字體大小
		renderer.setAxisTitleTextSize(20);
		return renderer;
	}

最後主函數直接

Intent lineIntent = new BarChart().getIntent(this);
			startActivity(lineIntent);

直接啟動Androidmanifest.xml已經配置的activity就可以顯示樹狀圖瞭。


上面的註釋已經寫的比較清楚瞭。基本是可以明白的。更多圖表的例子可以在https://code.google.com/p/achartengine/中下載demo

發佈留言