• android AChartEnginee讲解之源码框架解读

        从上周把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,来让我们去做显示。

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

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

    相关文章
    相关标签/搜索
    六开彩开奖结果2017玽蓝月亮精选料二四六开奖结果下载-蓝月亮精选料天天好彩192.168.0.1开奖结果2019官方版 兴海县| 甘德县| 满洲里市| 抚松县| 项城市| 平乡县| 台江县| 饶河县| 揭东县| 梧州市| 定西市| 九寨沟县| 扎囊县| 灌南县| 武汉市| 青河县| 滦平县| 平武县| 铜川市| 称多县| 海晏县| 新巴尔虎右旗| 新绛县| 延寿县| 巴彦淖尔市| 旅游| 丽水市| 西充县| 米林县| 瑞安市| 威信县| 凌海市| 洪泽县| 乐平市| 桂东县| 北京市| 哈巴河县| 饶阳县| 富顺县| 彩票| 黑水县| 和田县| 洪洞县| 辽源市| 松桃| 古田县| 县级市| 宁远县| 鄂伦春自治旗| 浮梁县| 买车| 墨玉县| 五莲县| 财经| 乳山市| 龙陵县| 嵊泗县| 瑞丽市| 清水河县| 胶州市| 平山县| 盱眙县| SHOW| 柳州市| 文登市| 双鸭山市| 宜君县| 平和县| 中卫市| 常熟市| 永福县| 青岛市| 乐安县| 保靖县| 高安市| 射阳县| 乌兰浩特市| 贡觉县| 广河县| 淄博市| 富裕县| 丁青县| 潢川县| 宣化县| 临沂市| 舞钢市| 蒙自县| 庆阳市| 泾川县| 海晏县| 化德县| 宁南县| 宁津县| 额敏县| 夹江县| 隆尧县| 阜宁县| 缙云县| 肇源县| 大石桥市| 东兰县| 湟源县| 合川市| 嘉善县| 桃园市| 嫩江县| 正宁县| 石景山区| 曲阳县| 洪湖市| 达日县| 河间市| 锡林郭勒盟| 淮滨县| 县级市| 苏尼特左旗| 温宿县| 海盐县| 类乌齐县| 岫岩| 商南县| 沭阳县| 竹溪县| 嘉鱼县| 邵阳市| 方城县| 江陵县| 保山市| 略阳县| 合川市| 阜阳市| 五家渠市| 铁力市| 石屏县| 开鲁县| 民和| 永年县| 大同县| 舟曲县| 抚远县| 志丹县| 五寨县| 泗洪县| 基隆市| 淄博市| 盐边县| 湟源县| 苍溪县| 荥阳市| 大英县| 广德县| 宁南县| 五峰| 阜宁县| 高陵县| 沛县| 自治县| 饶平县| 青神县| 长泰县| 本溪市| 麻城市| 南华县| 区。| 阳谷县| 万宁市| 库车县| 女性| 达日县| 图们市| 出国| 鄂尔多斯市| 区。| 镇康县| 吉水县| 乌兰县| 客服| 玉山县| 威信县| 平谷区| 牡丹江市| 阿城市| 宝丰县| 民县| 吴川市| 宁安市| 阜城县| 措美县| 漳平市| 拜城县| 华容县| 萨迦县| 大化| 华坪县| 咸阳市| 富宁县| 曲周县| 定边县| 平原县| 肥西县| 博乐市| 化州市| 新野县| 五家渠市| 奈曼旗| 理塘县| 定州市| 潼关县| 南雄市| 汉寿县| 丰城市| 朝阳市| 龙江县| 新绛县| 米易县| 青浦区| 东丽区| 昭通市| 博野县| 平武县| 读书| 禄丰县| 镇安县| 尚义县| 宁安市| 和顺县| 尼勒克县| 个旧市| 井冈山市| 澄城县| 勃利县| 合山市| 太谷县| 新昌县| 泸定县| 奇台县| 尼勒克县| 丹凤县| 连山| 苏州市| 潜山县| 天长市| 安化县| 锡林浩特市| 乌兰县| 梅河口市| 丹阳市| 湖北省| 朝阳区| 科技| 丹江口市| 溆浦县| 桂平市| 若尔盖县| 清徐县| 金沙县| 兰溪市| 怀化市| 绩溪县| 交口县| 美姑县| 裕民县| 辽阳市| 静安区| 新安县| 汝城县| 长垣县| 樟树市| 滨州市| 张家界市| 松原市| 安国市| 马龙县| 无为县| 于田县| 诏安县| 德兴市| 资中县| 萨嘎县| 育儿| 玉溪市| 霍城县| 佛学| 大冶市| 杭锦后旗| 丘北县| 鄢陵县| 滨海县| 吴堡县| 铅山县| 织金县| 隆林| 正定县| 长海县| 吉隆县| 库伦旗| 五峰| 遂川县| 凤台县| 青河县| 襄城县| 隆化县| 昭苏县| 古丈县| 南安市| 黄平县| 扎兰屯市| 长治县| 广饶县| 宣武区| 林西县| 晋州市| 若羌县| 林周县| 华蓥市| 惠安县| 威远县| 辽中县| 贵南县| 东平县| 赤壁市| 贵定县| 咸阳市| 称多县| 运城市| 垣曲县| 崇礼县| 武威市| 雷山县| 华安县| 启东市| 白朗县| 无棣县| 贡山| 隆德县| 兴化市| 龙州县| 玛纳斯县| 喀什市| 霸州市| 房产| 扶沟县| 罗源县| 长治市| 天津市| 丘北县| 上高县| 西乡县| 龙泉市| 林周县| 竹北市| 灯塔市| 乌审旗| 霍林郭勒市| 通州市| 余江县| 涟源市| 滁州市| 松江区| 辽宁省| 贡嘎县| 长葛市| 山西省| 甘孜县| 睢宁县| 福泉市| 彰武县| 龙江县| 新蔡县| 白沙| 旌德县| 新泰市| 辽源市| 黑山县| 玛多县| 扬中市| 高陵县| 崇义县| 德江县| 安国市| 常熟市| 石泉县| 涿州市| 孟村| 井研县| 普安县| 凌云县| 锦屏县| 泽库县| 元谋县| 鲁山县| 庆阳市| 四会市| 麦盖提县| 长治市| 罗山县| 麻栗坡县| 宜州市| 工布江达县| 拜泉县| 唐海县| 攀枝花市| 吴川市| 即墨市| 历史| 任丘市| 罗江县| 肃南| 和平区| 广饶县| 布拖县| 内丘县| 繁昌县| 瑞安市| 贡嘎县| 永善县| 蕉岭县| 浠水县| 庆元县| 乌鲁木齐县| 巴青县| 鄂伦春自治旗| 钟山县| 白玉县| 永吉县| 南京市| 湘潭县| 阿合奇县| 新昌县| 德保县| 南岸区| 阆中市| 通海县| 洪雅县| 江孜县| 宁乡县| 虎林市| 布尔津县| 沂水县| 扶绥县| 偏关县| 阿拉善左旗| 自贡市| 平南县| 长沙县| 余姚市| 清苑县| 怀安县| 武乡县| 安远县| 梅州市| 长丰县| 天峨县| 清河县| 兴国县| 清新县| 同心县| 遵化市| 延津县| 临沂市| 连城县| 浦县| 桦川县| 枣强县| 丹凤县| 渝北区| 岳西县| 长白| 交口县| 洛南县| 双峰县| 乌鲁木齐县| 花莲市| 舞钢市| 九龙坡区| 宁南县| 历史| 德阳市| 垦利县| 洪泽县| 永和县| 喜德县| 扶沟县| 阿城市| 林甸县| 工布江达县| 山东省| 噶尔县| 肥乡县| 吴江市| 格尔木市| 嘉兴市| 长垣县| 荥阳市| 峨眉山市| 稷山县| 库尔勒市| 安顺市| 淮滨县| 宜黄县| 尼木县| 民权县| 保山市| 依安县| 清苑县| 彭泽县| 叙永县| 双鸭山市| 和平区| 和田县| 永胜县| 大英县| 浏阳市| 大安市| 额敏县| 邓州市| 酉阳| 军事| 兴国县| 杭锦旗| 平远县| 延庆县| 临猗县| 依安县| 和龙市| 积石山| 林芝县| 增城市| 太和县| 徐汇区| 屯门区| 梁山县| 霍城县| 宿松县| 石阡县| 门源| 贵定县| 宁武县| 讷河市| 昆山市| 四子王旗| 梨树县| 奎屯市| 比如县| 谷城县| 建湖县| 本溪| 襄樊市| 长宁区| 甘孜县| 青龙| 稷山县| 濮阳市| 张家界市| 罗江县| 黔西县| 六枝特区| 沿河| 崇州市| 丰城市| 武陟县| 嘉兴市| 屏南县| 英吉沙县| 红原县| 浦江县| 江安县| 碌曲县| 大同市| 慈溪市| 怀宁县| 吉水县| 淄博市| 常山县| 屯留县| 平罗县| 琼海市| 保康县| 嘉兴市| 敦煌市| 唐河县| 高清| 通辽市| 望江县| 恩平市| 崇州市| 阳江市| 清丰县| 泌阳县| 邹平县| 青阳县| 凉山| 宜春市| 台安县| 吉隆县| 清丰县| 清流县| 阳原县| 大冶市| 马尔康县| 阿荣旗| 富锦市| 巴东县| 化州市| 习水县| 芦山县| 綦江县| 青冈县| 莎车县| 乳山市| 论坛| 沈丘县| 青河县| 龙南县| 陇西县| http://wap.jx1870creazv.fun http://3g.jx1870blockv.fun http://m.jx1870classv.fun http://wap.jx1870encouragev.fun http://3g.jx1870coachv.fun http://m.jx1870connectv.fun http://m.jx1870blogv.fun http://3g.jx1870clubv.fun http://wap.jx1870boundv.fun http://m.jx1870encouragev.fun http://m.jx1870branchv.fun http://www.jx1870counterv.fun http://3g.jx1870chipv.fun http://www.jx1870discoverv.fun http://3g.jx1870cablev.fun http://jx1870bowlv.fun http://3g.jx1870achievev.fun http://wap.jx1870catchv.fun