饼图上一篇
我很懒没有去封装这些使用方法,想复用的点击下面这个链接,^_^。
另一个博主对MPAndroidChart一些方法的封装
如果大家想要对饼图使用渐变,可以看下我的修改方式。
1、导入MPAndroidChart
2、找到renderer文件夹,然后找到PieChartRenderer.java
3、修改此处调用,如图
4、修改coloringLine()这个调用方法,没记错的话,这个类里面应该没有这个方法,我只直接从前面的修改拷贝过来的,修改如图。
可以参考楼主之前的直方图修改渐变
直方图渐变
结果显示
- 设置饼图基础属性
//显示成百分比
mPieChart.setUsePercentValues(true);
//设置没有描述
mPieChart.getDescription().setEnabled(false);
//mPieChart.setExtraOffsets(30,0,30,0);
//给饼图设置左上右下的边距
mPieChart.setExtraOffsets(20,0,20,0);
mPieChart.setBackgroundColor(ColorAndImgUtils.CHART_BACKGROUND_COLOR);
//减速摩擦系数,值越大表示会缓慢停止
mPieChart.setDragDecelerationFrictionCoef(0.95f);
//设置饼图中间的文字
//mPieChart.setCenterText(generateCenterSpannableText());
//这个方法为true就是环形图,为false就是饼图
mPieChart.setDrawHoleEnabled(false);
//设置环形中间空白颜色是白色
//mPieChart.setHoleColor(Color.WHITE);
//设置半透明圆环的颜色
//mPieChart.setTransparentCircleColor(Color.WHITE);
//设置半透明圆环的透明度
//mPieChart.setTransparentCircleAlpha(110);
//设置中间环形的半径
//mPieChart.setHoleRadius(58f);
//设置半透明圆环的半径,看着就有一种立体的感觉
//mPieChart.setTransparentCircleRadius(61f);
//设置饼图中间是否可以添加文字
mPieChart.setDrawCenterText(false);
//设置初始旋转角度
mPieChart.setRotationAngle(0);
//设置可以手动旋转
mPieChart.setRotationEnabled(true);
//这个方法默认是true,设置为false之后,点击每一块不能向外突出
mPieChart.setHighlightPerTapEnabled(true);
//从Y轴的动画
mPieChart.animateY(1500, Easing.EasingOption.EaseInOutQuad);
// entry label styling
//设置饼图上面的文字是否显示,不显示的话只显示百分比
mPieChart.setDrawEntryLabels(true);
//设置饼图每一块的说明的字体颜色
mPieChart.setEntryLabelColor(ColorAndImgUtils.PIE_ENTRY_LABLE_COLOR);
//设置饼图每一块说明的字体大小
mPieChart.setEntryLabelTextSize(14f);
//给字体加粗
mPieChart.setEntryLabelTypeface(Typeface.DEFAULT_BOLD);
- 设置图例
//获取图例对象
Legend legend = mPieChart.getLegend();
//设置图例不显示
legend.setEnabled(false);
- 设置饼图的值
private void setData(ArrayList<String> xValueList, ArrayList<Integer> yValueList) {
ArrayList<PieEntry> pieEntries = new ArrayList<>();
for (int i = 0; i < xValueList.size(); i++) {
//添加值和值的名字
//pieEntries.add(new PieEntry(yValueList.get(i), xValueList.get(i)));
pieEntries.add(new PieEntry(yValueList.get(i),yValueList.get(i)+""));
}
PieDataSet dataSet = new PieDataSet(pieEntries, "");
//设置为true就会给每一个模块画上一个图标
dataSet.setDrawIcons(false);
//设置饼图模块之间的距离
dataSet.setSliceSpace(0f);
//dataSet.setIconsOffset(new MPPointF(0, 40));
//设置饼图模块选中之后弹出去的长度
dataSet.setSelectionShift(20f);
//设置饼图的颜色
dataSet.setColors(ColorAndImgUtils.ALL_COLORS);
//这一段代码就是实现加一个横线然后将模块的数据放在外面的效果
/////////////////////////////////////////
dataSet.setValueLinePart1OffsetPercentage(80.f);
dataSet.setValueLinePart1Length(0.5f);
dataSet.setValueLinePart2Length(0.5f);
dataSet.setValueLineColor(ColorAndImgUtils.PIE_YVALUE_COLOR);
//当值显示在界面外面的时候是否允许改变量行长度
dataSet.setValueLineVariableLength(false);
//设置线的宽度
dataSet.setValueLineWidth(1);
//设置项X值拿出去
dataSet.setXValuePosition(PieDataSet.ValuePosition.OUTSIDE_SLICE);
//设置将Y轴的值拿出去
dataSet.setYValuePosition(PieDataSet.ValuePosition.OUTSIDE_SLICE);
PieData data = new PieData(dataSet);
//设置Y值使用自定义形式展示
data.setValueFormatter(new PercentFormatter());
//设置饼图上面数据字体的大小
data.setValueTextSize(12f);
//设置饼图上面数据字体的颜色
data.setValueTextColor(ColorAndImgUtils.PIE_YVALUE_COLOR);
//设置Y值是否显示
data.setDrawValues(true);
mPieChart.setData(data);
mPieChart.highlightValues(null);
mPieChart.invalidate();
}