很多時候項目中我們需要對一些統計數據進行繪制表格,更多直觀查看報表分析結果。基本有以下幾種方法:
1:可以進行android api進行draw這樣的話,效率比較低
2:使用開源繪表引擎,這樣效率比較高.下面就介紹一種。
AChartEngine(簡稱ACE)是Google的一個開源圖表庫(for Android)。它功能強大,支持散點圖、折線圖、餅圖、氣泡圖、柱狀圖、短棒圖、儀表圖等多種圖表。
你可以選擇合適的版本下載,每個版本都有一個jar包、實例源代碼和java doc提供下載。當前最新版本為1.1.0。
上面是兩幅用該引擎繪制出來的圖標例子.
如上圖所示:可以有demo源代碼,文檔和jar包,根據所需進行下載:
下面稍微演示一下生成一個樹狀圖:
1:新建項目,把jar引入進去
2:在Androidmanifest.xml文件中進行配置文件
<activity android:name="org.achartengine.GraphicalActivity" />
因為接下來要考這個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就可以顯示樹狀圖了。
上面的注釋已經寫的比較清楚了。基本是可以明白的。更多圖表的例子可以在http://code.google.com/p/achartengine/中下載demo