首先感谢网上大神们分享MPAndroidChart的代码及实际问题的解决方式。
下面分享的代码是本人在开发过程中用到的属性及解释,有个别属性是在网上找了好久也没找到,希望分享出来对大家有帮助。
贴代码:
/**
* 设置饼图样式
*
*@parampieChart
*@parampieValues
*@paramtitle
*@paramshowLegend是否显示图例
*/
public static voidsetPieChart(PieChart pieChart,Map pieValues,String title, booleanshowLegend) {
pieChart.setUsePercentValues(true);//设置使用百分比
pieChart.getDescription().setEnabled(false);//设置描述
pieChart.setExtraOffsets(15f,5f,15f,5f);//饼图左上右下边距
pieChart.setCenterText(title);//设置环中的文字
pieChart.setCenterTextSize(6f);//设置环中文字的大小
pieChart.setDrawCenterText(false);//不设置绘制环中文字
pieChart.setRotationAngle(120f);//设置旋转角度
pieChart.setDrawHoleEnabled(false);//是否设置中间的圆环
//图例设置
Legend legend = pieChart.getLegend();
if(showLegend) {
legend.setEnabled(true);
legend.setHorizontalAlignment(Legend.LegendHorizontalAlignment.CENTER);
legend.setVerticalAlignment(Legend.LegendVerticalAlignment.BOTTOM);
legend.setOrientation(Legend.LegendOrientation.HORIZONTAL);
legend.setDrawInside(false);
legend.setDirection(Legend.LegendDirection.LEFT_TO_RIGHT);
legend.setTextSize(8f);
legend.setYOffset(10f);//下边距
legend.setTextColor(R.color.black_light);
legend.setXEntrySpace(2f);
legend.setYEntrySpace(2f);
}else{
legend.setEnabled(false);
}
//设置饼图数据
setPieChartData(pieChart,pieValues);
pieChart.animateX(1500,Easing.EasingOption.EaseInOutQuad);//数据显示动画
}
/**
* 设置饼图数据源
*/
private static voidsetPieChartData(PieChart pieChart,Map pieValues) {
ArrayList entries =newArrayList<>();
Set set = pieValues.entrySet();
Iterator it = set.iterator();
while(it.hasNext()) {
Map.Entry entry = (Map.Entry) it.next();
entries.add(newPieEntry(Float.valueOf(entry.getValue().toString()),entry.getKey().toString()));
}
PieDataSet dataSet =newPieDataSet(entries,"");
dataSet.setSliceSpace(1f);//设置饼块之间的间隔
dataSet.setSelectionShift(5f);//设置饼块选中时偏离饼图中心的距离
dataSet.setColors(PIE_COLORS);//设置饼块的颜色
dataSet.setValueLinePart1OffsetPercentage(80f);//数据连接线距图形片内部边界的距离,为百分数
dataSet.setValueLinePart1Length(0.55f);//水平方向线的长度
dataSet.setValueLinePart2Length(0.5f);//线的长度
dataSet.setValueLineColor(Color.RED);//设置连接线的颜色
dataSet.setYValuePosition(PieDataSet.ValuePosition.OUTSIDE_SLICE);//饼图数据在外面
PieData pieData =newPieData(dataSet);
pieData.setValueFormatter(newPercentFormatter());//追加%号
pieData.setValueTextSize(8f);//比例字体大小
pieData.setValueTextColor(Color.RED);//比例颜色
pieData.setDrawValues(true);//百分比及连线是否显示
pieChart.setData(pieData);
pieChart.setEntryLabelTextSize(10f);//饼块文字描述
pieChart.setEntryLabelColor(Color.RED);//饼块文字颜色
pieChart.highlightValues(null);
pieChart.invalidate();//刷新
}