我是菜鸟写的不好请见谅,对您有帮助请关注
点赞
收藏
先导入MPAndroidChart-v2.1.5.jar
基础使用效果图:
废话不多说看代码:
超简单的布局文件
编写:
// 是不是很简单
<com.github.mikephil.charting.charts.PieChart
android:layout_height="match_parent"
android:layout_width="match_parent"
android:id="@+id/pieChart1"
android:layout_margin="30dp"
>
</com.github.mikephil.charting.charts.PieChart>
下面是java
代码:
private PieChart pieChart;
pieChart=findViewById(R.id.pieChart1); //这个就不介绍了
pieChart.setDescription("人口数量"); //设置pieChart的描述
pieChart.setDescriptionPosition(500f,30f);//设置描述语的位置
pieChart.setDescriptionTextSize(14f);//设置描述语的大小
pieChart.setDrawHoleEnabled(false);//设置是否为空心圆
pieChart.setExtraOffsets(20f,20f,20f,20f);//设置piechart的位置
Legend legend=pieChart.getLegend();
legend.setPosition(Legend.LegendPosition.BELOW_CHART_CENTER);//设置方块标记的位置
pieChart.animateX(2000, Easing.EasingOption.EaseInElastic);//设置piechart的动画效果
List<String> xvals=new ArrayList<>();//每个扇形的描述
xvals.add("美国");
xvals.add("中国");
List<Entry> yvals=new ArrayList<>();//每个扇形的数据
yvals.add(new Entry(30f,0));
yvals.add(new Entry(69f,1));
List<Integer> colors=new ArrayList<>();//每个扇形的颜色
colors.add(Color.parseColor("#FF6633"));
colors.add(Color.parseColor("#66CC99"));
PieDataSet pieDataSet=new PieDataSet(yvals,"比较");
pieDataSet.setColors(colors);//将List颜色设置
pieDataSet.setValueTextSize(15f);//设置扇形上面字体的大小
pieDataSet.setSliceSpace(5f);//设置扇形空隙的大小
PieData pieData=new PieData(xvals,pieDataSet);
pieData.setValueFormatter(new PercentFormatter());//设置百分比
pieChart.setData(pieData);//数据填充
对于pieChart扇形区域的事件监听
点击使选中扇形变大并且可以做相应的时间处理
// 是不是很简单
pieChart.setOnChartValueSelectedListener(new OnChartValueSelectedListener() {
@Override
public void onValueSelected(Entry entry, int i, Highlight highlight) {
Log.e("",""+i+entry+highlight); //打印日志
}
@Override
public void onNothingSelected() {
//整体扇形的监听
}
});
日志:
E/: 0Entry, xIndex: 0 val (sum): 30.0Highlight, xIndex: 0, dataSetIndex: 0, stackIndex (only stacked barentry): -1
E/: 0Entry, xIndex: 1 val (sum): 69.0Highlight, xIndex: 1, dataSetIndex: 0, stackIndex (only stacked barentry): -1