目前android上圖標引擎并不少見,像aChartEngine就能很好的完成繪圖:
目前創新互聯公司已為數千家的企業提供了網站建設、域名、網絡空間、成都網站托管、企業網站設計、當涂網站維護等服務,公司將堅持客戶導向、應用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協力一起成長,共同發展。
aChartEngine支持:1、line?chart?(折線圖)?2、area?chart?(面積圖;分區圖,對比圖)?3、scatter?chart?(?散點圖)?4、time?chart?(時間圖;進度表)?5、bar?chart?(條形圖;柱狀圖)?6、pie?chart?(?餅圖)?7、bubble?chart?(氣泡圖)?8、doughnut?chart?(圓環圖)?9、range?(high-low)?bar?chart?(范圍條形圖)??10、dial?chart?/?gauge?(撥號盤/壓力表)?11、combined?(any?combination?of?line,?cubic?line,?scatter,?bar,?range?bar,?bubble)?chart(組合圖)?12、cubic?line?chart?(立方折線圖)
上述所有支持的圖表類型,都可以包含多個系列,都支持水平(默認)或垂直方式展示圖表,并且支持許多其他的自定義功能。所有圖表都可以建立為一個view,也可以建立為一個用于啟動activity的intent.
下面是一個餅狀圖的源碼事例:
package org.achartengine.chartdemo.demo.chart;
import org.achartengine.ChartFactory;
import org.achartengine.renderer.DefaultRenderer;
import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
public class BudgetPieChart extends AbstractDemoChart {
public String getName() {
return "Budget chart";
}
public String getDesc() {
return "The budget per project for this year (pie chart)";
}
public Intent execute(Context context) {
double[] values = new double[] { 12, 14, 11, 10, 19 };//餅圖分層5塊,每塊代表的數值
int[] colors = new int[] { Color.BLUE, Color.GREEN, Color.MAGENTA, Color.YELLOW, Color.CYAN };//每塊餅圖的顏色
DefaultRenderer renderer = buildCategoryRenderer(colors);
renderer.setZoomButtonsVisible(true);//設置顯示放大縮小按鈕
renderer.setZoomEnabled(true);//設置允許放大縮小.
renderer.setChartTitleTextSize(20);//設置圖表標題的文字大小
return ChartFactory.getPieChartIntent(context, buildCategoryDataset("Project budget", values),
? renderer, "Budget");//構建Intent, buildCategoryDataset是調用AbstraDemoChart的構建方法.
}
}
有很多動態的第三方庫可以使用。例如achartengine
AChartEngine是一款基于Android的圖表繪制引擎,它為Android開發者提供了很多實用的圖表繪制工具類。
第一步:
獲取Android設備的屏幕大小
第二步:
在View對象中使用Canvas繪制藍色邊框與白色背景XY軸兩條線,代碼如下
第三步:
繪制柱狀圖標題
第四步:
根據數據集計算出每個系列數據所占X軸的大小,來繪制X 數據名稱
第五步:
根據數據集計算出數據單元大小,并將數據單元映射為像素單元,繪制出標尺單位與
背景虛線
第六步:
根據數據集的值來計算出柱狀圖的高度,以及柱狀圖的寬度大小,映射為像素值以后
完成繪制。
程序效果圖:
技術點詳解:
在View中獲取Android設備屏幕大小的方法為:
[java] view plaincopy
// get default screen size from system service
WindowManager wm = (WindowManager) this.getContext().getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
int width = display.getWidth();
在Activity中獲取Android設備屏幕大小的方法為:
[java] view plaincopy
DisplayMetrics displaymetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
int height = displaymetrics.heightPixels;
int wwidth = displaymetrics.widthPixels;
計算X軸中每個系列所占大小的代碼為:
[java] view plaincopy
int count = series.getSeriesCount();
int xUnit = (width - 2 - xOffset)/count;
其中xOffset, yOffset值計算公式如下:
[java] view plaincopy
int xOffset = (int)(width * 0.1);
int yOffset = (int)(height * 0.1);
計算每個系類中,每個柱狀圖之間縫隙大小的為:
[java] view plaincopy
int barWidth = (int)(xUnit/Math.pow(itemList.size(),2));
int startPos = xOffset + 2 + xPadding + xUnit*i;
int interval = barWidth/2;
其中barWidth表示每個柱狀矩形的寬度,interval表示同一數據系列中表示
每個矩形之間的間隔。
ChartView是一個Android開源圖表庫。目前僅支持折線圖,曲線圖,柱狀圖,餅狀圖,以及折線圖和曲線圖點擊之后的狀態變化,可以選擇是畫一個圖片還是一個背景框。
折線圖和曲線圖:
餅狀圖有內圓:
餅狀圖沒有內圓:
其他同折線圖
github地址:
為大家介紹一款圖標開源庫MPAndroidChart,它不僅可以在Android設備上繪制各種統計圖表,而且可以對圖表進行拖動和縮放操作,用起來非常靈活。MPAndroidChart同樣擁有常用的圖表類型:線型圖、餅圖、柱狀圖和散點圖。
mpandroidchartlibrary.jar包下載地址:
下面主要實現以下餅狀圖:
1.從上面的地址中下載最新mpandroidchartlibrary-2-0-8.jar包, 然后copy到項目的libs中
2. 定義xml文件