1、pie chart介紹
aChartEngine中的pie Chart其實就是一個餅狀圖,是數據顯示的一種。效果如圖:
2、如何使用pie chart。
其實aChartEngine是使用是非常簡單的,不同的chart的使用方式都是一樣的,並不需要我們根據不同的chart調用不同的接口,接口都是統一的。那么我們應該如何使用呢?總結了一下分為兩步:
①獲取數據dataSet;
②獲取渲染器render。
其實這很好理解,一個圖表其實本來就是一些數據的顯示方式。所以你必須得有數據(dataset),有了數據之后你總得知道應該以什么樣的方式來顯示吧(render)。這么看來這兩部分是缺一不可的,而且功能很明確。
3、demo。
package com.example.test; import org.achartengine.ChartFactory; import org.achartengine.model.CategorySeries; import org.achartengine.renderer.DefaultRenderer; import org.achartengine.renderer.SimpleSeriesRenderer; import android.app.Activity; import android.graphics.Color; import android.os.Bundle; import android.view.View; public class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); double[] values = new double[] { 12, 14, 11, 10, 19 }; 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); // Intent intent = ChartFactory.getPieChartIntent(this, buildCategoryDataset("Project budget", values), renderer, "Budget"); // startActivity(intent); View view = ChartFactory.getPieChartView(this, buildCategoryDataset("Project budget", values), renderer); view.setBackgroundColor(Color.BLACK); setContentView(view); } protected DefaultRenderer buildCategoryRenderer(int[] colors) { DefaultRenderer renderer = new DefaultRenderer(); renderer.setLabelsTextSize(15); renderer.setLegendTextSize(15); renderer.setMargins(new int[] { 20, 30, 15, 0 }); for (int color : colors) { SimpleSeriesRenderer r = new SimpleSeriesRenderer(); r.setColor(color); renderer.addSeriesRenderer(r); } return renderer; } protected CategorySeries buildCategoryDataset(String title, double[] values) { CategorySeries series = new CategorySeries(title); int k = 0; for (double value : values) { series.add("Project " + ++k + " (" + value + ")", value); } return series; } }
4、分析demo。
代碼中比較關鍵的地方其實是 ChartFactory.getPieChartView,它返回一個view,也就是我們需要顯示的chart。那么我們看看這個方法(在doc上有開發說明):
public static final GraphicalView getPieChartView(android.content.Context context, CategorySeries dataset, DefaultRenderer renderer)
Creates a pie chart intent that can be used to start the graphical view activity.
-
- Parameters:
-
context
- the context -
dataset
- the category series dataset (cannot be null) -
renderer
- the series renderer (cannot be null) - Returns:
- a pie chart view
- Throws:
-
java.lang.IllegalArgumentException
- if dataset is null or renderer is null or if the dataset number of items is different than the number of series renderer。
所以需要兩個非常重要的參數,也就是開始我們提到的dataset、renderer。具體是如何構造的見代碼。
這里需要值一提的是dataset中的item數應該和renderer中的SeriesRenderer數相等。每組數據應該對已一個renderer,也就是說每一組數據都應有自己獨立的顯示樣式。
5、總結。
pie Chart 是achartengine里面最簡單的chart,使用起來很方便。它需要的dataset中需要離散的幾個數,而不是離散的幾個點。
在使用上面的代碼前一定要引入achartengine1.0.0.jar包,如果運行時有找不到類、類定義這樣的問題,也許我的博文http://www.cnblogs.com/vanezkw/archive/2012/06/25/2561393.html可以幫助到你。
我的另一篇博文http://www.cnblogs.com/vanezkw/archive/2012/07/27/2611177.html對achartengine做了簡單的介紹。
歡迎交流。期待你的寶貴意見。