MPAndroidChart简介

简介:一个可以拖动缩放的图表库,包含曲线图、直方图、饼状图,其中直方图支持3d效果。
下面废话不多说,今天讲的是饼状图比较简单!老规矩直接上效果图!

主要步骤如下

前期准备工作
因为这里用到第三方的插件所以需要下载mpandroidchartlibrary-2-1-6.jar包,这里需要的自行到github上面下载
然后在libs 中右键path —–>add to path即可使用
首先是创建一个布局文件如下

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" ><com.github.mikephil.charting.charts.PieChart
        android:id="@+id/piechart"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_gravity="center"/>
</LinearLayout>

然后创建一个PieChartActivity类 首先进行初始化UI操作

private void initView() {// 初始化UI组件//ButterKnife.bind(PieChartActivity.this);mPieChart= (PieChart) findViewById(R.id.piechart);mPieData=getPieData(4,100);showPieChart(mPieChart,mPieData);}

显示饼状图代码如下

/*** 显示饼状图表* @param pieChart* @param PieData*/private void showPieChart(PieChart pieChart, PieData PieData) {pieChart.setHoleColorTransparent(true);//设置半透明圈效果pieChart.setHoleRadius(64f);//pieChart.setHoleRadius(0);pieChart.setDescription("卓越加工中心分布图");pieChart.setDrawCenterText(true);//饼状图可以添加文字pieChart.setDrawHoleEnabled(true);//设置起始角度pieChart.setRotationAngle(90f);pieChart.setRotationEnabled(true);//设置可以手动旋转pieChart.setUsePercentValues(true);//显示成百分比pieChart.setCenterText("卓越信息2016年业绩图");//设置字体大小pieChart.setCenterTextSize(28);//设置字体类型pieChart.setCenterTextTypeface(Typeface.create(Typeface.SANS_SERIF, Typeface.ITALIC));//将数据添加到PieData中pieChart.setData(mPieData);//设置高光效果pieChart.needsHighlight(20, 100);//mPieChart.setTouchEnabled(false);mPieChart.setOnChartValueSelectedListener(new OnChartValueSelectedListener() {@Overridepublic void onValueSelected(Entry e, int dataSetIndex, Highlight h) {// TODO Auto-generated method stubLog.i(TAG, "dataSetIndex:"+dataSetIndex);}@Overridepublic void onNothingSelected() {// TODO Auto-generated method stub}});Legend mLegend=pieChart.getLegend();mLegend.setPosition(LegendPosition.RIGHT_OF_CHART_CENTER);//中心顯示//mLegend.setPosition(LegendPosition.RIGHT_OF_CHART);//最右邊顯示mLegend.setForm(LegendForm.SQUARE);//Line线性 squaremLegend.setXEntrySpace(7f);mLegend.setYEntrySpace(5f);pieChart.animateXY(1200, 1200);//设置动画时间//mPieChart.spin(2000, 0, 360,0);}

获取饼状图的数据主要通过遍历饼状图,然后将它分成四块,另外每块显示按16%,16%,32%,36%显示,然后添加x轴,y轴的数据,最后通过设置rgb颜色值进行填充效果,以及设置动画开始结束的时间。

    private PieData getPieData(int count, float range) {// 遍历饼状图List<String> mXList=new ArrayList<String>();for (int i = 0; i < count; i++) {mXList.add("业绩所占比例:"+(i+1));//饼块上显示成业绩比例1 显示成业绩比例2 显示成业绩比例3 显示成业绩比例4}ArrayList<Entry> mYArrayList=new ArrayList<Entry>();/** * 将一个饼形图分成四部分, 四部分的数值比例为16:16:32:36* 所以 16代表的百分比就是16%  */  float quarterly_one = 16;float quarterly_two = 16;float quarterly_three = 32;float quarterly_four = 36;mYArrayList.add(new Entry(quarterly_one, 0));mYArrayList.add(new Entry(quarterly_two, 1));mYArrayList.add(new Entry(quarterly_three, 2));mYArrayList.add(new Entry(quarterly_four, 3));//y轴集合PieDataSet mPieDataSet=new PieDataSet(mYArrayList, "2016/*显示业绩比例图*/");mPieDataSet.setSliceSpace(0f);//设置饼状之间的间隙ArrayList<Integer> mColorIntegers=new ArrayList<Integer>();//饼状的颜色mColorIntegers.add(Color.rgb(215, 215,215));mColorIntegers.add(Color.rgb(117, 18,223));mColorIntegers.add(Color.rgb(255, 115,125));mColorIntegers.add(Color.rgb(59, 138,205));//设置颜色集mPieDataSet.setColors(mColorIntegers);DisplayMetrics dm=getResources().getDisplayMetrics();float px=5*(dm.densityDpi/160f);mPieDataSet.setSelectionShift(px);PieData pieData=new PieData(mXList,mPieDataSet);return pieData;}

最后贴上完整代码

public class PieChartActivity extends Activity {private static final String TAG="PieChartActivity";private PieChart mPieChart;PieData mPieData;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.activity_barchart);initView();}/*** 显示饼状图表* @param pieChart* @param PieData*/private void showPieChart(PieChart pieChart, PieData PieData) {pieChart.setHoleColorTransparent(true);//设置半透明圈效果pieChart.setHoleRadius(64f);//pieChart.setHoleRadius(0);pieChart.setDescription("卓越加工中心分布图");pieChart.setDrawCenterText(true);//饼状图可以添加文字pieChart.setDrawHoleEnabled(true);//设置起始角度pieChart.setRotationAngle(90f);pieChart.setRotationEnabled(true);//设置可以手动旋转pieChart.setUsePercentValues(true);//显示成百分比pieChart.setCenterText("卓越信息2016年业绩图");//设置字体大小pieChart.setCenterTextSize(28);//设置字体类型pieChart.setCenterTextTypeface(Typeface.create(Typeface.SANS_SERIF, Typeface.ITALIC));//将数据添加到PieData中pieChart.setData(mPieData);//设置高光效果pieChart.needsHighlight(20, 100);//mPieChart.setTouchEnabled(false);mPieChart.setOnChartValueSelectedListener(new OnChartValueSelectedListener() {@Overridepublic void onValueSelected(Entry e, int dataSetIndex, Highlight h) {// TODO Auto-generated method stubLog.i(TAG, "dataSetIndex:"+dataSetIndex);}@Overridepublic void onNothingSelected() {// TODO Auto-generated method stub}});Legend mLegend=pieChart.getLegend();mLegend.setPosition(LegendPosition.RIGHT_OF_CHART_CENTER);//中心顯示//mLegend.setPosition(LegendPosition.RIGHT_OF_CHART);//最右邊顯示mLegend.setForm(LegendForm.SQUARE);//Line线性 squaremLegend.setXEntrySpace(7f);mLegend.setYEntrySpace(5f);pieChart.animateXY(1200, 1200);//设置动画时间//mPieChart.spin(2000, 0, 360,0);}private void initView() {// 初始化UI组件//ButterKnife.bind(PieChartActivity.this);mPieChart= (PieChart) findViewById(R.id.piechart);mPieData=getPieData(4,100);showPieChart(mPieChart,mPieData);}private PieData getPieData(int count, float range) {// 遍历饼状图List<String> mXList=new ArrayList<String>();for (int i = 0; i < count; i++) {mXList.add("业绩所占比例:"+(i+1));//饼块上显示成业绩比例1 显示成业绩比例2 显示成业绩比例3 显示成业绩比例4}ArrayList<Entry> mYArrayList=new ArrayList<Entry>();/** * 将一个饼形图分成四部分, 四部分的数值比例为16:16:32:36* 所以 16代表的百分比就是16%  */  float quarterly_one = 16;float quarterly_two = 16;float quarterly_three = 32;float quarterly_four = 36;mYArrayList.add(new Entry(quarterly_one, 0));mYArrayList.add(new Entry(quarterly_two, 1));mYArrayList.add(new Entry(quarterly_three, 2));mYArrayList.add(new Entry(quarterly_four, 3));//y轴集合PieDataSet mPieDataSet=new PieDataSet(mYArrayList, "2016/*显示业绩比例图*/");mPieDataSet.setSliceSpace(0f);//设置饼状之间的间隙ArrayList<Integer> mColorIntegers=new ArrayList<Integer>();//饼状的颜色mColorIntegers.add(Color.rgb(215, 215,215));mColorIntegers.add(Color.rgb(117, 18,223));mColorIntegers.add(Color.rgb(255, 115,125));mColorIntegers.add(Color.rgb(59, 138,205));//设置颜色集mPieDataSet.setColors(mColorIntegers);DisplayMetrics dm=getResources().getDisplayMetrics();float px=5*(dm.densityDpi/160f);mPieDataSet.setSelectionShift(px);PieData pieData=new PieData(mXList,mPieDataSet);return pieData;}}

到这里基本结束了!效果一般!很多需要改进,麻烦大家多提意见!谢谢也可以加群讨论!扫码直接进入!

MPAndroidChart之PieChart相关推荐

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

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

  2. MPAndroidChart饼图PieChart的使用

      在一个安卓项目中大量使用了MPAndroidChart的饼图,所以大致总结一下使用方法. 1.引入   app下的build.gradle中加入: implementation 'com.gith ...

  3. MPAndroidChart饼图PieChart

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

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

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

  5. MPAndroidChart的PieChart不显示扇形,只显示中间文字

      想了三四天都不知道咋回事,最后发现是一个很智障的错误...   如下所示:   可以看到,有的科目的扇形图是正常显示的,有的没有正常显示.   输出数据: //根据数据对pieChart进行初始化 ...

  6. label mpchart 饼图_MPAndroidChart之饼图PieChart

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

  7. MPAndroidChart使用详解--BarChart和PieChart

    MPAndroidChart使用详解--BarChart和PieChart使用实例 1. app的build.gradle中添加依赖: implementation 'com.github.PhilJ ...

  8. piechart 文档 android,(Android 应用之路) MPAndroidChart~PieChart

    简介 AndroidChart">MPAndroidChart是PhilJay大神给Android开发者带来的福利.MPAndroidChart是一个功能强大并且使用灵活的图表开源库, ...

  9. Android MPAndroidChart PieChart

    Android MPAndroidChart PieChart 继续上篇 https://blog.csdn.net/weixin_44889138/article/details/103498294 ...

最新文章

  1. PAT 显示格式错误
  2. 该如何对「半监督学习算法」实际性应用进行评估?Google给出了新答案
  3. spring aop代码的增强
  4. 技术分享连载(六十)
  5. QFIL工具如何导出手机分区数据
  6. 【MySQL性能优化】MySQL分库分表与水平分割取模案例(三)
  7. Abp VNext 集成sharding-core 分表分库
  8. C++ Primer 第五版 第6章 6.1——函数及函数定义及调用阅读笔记
  9. 【Unity开源项目精选】xLua:Unity热更新首选
  10. Cere Network 将于 Republic、DAO Maker 和 Polkastarter 上进行公售
  11. html中好看的英文字体,一组漂亮的英文字体在线演示
  12. matlab贝塞尔函数零点,第一类贝塞尔函数零点求解matlab程序
  13. 核磁为什么要做ROI分析?
  14. PG-FP6烧录机1拖16上位机项目
  15. 1T免费全能空间 注册即可开通
  16. android开源代码
  17. go语言 Golang官网被墙解决办法
  18. Gitee+PicGo上传图片失败404 - {“status“:“404“,“error“:“Not Found“}
  19. 数字电路与逻辑设计 学习笔记【进制转换】
  20. 英特尔第11代处理器(Intel Tiger Lake) 安装Windows 10时找不到驱动器

热门文章

  1. 设置vmware虚拟机从U盘启动pe系统
  2. 世嘉MD游戏开发进阶篇【三】:向量归一化的实现及应用
  3. 商业策划的基本功:竞品分析
  4. linux的时间准确性问题
  5. MySQL数据库行级锁之行锁
  6. 《SpringBoot篇》26.SpringBoot整合Jackson超详细教程(附Jackson工具类)
  7. iOS 如何上传TestFlight
  8. 进程和线程有什么区别?
  9. 移动版PC版微信登陆功能
  10. transform归一化处理