很多時(shí)候項(xiàng)目中我們需要對(duì)一些統(tǒng)計(jì)數(shù)據(jù)進(jìn)行繪制表格,更多直觀查看報(bào)表分析結(jié)果?;居幸韵聨追N方法:
左云網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián)公司,左云網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為左云近千家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站制作要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的左云做網(wǎng)站的公司定做!
1:可以進(jìn)行android api進(jìn)行draw這樣的話,效率比較低
2:使用開(kāi)源繪表引擎,這樣效率比較高.下面就介紹一種。
AChartEngine(簡(jiǎn)稱ACE)是Google的一個(gè)開(kāi)源圖表庫(kù)(for Android)。它功能強(qiáng)大,支持散點(diǎn)圖、折線圖、餅圖、氣泡圖、柱狀圖、短棒圖、儀表圖等多種圖表。
你可以選擇合適的版本下載,每個(gè)版本都有一個(gè)jar包、實(shí)例源代碼和java doc提供下載。當(dāng)前最新版本為1.1.0。
上面是兩幅用該引擎繪制出來(lái)的圖標(biāo)例子.
如上圖所示:可以有demo源代碼,文檔和jar包,根據(jù)所需進(jìn)行下載:
下面稍微演示一下生成一個(gè)樹(shù)狀圖:
1:新建項(xiàng)目,把jar引入進(jìn)去
2:在Androidmanifest.xml文件中進(jìn)行配置文件
因?yàn)榻酉聛?lái)要考這個(gè)Activity進(jìn)行顯示圖表
3:下面創(chuàng)建一個(gè)AChart接口
public interface AChartAbstract { /** * 獲取一個(gè)當(dāng)前類型圖標(biāo)的Intent實(shí)例 */ public Intent getIntent(Context context); }4:創(chuàng)建BarChart.java進(jìn)行準(zhǔn)備數(shù)據(jù)源和引擎設(shè)置
public class BarChart implements AChartAbstract { public Intent getIntent(Context context) { Intent mIntent=ChartFactory.getBarChartIntent(context, getDataSet(), getRenderer(), Type.STACKED, "當(dāng)月開(kāi)票金額樹(shù)狀圖"); return mIntent; } /** * 構(gòu)造數(shù)據(jù) * @return */ public XYMultipleSeriesDataset getDataSet() { // 構(gòu)造數(shù)據(jù) 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; } /** * 構(gòu)造渲染器 * @return */ public XYMultipleSeriesRenderer getRenderer() { XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer(); // renderer.setChartTitle("當(dāng)月開(kāi)票"); // // 設(shè)置標(biāo)題的字體大小 // renderer.setChartTitleTextSize(16); renderer.setXTitle("事業(yè)部"); renderer.setYTitle("單位(萬(wàn)元)"); renderer.setAxesColor(Color.WHITE); renderer.setLabelsColor(Color.WHITE); // 設(shè)置X軸的最小數(shù)字和最大數(shù)字 renderer.setXAxisMin(0.5); renderer.setXAxisMax(5.5); // 設(shè)置Y軸的最小數(shù)字和最大數(shù)字 renderer.setYAxisMin(0); renderer.setYAxisMax(3000); renderer.addXTextLabel(1, "電網(wǎng)"); renderer.addXTextLabel(2, "通信"); renderer.addXTextLabel(3, "寬帶"); renderer.addXTextLabel(4, "專網(wǎng)"); renderer.addXTextLabel(5, "軌交"); renderer.setZoomButtonsVisible(true); // 設(shè)置渲染器允許放大縮小 renderer.setZoomEnabled(true); // 消除鋸齒 renderer.setAntialiasing(true); // 設(shè)置背景顏色 renderer.setApplyBackgroundColor(true); renderer.setBackgroundColor(Color.GRAY); // 設(shè)置每條柱子的顏色 SimpleSeriesRenderer sr = new SimpleSeriesRenderer(); sr.setColor(Color.YELLOW); renderer.addSeriesRenderer(sr); // 設(shè)置每個(gè)柱子上是否顯示數(shù)值 renderer.getSeriesRendererAt(0).setDisplayChartValues(true); // X軸的近似坐標(biāo)數(shù) (這樣不顯示橫坐標(biāo)) renderer.setXLabels(0); // Y軸的近似坐標(biāo)數(shù) renderer.setYLabels(6); // 刻度線與X軸坐標(biāo)文字左側(cè)對(duì)齊 renderer.setXLabelsAlign(Align.LEFT); // Y軸與Y軸坐標(biāo)文字左對(duì)齊 renderer.setYLabelsAlign(Align.LEFT); // 允許左右拖動(dòng),但不允許上下拖動(dòng). renderer.setPanEnabled(true, false); // 柱子間寬度 renderer.setBarSpacing(0.5f); // 設(shè)置X,Y軸單位的字體大小 renderer.setAxisTitleTextSize(20); return renderer; }
最后主函數(shù)直接
Intent lineIntent = new BarChart().getIntent(this); startActivity(lineIntent);直接啟動(dòng)Androidmanifest.xml已經(jīng)配置的activity就可以顯示樹(shù)狀圖了。
上面的注釋已經(jīng)寫(xiě)的比較清楚了?;臼强梢悦靼椎摹8鄨D表的例子可以在http://code.google.com/p/achartengine/中下載demo