趁热打铁,今天接着练习下图表的饼状图,依旧抽取个管理类
public class PieChartUtils { private static final String TAG = "PieChartUtils"; private PieChart pieChart; private Legend legend; public PieChartUtils(PieChart pieChart){ this.pieChart = pieChart; initSetting(); } /** 常用设置 */ private void initSetting() { pieChart.setHoleColor(Color.TRANSPARENT);//设置中间的颜色 pieChart.setHoleRadius(30f);//设置饼状的半径 pieChart.setTransparentCircleRadius(54f);//设置半透明圈的半径 pieChart.getDescription().setText("");//设置描述 pieChart.setDrawCenterText(true);//设置饼状中间的文字是否显示 pieChart.setDrawHoleEnabled(true); pieChart.setCenterText("家庭花费");//设置饼状中间文字 pieChart.setCenterTextColor(Color.RED); pieChart.setCenterTextSize(16); pieChart.setRotationAngle(90);//设置初始旋转角度 pieChart.setRotationEnabled(true);//设置是否可以手动旋转 pieChart.setUsePercentValues(true);//设置是否显示成百分比 legend = pieChart.getLegend(); legend.setEnabled(true);//设置是否显示比例图 legend.setForm(Legend.LegendForm.CIRCLE); //设置比例图样式 圆 legend.setTextColor(Color.RED); //设置比例图位置 legend.setOrientation(Legend.LegendOrientation.VERTICAL); legend.setVerticalAlignment(Legend.LegendVerticalAlignment.TOP); legend.setHorizontalAlignment(Legend.LegendHorizontalAlignment.RIGHT); pieChart.animateXY(1000,1500);//设置xy轴的动画 } /** * 设置数据 * @param pieEntries 数据 * @param colors 每一块显示的颜色 * @param lableColor 显示在每一块中文字的颜色 */ public void setPieData(ListpieEntries,int[] colors,int lableColor ){ PieDataSet pieDataSet = new PieDataSet(pieEntries,""); pieDataSet.setColors(colors); pieDataSet.setSelectionShift(10f);//设置选中后弹出的比例 pieDataSet.setSliceSpace(0);//设置间距 pieDataSet.setValueTextColor(lableColor); //设置显示百分比数据的颜色 pieDataSet.setValueTextSize(16);//设置显示百分比数据的大小 pieDataSet.setValueLineVariableLength(true); pieDataSet.setValueLineColor(lableColor); pieDataSet.setValueLinePart1Length(0.4f); pieDataSet.setValueLinePart2Length(0.2f); pieDataSet.setYValuePosition( PieDataSet.ValuePosition.OUTSIDE_SLICE); pieDataSet.setXValuePosition( PieDataSet.ValuePosition.OUTSIDE_SLICE); pieDataSet.setValues(pieEntries); pieChart.setEntryLabelColor(lableColor); pieDataSet.setValueFormatter(new IValueFormatter() { @Override public String getFormattedValue(float value, Entry entry, int dataSetIndex, ViewPortHandler viewPortHandler) { int values = (int)value; return values+"%"; } }); PieData pieData = new PieData(pieDataSet); pieChart.setData(pieData);
默认的图例是不显示数据的,在3.0后有了自定义的方法
//自定义的图例 String lebals = ""; LegendEntry[] legendEntries = new LegendEntry[pieDataSet.getEntryCount()]; for (int i = 0;i
在Activity中调用的时候
ArrayListpie = new ArrayList (); for (int i = 0; i<3; i++){ //new PieEntry中第一个参数 将每一份的数据传进去,会自动算出每一份所占的百分比,展示在饼图上 //第二个参数 是直接显示在饼图上的 pie.add(new PieEntry(y[i],ss[i])); } pieChartUtils.setPieData(pie,pieColors,Color.GRAY);