在一个安卓项目中大量使用了MPAndroidChart的饼图,所以大致总结一下使用方法。

1.引入

  app下的build.gradle中加入:

implementation 'com.github.PhilJay:MPAndroidChart:v3.0.2'

2.初始化

pieChart = findViewById(R.id.pie_chart);
pieChart.setNoDataText("No chart data available.");

  初始化后如下所示:

3.添加数据

  pieChart添加数据就是一句代码:

pieChart.setData(pieData);

  其中pieData是PieData类型数据:

PieData pieData = new PieData(pieDataSet);

  所以我们现在要得到pieDataSet:

PieDataSet pieDataSet = new PieDataSet(pieEntries, "");

  最终归结到pieEntries上。

生成PieEntry

ArrayList<String> name = new ArrayList<>(Arrays.asList("优秀", "良好", "中等","及格", "不及格"));
List<PieEntry> pieEntries = new ArrayList<>();
ArrayList<String> rate = new ArrayList<>();//计算百分比
for(int i = 0; i < 5; i++) {DecimalFormat df = new DecimalFormat("0.00%");String decimal = df.format(data[i] / (data[0] + data[1] + data[2] + data[3] + data[4]));PieEntry pieEntry = new PieEntry(data[i] / (data[0] + data[1] + data[2] + data[3] + data[4]), name.get(i));pieEntries.add(pieEntry);rate.add(decimal);//name[i] = name[i] + decimal;
}

  其中data包含五个整数,分别表示五个扇形的占比大小,生成PieEntry:

PieEntry pieEntry = new PieEntry(data[i] / (data[0] + data[1] + data[2] + data[3] + data[4]), name.get(i));

设置扇形数据及颜色:

ArrayList<Integer> colors = new ArrayList<>();
colors.add(Color.parseColor("#6BE61A"));
colors.add(Color.parseColor("#4474BB"));
colors.add(Color.parseColor("#AA7755"));
colors.add(Color.parseColor("#BB5C44"));
colors.add(Color.parseColor("#E61A1A"));PieDataSet pieDataSet = new PieDataSet(pieEntries, "");
pieDataSet.setSliceSpace(1f); //设置个饼状图之间的距离
pieDataSet.setColors(colors);
pieDataSet.setValueTextSize(0);

  考虑到有的人只存在一两种颜色,比如全是优秀或者只有优秀良好两种,这种情况下如果设置标签在扇形图内必然会显得很拥挤,所以将每个扇形的标签字体大小设置为0,不再显示:

pieDataSet.setValueTextSize(0);

设置PieData

PieData pieData = new PieData(pieDataSet);
pieChart.setData(pieData);
pieChart.setDrawCenterText(true);//显示中间文字
pieChart.setCenterText(text1 + "\n" + text2);
pieChart.setCenterTextSize(20);//中间文字大小
pieChart.setCenterTextColor(Color.parseColor("#3CC4C4"));中间文字颜色
pieChart.setEntryLabelTextSize(0);//标签不显示
Description description = new Description();//设置描述
description.setText("");
pieChart.setDescription(description);

设置Legend

Legend legend = pieChart.getLegend();
legend.setHorizontalAlignment(Legend.LegendHorizontalAlignment.CENTER);
legend.setTextSize(12);

4.点击事件

  由于我没有显示每个扇形的占比数据,所以需要在点击后显示相应比例:

pieChart.setOnChartValueSelectedListener(new OnChartValueSelectedListener() {@Overridepublic void onValueSelected(Entry e, Highlight h) {if(e == null) {return;}if(pieEntries.get(0).getValue() == e.getY()) {ToastUtil.showMessage(GradeRateActivity.this, name.get(0) + "占比" + rate.get(0));}else if(pieEntries.get(1).getValue() == e.getY()) {ToastUtil.showMessage(GradeRateActivity.this, name.get(1) + "占比" + rate.get(1));}else if(pieEntries.get(2).getValue() == e.getY()) {ToastUtil.showMessage(GradeRateActivity.this, name.get(2) + "占比" + rate.get(2));}else if(pieEntries.get(3).getValue() == e.getY()) {ToastUtil.showMessage(GradeRateActivity.this, name.get(3) + "占比" + rate.get(3));}else if(pieEntries.get(4).getValue() == e.getY()) {ToastUtil.showMessage(GradeRateActivity.this, name.get(4) + "占比" + rate.get(4));}}@Overridepublic void onNothingSelected() {}
});

5.invalidate()

pieChart.animateXY(1000, 1000);
pieChart.invalidate();

  顺便设置了延迟1秒显示。

6.效果

MPAndroidChart饼图PieChart的使用相关推荐

  1. MPAndroidChart饼图PieChart

    之前的记账软件中,加入了GitHub上的开源项目,MPAndroid. 现在介绍一下饼状图. 首先将MPAndroidChart的jar包导入到libs中,jar包的链接可以去girhub下载,进去找 ...

  2. MPAndroidChart饼图PieChart设置百分比显示

    1.MPAndroidChart 版本 // MPAndroidChart :github.com/PhilJay/MPAndroidChart implementation 'com.github. ...

  3. MPAndroidChart——饼图

    MPAndroidChart--饼图 MPAndroidChart是安卓下的一个开源图形库,很多效果,简单看几个效果图 Github地址:https://github.com/PhilJay/MPAn ...

  4. label mpchart 饼图_MPAndroidChart之饼图PieChart

    前段时间没Android端的需求,所以在学前端,所以也差不多有一个多月没更新文章了,前端我是新手也基本没法写什么文章,只能总结一些比较基础的内容,然后现在暂时Android这边又开始了新的版本开发,所 ...

  5. piechart 文档 android,Android MPAndroidChart之PieChart和数据结构以及模型【5】

    Android MPAndroidChart之PieChart和数据结构以及模型[5] 以MPAndroidChart的饼状图PieChart为例. 测试的MainActivity的Java代码: p ...

  6. Android MPAndroidChart之饼图PieChart

    APP为了能让用户对数据有更直观,更便捷的认识,我们通常都选择了以图表的方式展示给用户,如折线图.饼图.条形图等-今天和大家分享下MPAndroidChart,一个强大便捷的图标控件. Android ...

  7. piechart 文档 android,Android饼图 PieChart

    PieChart 饼图,android 图表.会根据定义PieChartView的大小自动居中,所以如果要调整位置,只需要在xml更改PieChartView位置大小即可. 1.先看一下效果图: 展示 ...

  8. MpAndroidChart饼图

    好久没写帖子了,一直忙的要死 今天简单总结一下MpAndroidChart的饼图使用吧 先上照片吧,没做Gif,请原谅我的懒 好了,直接上xml吧,就是个很简单的布局文件,饼图中间显示统计数据 < ...

  9. Flex 饼图PieChart

    <?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="h ...

最新文章

  1. delphi中的第三方控件如何安装 (转)
  2. 产业丨一文读懂人工智能产业链,未来10年2000亿美元市场
  3. 青岛程序员加班看不上球赛崩溃,外卖小哥伸出援手:我帮你改代码
  4. 为什么Tomcat的webapps目录下新建的目录不能访问html文件?
  5. 液冷模块是什么?有什么作用与意义?
  6. 134. Gas Station加油站
  7. [错误记录] --- rocketmq批量消费设置参数的问题
  8. HTML5应用程序缓存Application Cache
  9. 解决Ubuntu 16.04 SSH无法远程登录问题(使用root登录)
  10. win7下keil4开发s3c2440裸机的开发环境搭建
  11. android相机网格,Android – 在相机上显示网格线
  12. WebView加载String字符串
  13. 经典排序算法-----归并排序(C语言实现)
  14. 十二、Python简单数据结构应用(之…
  15. 徐工培训计算机,走进徐工,迈向成功——徐工数元教育2018大型培训纪实
  16. 飞檐走壁已经不是成龙甄子丹们的特技了,TA也可以做到!
  17. php access 教程 pdf,Access 2007 以PDF 格式保存文件
  18. 零空间维数的几何意义
  19. CUDA编程学习0——环境搭建环境详解
  20. Mysql有四种事务隔离级别,详解脏读、不可重复读、幻读

热门文章

  1. 音视频文件的容器格式和编码格式
  2. 强势回归,Linux blk用实力证明自己并不弱!
  3. CodeIgniter包管理器Sparks
  4. 一名合格的运维工程师都要掌握什么
  5. i3 10100的集成显卡怎么样 i3 10100参数
  6. word章节编号乱码
  7. JANITZA UMG96-RM
  8. java 复制实体类_Java实现两个实体类相同属性的复制/拷贝
  9. Postgresql监控插件pg_stat_statements的安装
  10. Halcon捕捉错误的方式(tray catch)