android AChartEnginee解说之源代码框架解读

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

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

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

这就是整个project的结构。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,来让我们去做显示。

以上就是我对这个开源project宏观上的一些理解。详细的实现步骤也不想深入的去看了,实在是挺难懂的。仅仅要我们从总体上了解了这个project不同的类的作用,可以熟练的应用,就行了。

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

时间: 2024-12-25 20:08:47

android AChartEnginee解说之源代码框架解读的相关文章

android AChartEnginee讲解之源码框架解读

从上周把android ACHartEnginee的源码check out出来后就一直在看这个东西是如何使用的,以及底层是如何实现的,把最近一周对这个东西的了解先发上来,即是给自己做一个总结,也希望能帮到想学习这个开源工程的童鞋们.那下面我们就切入正题. android AChartEnginee是个什么东西呢,它是Apache的一个开源图表工程,就是为了方便android应用程序去绘制那此高难度的图表,比如:饼图,曲线图,柱状图等,与web端的high chart类似,掌握了这个工程以后,只要

Android软硬整合设计与框架揭秘: HAL&Framework &Native Service &App&HTML5架构设计与实战开发

掌握Android从底层开发到框架整合技术到上层App开发及HTML5的全部技术: 一次彻底的Android架构.思想和实战技术的洗礼: 彻底掌握Andorid HAL.Android Runtime.Android Framework.Android Native Service.Android Binder.Android App.Android Testing.HTML5技术的源泉和精髓等核心技术,不仅仅是技术和代码本身,更重要的是背后的设计思想和商业哲学. 一.课程特色 l  贯通And

Android插件化(使用Small框架)

github: https://github.com/cayden/MySmall Android插件化(使用Small框架) 框架源代码 1. Create Project File->New->New Project... 1.1 Configure your new project 假设宿主包名为com.example.mysmall 设置Application name为MySmall 改动Company Domain为com.example.mysmall 这步是个技巧,在Step3

Android软硬整合设计与框架揭秘: HAL&Framework &Native Service &App&Browser架构设计与实战开发

在软硬整合领域, Android以其对软件和硬件的高度开放性引领了当今的软硬整合潮流,全世界正在进行一场轰轰烈烈的Android运动,Android以不可思议的速度渗透越来越广的领域,Android智能手机.Android智能电视.Android微波炉.Android平板电脑.Android智能机器人.Android车载系统等越来越多的Android产品涌入人们的工作和生活中,自从Google的[email protected]战略发布以来,更是让世界对Android充满了怦然心动的期待,可以预

Android音频系统之音频框架(转http://blog.csdn.net/uiop78uiop78/article/details/8796492)

1.1 音频框架 转载请注明,From LXS, http://blog.csdn.net/uiop78uiop78/article/details/8796492 Android的音频系统在很长一段时间内都是外界诟病的焦点.的确,早期的Android系统在音频处理上相比于IOS有一定的差距,这也是很多专业的 音乐播放软件开发商没有推出Android平台产品的一个重要原因.但这并不代表它的音频框架一无是处,相反,基于Linux系统的Android平台有 很多值得我们学习的地方. 1.1.1 Li

基于Linux 3.0.8 Samsung FIMC(S5PV210) 的摄像头驱动框架解读

作者:咕唧咕唧liukun321 来自:http://blog.csdn.net/liukun321 FIMC这个名字应该是从S5P100开始出现的,在s5pv210里面的定义是摄像头接口,但是它同样具有图像数据颜色空间转换的作用.而exynos4412对它的定义看起来更清晰些,摄像头接口被定义为FIMC-LITE .颜色空间转换的硬件结构被定义为FIMC-IS.不多说了,我们先来看看Linux3.0.8 三星的BSP包中与fimc驱动相关的文件. 上面的源码文件组成了整个fimc的驱动框架.通

Android Camera子系统之源代码View

本文基于Android 4.2.2+Linux3.6.9+SAMA5D3 SoC从源代码的角度审视Android Camera子系统. 应用层 Androd原生Camera应用 /system/app/LegacyCamera.apk http://androidxref.com/4.2.2_r1/xref/packages/apps/LegacyCamera/ Camera应用调用Android应用框架提供的Camera API import android.hardware.Camera;

200多种Android动画效果的强悍框架

admin 发布于2015-10-23 14:33 363/68015 [精品推荐]200多种Android动画效果的强悍框架,太全了,不看这个,再有动画的问题,不理你了^@^ 功能模块和技术方案 只看楼主 楼层直达 200多种Android动画效果的强悍框架,太全了 概要: Android近200多种动画效果集合框架源码,太全了,总有你需要的,木有你找不到的,相当强悍,非常棒的产品开发原型参考和学习资料 主要功能列表: 1)Splash动画 (中心打开式效果 ) 2)Flip折叠效果的集合(1

android插件化-apkplugdemo源代码阅读指南-10

阅读本节内容前可先了解 apkplug基础教程 本教程是基于apkplug V1.6.8 版本号编写  最新开发方式以官网为准 可下载最新的apkplugdemo源代码http://git.oschina.net/plug/apkplugDemos apkplugdemo演示图 一 apkplugdemoproject源代码结构 src |-com.apkplugdemo.adapter             --插件列表Adapter |-com.apkplugdemo.adapter.ba