AChartEngine应用之PieChart(饼图)

来源:互联网 发布:js 向数组添加对象 编辑:程序博客网 时间:2024/04/25 02:20

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;// 总数@Overrideprotected 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获取PieChartViewmChartView = ChartFactory.getPieChartView(getApplicationContext(),mSeries, mRenderer);// 构建mChartViewmRenderer.setClickEnabled(true);// 允许点击事件mChartView.setOnClickListener(new View.OnClickListener() {// 具体内容@Overridepublic 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);}}



0 0
原创粉丝点击