android AChartEnginee讲解之源码框架解读

52 篇文章 0 订阅
7 篇文章 0 订阅

    从上周把android ACHartEnginee的源码check out出来后就一直在看这个东西是如何使用的,以及底层是如何实现的,把最近一周对这个东西的了解先发上来,即是给自己做一个总结,也希望能帮到想学习这个开源工程的童鞋们。那下面我们就切入正题。

   android AChartEnginee是个什么东西呢,它是Apache的一个开源图表工程,就是为了方便android应用程序去绘制那此高难度的图表,比如:饼图,曲线图,柱状图等,与web端的high chart类似,掌握了这个工程以后,只要我们将我们的数据组装成achartenginee要求的格式,再调用对应的API设置好相应的参数,即可将你想绘制的图表绘制出来,十分的强大。今天我们先把这个工程的整体架构就我了解的讲解一下。

   先看一下源工程的代码结构,如图:

这就是整个工程的结构,image包中只放了三张程序中用到的图片(跳过),util包中主要放了一些算法相关的工具类,看也看不太懂,tools中主要放了用来控制整个图表放大缩小的工具类,也不进行讲解了,主要分析一下chart, renderer,model这个包和ChartFactory,GraphicalView这两个类。

    一. 先分析一下renderer这个包的作用,首先这个单词的意思是渲染的意思,从字面意思就大概可以知道,这个包下的类主要是用来对图表的样式进行渲染的,也就是说,主要是用来控制图表的外观。下面看一下renderer这个包中的类有那些:

从图中可以看到,主要有几个XXXRenderer类,看了源码可以知道,DefaultRenderer是DialRenderer,XYMultipleSeriesRenderer的父类,SimpleSeriesRenderer是XYSeriesRenderer的父类,所以我们分两组来讲解。

   1)DeaultRenderer及其子类Renderer是针对整个图表进行的渲染的,也就是说:他们是用来设置整个图表的样式的,DefaultRenderer定义了所有图表都有的一些共通的属性,例如:mChartTitle,mBackground等,具体详细的属性可以看源码;DialRenderer是继承于DefaultRenderer类的,除了有父类的那些共同的属性外,他还有一些自己独特的属性,DialRenderer主要是用来渲染饼图的渲染器,例如:不同类型的饼图,柱柱图等可以用这个Renderer去做渲染;XYMultipleSeriesRenderer也拥有父类的那些属性,他自己也有许多独特的属性去设置,XYMultipleSeriesRenderer则主要用来对XY坐标轴图表进行渲染。由此可见,我们再进行不同类型图表的绘制时要使用对应的渲染器去进行渲染,以达到最好的效果。

  2)SimpleSeriesRenderer是XYSeriesRenderer的父类,就我的理解,这两个渲染器则是对具体的每个点去渲染不同的效果,SimpleSeriesRenderer主要是用来对饼图一类的图表中的点进行渲染,而 XYSeriesRenderer则主要是对坐标轴点进行渲染。

    二.再分析一下model包的作用,model包中的类如图所示:

这个包中,主要包含了一些图表点的集合,不同类型的图表,我们要使用对应的对象去装载对不同类型的点集。其中: CategorySeries是用来装载饼图的点集,MultipleCategorySeries是用来装载面包圈图的点集,RangeCategorySeries是用来装载柱状图的点集,TimeSeries,XYSeries,XYValueSeries主要是用来装载坐标轴点集,XYMultipleSeriesDataset则是对以上三个点集的一个集合(因为我们的坐标轴中,可能有多个图像)。

   三.再分析一下chart包的作用,chart包中的类如图所示:

这个包的中的所有类就是负责具体绘制图表的类,他们中都对不同的图表提供了不同的绘制方法,根据类的名字就可以知道他们分别是用来绘制那些图表的。具体是如何绘制的,我也看不懂。

       最后要说的就是ChartFactory这个工厂类了,这个工厂类的作用就是根据我们调用的不同的工厂方法,并传入对应的dataset和renderer,调用GraphicalView为我们生成一个具体的图表View,来让我们去做显示。

     以上就是我对这个开源工程宏观上的一些理解,具体的实现步骤也不想深入的去看了,实在是挺难懂的,只要我们从整体上了解了这个工程不同的类的作用,能够熟练的应用,就可以了。

    总结:整个工程的结构十分的清晰,负责渲染的类,负责组装数据的类,和真正负责利用渲染类中的设置和数据类中的数据去绘制的类。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值