最新项目上遇到要绘制图表的功能,研究了一下,也使用了一些绘制图表的库,其中包含AChartEngine (google自带),但是goole自带的功能简单,要想绘制绚丽的图表要自己改源码。所以,这里推荐一款绘制图表的库–MPAndroidChart。
MPAndroidChart的源码地址:https://github.com/PhilJay/MPAndroidChart
下面将详细介绍绘制过程,xml什么的就略过了(因为每个图就是一个控件)。
1、饼状图PieChat
/**
* PieChat
*
* @param mPieChat
*/
public void initPieChat(PieChart mPieChat, List<Map<String, Object>> list) {
mPieChat.setUsePercentValues(true);//显示百分比
mPieChat.setDescription("");
mPieChat.setDrawHoleEnabled(true);
mPieChat.setHoleColorTransparent(true);
mPieChat.setTransparentCircleColor(Color.WHITE);
mPieChat.setHoleRadius(30f);//半径
mPieChat.setTransparentCircleRadius(32f);//半透明圆
mPieChat.setDrawCenterText(false);//饼状图中间可以添加文字
mPieChat.setRotationAngle(0);//初始旋转角度
// enable rotation of the chart by touch
mPieChat.setRotationEnabled(false);//可以手动旋转
PieData data = getPieData(list);
data.setValueFormatter(new PercentFormatter());
data.setValueTextSize(15f);
data.setValueTextColor(Color.WHITE);
data.setDrawValues(true);
mPieChat.setData(data);
// undo all highlights
mPieChat.highlightValues(null);
mPieChat.setDrawSliceText(false);//让xValues不显示 找了好久的源码才发现
mPieChat.invalidate();
Legend mLegend = mPieChat.getLegend(); //设置比例图
mLegend.setPosition(Legend.LegendPosition.RIGHT_OF_CHART_INSIDE);
// mLegend.setForm(LegendForm.LINE); //设置比例图的形状,默认是方形
// mLegend.setXEntrySpace(7f);
// mLegend.setYEntrySpace(5f);
}
private PieData getPieData(List<Map<String, Object>> list) {
ArrayList<String> xValues = new ArrayList<String>(); //xVals用来表示每个饼块上的内容
ArrayList<Entry> yValues = new ArrayList<Entry>(); //yVals用来表示封装每个饼块的实际数据
for (int i = 0; i < list.size(); i++</