AChartEngine應用之PieChart(餅圖)
構建餅圖的步驟主要分為以下三步,還需要在項目中引入AChartEngine依賴jar包,在Manifest中添加:<activityandroid:name="org.achartengine.GraphicalActivity" />
1.設置DefaultRenderer
DefaultRenderer mRenderer = new DefaultRenderer();// PieChart的主要描繪器 mRenderer.setZoomButtonsVisible(true);// 顯示放大縮小功能按鈕 mRenderer.setStartAngle(180);// 設置為水平開始 mRenderer.setDisplayValues(true);// 顯示數據 mRenderer.setFitLegend(true);// 設置是否顯示圖例 mRenderer.setLegendTextSize(10);// 設置圖例字體大小 mRenderer.setLegendHeight(10);// 設置圖例高度 mRenderer.setChartTitle("餅圖示例");// 設置餅圖標題 mRenderer.setChartTitleTextSize(14);// 設置餅圖標題大小 |
2.構建數據源CategorySeries
for (int i = 0; i < data.length; i++) VALUE += data[i]; for (int i = 0; i < data.length; i++) { mSeries.add("示例 " + (i + 1), data[i] / VALUE);// 設置種類名稱和對應的數值,前面是(key,value)鍵值對 SimpleSeriesRenderer renderer = new SimpleSeriesRenderer(); if (i < COLORS.length) { renderer.setColor(COLORS[i]);// 設置描繪器的顏色 } else { renderer.setColor(getRandomColor());// 設置描繪器的顏色 } renderer.setChartValuesFormat(NumberFormat.getPercentInstance());// 設置百分比 mRenderer.setChartTitleTextSize(14);// 設置餅圖標題大小 mRenderer.addSeriesRenderer(renderer);// 將最新的描繪器添加到DefaultRenderer中 } |
3.通過ChartFactory獲取餅圖
mChartView = ChartFactory.getPieChartView(getApplicationContext(), mSeries, mRenderer);// 構建mChartView mRenderer.setClickEnabled(true);// 允許點擊事件 mChartView.setOnClickListener(new View.OnClickListener() {// 具體內容 } |
運行效果圖:
code
package com.qiuzhping.achart; import java.text.NumberFormat; import java.util.Random; import org.achartengine.ChartFactory; import org.achartengine.GraphicalView; import org.achartengine.model.CategorySeries; import org.achartengine.model.SeriesSelection; 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; import android.view.ViewGroup.LayoutParams; import android.widget.LinearLayout; import android.widget.Toast; /** * @項目名稱:AChart * @類名稱:PieChartBuilder * @作者:Qiuzhping * @時間:2014-1-15下午11:20:48 * @作用 :構建餅圖,并產生與用戶交互,點擊對應的區域能正確顯示信息 */ public class PieChartBuilder extends Activity { private static int[] COLORS = new int[] { Color.RED, Color.GREEN, Color.BLUE, Color.MAGENTA, Color.CYAN, Color.YELLOW, Color.DKGRAY }; double data[] = new double[] { 20, 30, 40, 50, 60, 70, 80, 90, 100 }; private CategorySeries mSeries = new CategorySeries("");// PieChart的DataSet // 其實就是一些鍵值對,跟Map使用方法差不多 private DefaultRenderer mRenderer = new DefaultRenderer();// PieChart的主要描繪器 private GraphicalView mChartView;// 用來顯示PieChart 需要在配置文件Manifest中添加 // <activity // android:name="org.achartengine.GraphicalActivity" // /> private LinearLayout mLinear; private static double VALUE = 0;// 總數 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.xy_chart); mLinear = (LinearLayout) findViewById(R.id.chart); mLinear.setBackgroundColor(Color.BLACK); mRenderer.setZoomButtonsVisible(true);// 顯示放大縮小功能按鈕 mRenderer.setStartAngle(180);// 設置為水平開始 mRenderer.setDisplayValues(true);// 顯示數據 mRenderer.setFitLegend(true);// 設置是否顯示圖例 mRenderer.setLegendTextSize(10);// 設置圖例字體大小 mRenderer.setLegendHeight(10);// 設置圖例高度 mRenderer.setChartTitle("餅圖示例");// 設置餅圖標題 for (int i = 0; i < data.length; i++) VALUE += data[i]; for (int i = 0; i < data.length; i++) { mSeries.add("示例 " + (i + 1), data[i] / VALUE);// 設置種類名稱和對應的數值,前面是(key,value)鍵值對 SimpleSeriesRenderer renderer = new SimpleSeriesRenderer(); if (i < COLORS.length) { renderer.setColor(COLORS[i]);// 設置描繪器的顏色 } else { renderer.setColor(getRandomColor());// 設置描繪器的顏色 } renderer.setChartValuesFormat(NumberFormat.getPercentInstance());// 設置百分比 mRenderer.setChartTitleTextSize(14);// 設置餅圖標題大小 mRenderer.addSeriesRenderer(renderer);// 將最新的描繪器添加到DefaultRenderer中 } if (mChartView == null) {// 為空需要從ChartFactory獲取PieChartView mChartView = ChartFactory.getPieChartView(getApplicationContext(), mSeries, mRenderer);// 構建mChartView mRenderer.setClickEnabled(true);// 允許點擊事件 mChartView.setOnClickListener(new View.OnClickListener() {// 具體內容 @Override public void onClick(View v) { SeriesSelection seriesSelection = mChartView .getCurrentSeriesAndPoint();// 獲取當前的類別和指針 if (seriesSelection == null) { Toast.makeText(getApplicationContext(), "您未選擇數據", Toast.LENGTH_SHORT).show(); } else { for (int i = 0; i < mSeries.getItemCount(); i++) { mRenderer.getSeriesRendererAt(i) .setHighlighted( i == seriesSelection .getPointIndex()); } mChartView.repaint(); Toast.makeText( getApplicationContext(), "您選擇的是第" + (seriesSelection .getPointIndex() + 1) + " 項 " + " 百分比為 " + NumberFormat .getPercentInstance() .format(seriesSelection .getValue()), Toast.LENGTH_SHORT).show(); } } }); mLinear.addView(mChartView, new LayoutParams( LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); } else { mChartView.repaint(); } } private int getRandomColor() {// 分別產生RBG數值 Random random = new Random(); int R = random.nextInt(255); int G = random.nextInt(255); int B = random.nextInt(255); return Color.rgb(R, G, B); } }
對應的項目源碼:http://download.csdn.net/detail/qiu_11/6853469
待續.......
AChartEngine應用系列文章
(二)AChartEngine應用之PieChart(餅圖)
(三)
AChartEngine應用之BarChart(柱形圖)
(四)
AChartEngine應用之PieChart(動態餅圖,允許產生動態數據并顯示)
(五)
AChartEngine應用之LineChart(模擬生命特征值圖)
(六)
AChartEngine應用之LineChart(模擬三角函數sin,cos)
(七) AChartEngine高級應用 CombinedXYChart (組合統計圖)
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
