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