1. 程式人生 > >Android使用j4lChartAndroid外掛繪製3D餅圖

Android使用j4lChartAndroid外掛繪製3D餅圖

圖表是常見的直觀表示資料的途徑,目前在android手機上繪製圖表基本有兩種方法:一是利用java的canvas自己繪製,這種方法自己可操作性強,可以隨心所欲地繪製,但是缺點就是工作量大;二是利用第三方外掛。本文將給大家介紹一下利用第三方外掛j4lChartAndroid如何繪製一個3D餅圖。效果如圖:

提供j4lChartAndroid.jar檔案 點選開啟連結  也可以下載文章最後的demo,裡面也有這個外掛。

奉上主體繪製圖表的函式

	public static Chart TheChart()
	{
		//new出來一個圖餅的物件, 引數簡介1.所佔的比例 2.顏色 3.是否分組(是否種其他的塊是分開的) 4.文字介紹
        PieDataSerie pds = new PieDataSerie(values, fillStyleColor,
				groupValues, null);
        //設定label的樣式
        pds.valueFont = GraphicsProvider.getFont("Arial", ChartFont.PLAIN, 20);
        //設定label到中心的距離
        pds.textDistanceToCenter = 1.4;
        
        //設定圖餅的標題
        Title title = new Title("理財賬戶");
        //開始繪圖
        PiePlotter pp = new PiePlotter();
        //設定3D效果為true
        pp.effect3D = true;
        //設定邊框
        pp.border = new LineStyle(1,GraphicsProvider.getColor(ChartColor.BLACK),LineStyle.LINE_NORMAL);
        //設定label的格式(#PERCENTAGE#,#VALUE#,#LABEL#)什麼也不想顯示的話直接“ ”裡面有一個空格就可以了
        pp.labelFormat = "#PERCENTAGE#";
        //設定半徑
        pp.radiusModifier = 1.5;
        //設定塊與塊之間的間隔
        pp.space = 10;
        //設定label到塊之間的線的樣式
        pp.labelLine = new LineStyle(1,GraphicsProvider.getColor(ChartColor.BLACK),LineStyle.LINE_NORMAL);
        
        //生成一個物件
        Legend legend = new Legend();
        //因為我這裡不需要解說,所以設定它為" ",中間有空格,沒有空格的話,會出現多餘的文字
        legend.legendLabel="";
		for (int i = 0; i < values.length; i++) 
		{
			legend.addItem(lableName[i], new FillStyle(color[i]));
		}
        //new一個圖表物件,用來存放生成的圖餅
        com.java4less.rchart.Chart chart = new com.java4less.rchart.Chart(title, pp, null, null);
        chart.layout = com.java4less.rchart.Chart.LAYOUT_LEGEND_TOP;
        chart.back = new FillStyle(GraphicsProvider.getColor(ChartColor.WHITE));
        chart.topMargin = 0.2;
        chart.bottomMargin = 0.1; 
        chart.leftMargin =0.1;
        chart.legend = legend;
		chart.setHeight(width/3*2);
		chart.setWidth(height/3*2);
        chart.addSerie(pds);
        return chart;
	}
細心的小夥伴會發現,在圖例的最上方有個討厭的水印,去掉它很簡單,在程式碼
legend.legendLabel="";
需要在引號中加個空格,否則無論賦什麼值都會有這個水印

使用這個函式,除了準備資料等初值之外,還需宣告一個chartpanel,用chartpanel的setchart方法將該函式返回的chart傳進去,再將這個chartpanel新增到linearlayout中顯示。最後注意,在頁面銷燬時要chartpanel.getChart().stopUpdater(),如果需要重新整理餅圖,首先要先清除掉linearlayout中的view,再重新新增

最後奉上自己的demo ,如有不足之處,還望大家指出!

點選開啟連結