android AChartEngine学习

一、AChartEngine总体介绍

AChartEngine : 每个图表都需要一个数据集 (Dataset) 和 渲染器集合 (Renderer);

-- 数据集 : 又由许多数据组成

-- 渲染器 : 也由不同的子渲染器组成

-- 获取Activity或组件 : 图表工厂 (ChartFactory) 通过调用数据集 (Dataset)和渲染器集合 (Renderer) 可以生成带图表的 GraphicalView 或者 GraphicalActivity

例如:图表工厂 (ChartFactory) 通过传入数据集 (Dataset)和渲染器集合 (Renderer) 的数据来创建一个折线图的intent.

Intent intent = ChartFactory.getLineChartIntent(context,dataset,renderer);

二、AChartEngine 相关类介绍

--   XYMultipleSeriesDataset  : 数据集, 其中可以封装图表所需的数据,需要在这个数据集中加入   XYSeries

--   XYSeries  : 属于图表数据集的一部分, 每个都代表了一个数据集合例如折线, 一个图表中可以有多条折线, 所有的数据放在一起就是数据集XYMultipleSeriesDataset ;

--   XYMultipleSeriesRenderer  : 渲染器集合, 图表中多个曲线的渲染器;

--   XYSeriesRenderer  : 单个曲线或单元的渲染器, 一个图表中可能有多条曲线或者柱状图等, 每个都需要一个渲染器, 所有的渲染器放在一起就是渲染器集合  XYMultipleSeriesRenderer;

三、 AChartEngine 主要代码解析

1. 曲线图 柱状图 图表数据集

(1) 针对 x y 轴数据都是 Double 的情况 

相关类介绍  :

--    XYMultipleSeriesDataset 类   : 该类可以封装 曲线图 柱状图 等图表的数据集, 这些图表的共性是值都是由 x 和 y 数值组成的, 需要分别传入 x 轴数据 和 y 轴数据;

--   XYSeries 类  : 图表中有多个曲线, 该类封装单个曲线的集合, XYMultipleSeriesDataset 封装了多个 XYSeries;

需要准备的数据  :

--  单组数据名称集合  : String[] titles, 单组数据名称 每条曲线可能有一个名称, 一个图表可能有多个曲线, 因此这里需要一个 标题数组;

--  x轴数据组集合  : List<double[]> xValues, x 轴数据集合, 其中每个数组都是一个 曲线的x轴数据, 整个 List 集合是多个曲线的数据;

--  y轴数据组集合  : List<double[]> yValues, y 轴数据集合, 整个 List 集合是多个曲线的 y 轴数据集合;

相关方法详解  :

--   创建 XYMultipleSeriesDataset 对象   : 直接调用无参数的构造方法即可, XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();

--  创建 XYSeries 对象  : 该对象是单条曲线数据, 可以设置 单条曲线标题, x 轴数据数组, y 轴数据数组, XYSeries series = new XYSeries(String titles, float scale);

--  为单个曲线添加数据  : 即未 XYSeries 对象添加两个数组, 分别是 x 轴和 y 轴的数据, series.add(xV[k], yV[k]);

--  将 XYSeries 对象添加到 XYMultipleSeriesDataset 对象中  : dataset.addSeries(series);

(2) x 轴是日期 y 轴是 Double

相关类介绍  :

--   XYMultipleSeriesDataset  : 这种 日期-值 图, 使用的图表数据集也是该类;

--   TimeSeries  : 这里就不同了, 单个曲线的数据中因为要封装 Date 数组, 因此要使用该类封装 Date[] 和 Double[] 数据;

需要准备的数据  :

--   String[] titles  : 图表中有多个折线, 数组中每个元素都是一个折线的标题;

--   List<Date[]> xValues  : List 集合中每个 Date[] 都是一条曲线的 x 轴数据;

--   List<double[]> yValues  : List 集合中每个 double[] 都是一条曲线的 y 轴数据;

相关方法介绍  :

--   创建单条曲线数据  TimeSeries  对象   : TimeSeries series = new TimeSeries(titles[i]), 参数是该条曲线的标题名称;

--   设置 日期 和 值数组给 TimeSeries 对象   : series.add(xV[k], yV[k]);

--   将  TimeSeries 对象设置给  XYMultipleSeriesDataset 对象    : dataset.addSeries(series);

2. 曲线图图表渲染器

(1) 曲线渲染

相关类介绍  :

--   XYMultipleSeriesRenderer  : 曲线图整体渲染器, 其中封装了许多 XYSeriesRenderer 单曲线渲染器;

--   XYSeriesRenderer  : 单个曲线渲染器, 设置曲线的颜色 和 风格样式;

数据准备  :

--   int[] colors  : 颜色集合, 每种曲线都要有一个颜色值;

--   PointStyle[] styles  : 曲线样式集合, 每条曲线都有其绘制样式;

XYMultipleSeriesRenderer 相关方法介绍  :

--  设置 xy 轴标题字体大小  : setAxisTitleTextSize(int size);

--  设置表格标题大小  : setChartTitleTextSize(int size);

--  设置标签文字大小  : setLabelsTextSize(int size);

--  设置说明文字大小  : setLegendTextSize(int size);

--  设置点的大小  : setPointSize(int size);

--  添加单曲线渲染器  : addSeriesRenderer(render);

XYSeriesRenderer 相关方法介绍  :

--  创建对象  : XYSeriesRenderer r = new XYSeriesRenderer();

--  设置单个曲线颜色  : r.setColor(colors[i]);

--  设置单个曲线绘制风格  : r.setPointStyle(styles[i]);

(2) 坐标轴设置 

渲染器参数设置  : 坐标轴渲染主要是对 XYMultipleSeriesRenderer 进行一系列的参数设置, 都是调用的 XYMultipleSeriesRenderer 对象中的方法 ;

--  设置曲线标题  : setChartTitle(String tittle);

--  设置 x 轴标题  : setXTitle(String tittle);

--  设置 y 轴标题  : setYTitle(String tittle);

--  设置 x 轴最小值  : setXAxisMin(double);

--  设置 x 轴最大值  : setXAxisMax(double);

--  设置 y 轴最小值  : setYAxisMin(double);

--  设置 y 轴最大值  : setYAxisMax(double);

--  设置坐标轴颜色  : setAxesColor();

--  设置标签颜色  : setLabelsColor();

3. 饼图数据集

(1) 单个饼图数据集

相关类介绍  :

--   CategorySeries  : 饼图数据集;

相关方法介绍  :

--  添加数据元素  : CategorySeries.add(String category, double value), 参数分别是 名称 和 值;

(2) 多饼图图表数据集

相关类介绍  :

--   MultipleCategorySeries  : 多饼图图表数据集, 该类对象与单饼图图表数据集 CategorySeries  对象没有包含关系;

准备数据  :

--  饼图每个元素名称  : List<String[]> titles, 其中集合中的数组就是一个饼图每个元素的集合;

--  饼图每个元素的大小  : List<double[]> values, 其中的数组就是一个饼图每个元素的大小;

相关方法介绍  :

--  创建多饼图数据集  : MultipleCategorySeries series = new MultipleCategorySeries(title), 传入图表的名称;

--  添加一个饼图的数据  : series.add(tittle, titles.get(k), value), 第一个参数是单个饼图名称, 第二个参数是饼图元素名称字符串数组, 第三个是饼图元素大小 double[] 数组;

4. 饼图渲染器

相关类介绍  :

--   DefaultRenderer  : 饼图渲染器, 单饼图 和 多饼图使用的渲染器都是同一个;

--   DefaultRenderer  : 饼图单个元素渲染器, 一个饼图有多个该渲染器渲染, 整个图表有多组该渲染器;

数据准备  :

--  饼图元素的颜色  : int[] colors, 将饼图中所有的颜色放在一个数组中, 每个元素都有一个颜色;

DefaultRenderer 类方法介绍  :

--  构造方法  : DefaultRenderer renderer = new DefaultRenderer();

--  设置标签文字大小  : setLabelsTextSize(int size);

--  设置说明文字大小  : setLegendTextSize(int size);

--  设置边距  : setMargins(new int[] { 20, 30, 15, 0 });

--   添加 SimpleSeriesRenderer对象 到该渲染器集合   : addSeriesRenderer(r);

SimpleSeriesRenderer 方法  :

--  构造函数  : SimpleSeriesRenderer r = new SimpleSeriesRenderer();

--  设置颜色  : setColor(color);

5. 柱状图数据集

相关类介绍  :

--   XYMultipleSeriesDataset  : 封装柱状图的数据, 其中可能有多个柱状图, 每个都封装了若干个 CategorySeries 单个数据集对象;

--   CategorySeries  : 柱状图图表中单个柱状图的数据, 可以被封装入  XYMultipleSeriesDataset 数据集中;

数据准备  :

--  柱状图标题  : String[] titles, 由于一个柱状图图表中可能有多个柱状图, 因此需要一个字符串数组存放这些标题;

--  柱状图值  : List<double[]> values, 集合中的每个数组都代表了一个柱状图的值;

CategorySeries 方法介绍  :

--  构造函数  : CategorySeries series = new CategorySeries(titles[i]), 传入的参数是柱状图的值;

--  设置值大小  : series.add(double), 具体的值需要一个一个去设定;

--  转换类型  : series.toXYSeries(), 只有转换成 XYSeries 对象, 才能加入到  XYMultipleSeriesDataset 对象中;

6. 柱状图渲染器

相关类介绍  :

--   XYMultipleSeriesRenderer  : 柱状图渲染器集合, 与曲线图的渲染器是一样的, 其中封装了很多  SimpleSeriesRenderer 对象;

--   SimpleSeriesRenderer  : 柱状图中的单个柱状图渲染器, 可以封装到  XYMultipleSeriesRenderer 对象中;

准备数据  :

--  柱状图颜色  : int[] colors, 一个柱状图的图表中含有若干个柱状图, 每个柱状图都设定一个颜色;

时间: 2024-10-26 07:09:44

android AChartEngine学习的相关文章

java/android 设计模式学习笔记(14)---外观模式

这篇博客来介绍外观模式(Facade Pattern),外观模式也称为门面模式,它在开发过程中运用频率非常高,尤其是第三方 SDK 基本很大概率都会使用外观模式.通过一个外观类使得整个子系统只有一个统一的高层的接口,这样能够降低用户的使用成本,也对用户屏蔽了很多实现细节.当然,在我们的开发过程中,外观模式也是我们封装 API 的常用手段,例如网络模块.ImageLoader 模块等.其实我们在开发过程中可能已经使用过很多次外观模式,只是没有从理论层面去了解它. 转载请注明出处:http://bl

java/android 设计模式学习笔记(10)---建造者模式

这篇博客我们来介绍一下建造者模式(Builder Pattern),建造者模式又被称为生成器模式,是创造性模式之一,与工厂方法模式和抽象工厂模式不同,后两者的目的是为了实现多态性,而 Builder 模式的目的则是为了将对象的构建与展示分离.Builder 模式是一步一步创建一个复杂对象的创建型模式,它允许用户在不知道内部构建细节的情况下,可以更精细地控制对象的构造流程.一个复杂的对象有大量的组成部分,比如汽车它有车轮.方向盘.发动机.以及各种各样的小零件,要将这些部件装配成一辆汽车,这个装配过

java/android 设计模式学习笔记(一)---单例模式

前段时间公司一些同事在讨论单例模式(我是最渣的一个,都插不上嘴 T__T ),这个模式使用的频率很高,也可能是很多人最熟悉的设计模式,当然单例模式也算是最简单的设计模式之一吧,简单归简单,但是在实际使用的时候也会有一些坑. PS:对技术感兴趣的同鞋加群544645972一起交流 设计模式总目录 java/android 设计模式学习笔记目录 特点 确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例. 单例模式的使用很广泛,比如:线程池(threadpool).缓存(cache).对

Android NDK学习笔记(一) 为什么要用NDK?

NDK是什么 NDK是Native Development Kit的简称,即本地开发工具包.通过NDK,Android允许开发人员使用本地代码语言(例如C/C++)来完成应用的部分(甚至全部)功能.注意:由于翻译原因,有些地方也把Native翻译为"原生". NDK是SDK的一个补充,可以帮助你做这些事情: 生成可以在ARM CPU,Android 1.5(及以上)平台运行的JNI兼容的共享库. 将生成的共享库放置在应用程序项目路径的合适位置,使其能自动地添加进你最终的(和经过签名的)

Android:日常学习笔记(8)———探究UI开发(5)

Android:日常学习笔记(8)---探究UI开发(5) ListView控件的使用 ListView的简单用法 public class MainActivity extends AppCompatActivity { private String[] data={"Apple","Banana","Orange","Watermelon","Pear","Grape","

java/android 设计模式学习笔记(7)---装饰者模式

这篇将会介绍装饰者模式(Decorator Pattern),装饰者模式也称为包装模式(Wrapper Pattern),结构型模式之一,其使用一种对客户端透明的方式来动态的扩展对象的功能,同时它也是继承关系的一种替代方案之一,但比继承更加灵活.在现实生活中也可以看到很多装饰者模式的例子,或者可以大胆的说装饰者模式无处不在,就拿一件东西来说,可以给它披上无数层不一样的外壳,但是这件东西还是这件东西,外壳不过是用来扩展这个东西的功能而已,这就是装饰者模式,装饰者的这个角色也许各不相同但是被装饰的对

【转】Android开发学习总结(一)——搭建最新版本的Android开发环境

最近由于工作中要负责开发一款Android的App,之前都是做JavaWeb的开发,Android开发虽然有所了解,但是一直没有搭建开发环境去学习,Android的更新速度比较快了,Android1.0是2008年发布的,截止到目前为止Android已经更新Android5.0.1,学习Android开发的第一步就是搭建Android的开发环境,博客园里面有不少人也写了关于如何搭建Android开发环境的文章,我也看了一下,但是感觉都比较旧了,对照着做不一定能够搭建成功,但是有些搭建步骤是还是可

Android开发学习之路--网络编程之xml、json

一般网络数据通过http来get,post,那么其中的数据不可能杂乱无章,比如我要post一段数据,肯定是要有一定的格式,协议的.常用的就是xml和json了.在此先要搭建个简单的服务器吧,首先呢下载xampp,然后安装之类的就不再多讲了,参考http://cnbin.github.io/blog/2015/06/05/mac-an-zhuang-he-shi-yong-xampp/.安装好后,启动xampp,之后在浏览器输入localhost或者127.0.0.1就可以看到如下所示了: 这个就

Android UI学习 - ListView (android.R.layout.simple_list_item_1是个什么东西)

Android UI学习 - ListView 2010-06-20 18:21:35 标签:Android UI 移动开发 ListView ListActivity 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://android.blog.51cto.com/268543/336162 ListActivity ListActivity是一个专门显示ListView的Activity类,它内置了ListView对象,只要我