0.MPAndroidChart简介(MPAndroidChar
2018-06-03 本文已影响0人
世界是一个圆_
MPAndroidChart是android上非常流行的一个图表类开源库,仓库地址如下:https://github.com/PhilJay/MPAndroidChart
最近公司要做BI相关的功能,调研了很多图标库,最终选中了这个开源库,由于产品的设计不同需要修改其中的源码,为了更好的修改源码,决定对其源码做一个详细的分析。
私以为分析源码的最好的方式就是大体看一遍源码后,仿照源码简单的实现一遍这个库,这里就是将柱状图进行了简单的实现,代码在此:https://github.com/wangzhen90/Simple-MPAndroidChart
下面我们简单的介绍一下这个库的结构
1.数据结构:
![](https://img.haomeiwen.com/i11076347/31849ff08ef3e9ef.png)
以BarChart为例,每一个BarChart含有一个BarData,BarData中包含了多个BarDataSet,每个BarDataSet包含一组BarEntry,BarEntry中持有每一个数据的xValue和yValue。
2.绘制类
绘制类就是多个Renderer类,比如BarRenderer类等,后面会详细介绍
3.工具类
工具类主要包含ViewPortHandler和Transformer这两个类,它们俩是作为中间人的角色,连接着Renderer,ChartView,TouchListener等。
4.简易的绘制流程图
![](https://img.haomeiwen.com/i11076347/7df2005b81326c11.png)
需要注意的一点是,若是在Chart的onSizeChange执行完之后才设置了数据,需要调用invalidate,比如我们在延时之后再设置data:
new Timer().schedule(new TimerTask() {
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
barChart.setData(data);
barChart.invalidate();
}
});
}
},1000);