安卓图表引擎AChartEngine示例源码概述和分析_第1页
安卓图表引擎AChartEngine示例源码概述和分析_第2页
安卓图表引擎AChartEngine示例源码概述和分析_第3页
安卓图表引擎AChartEngine示例源码概述和分析_第4页
安卓图表引擎AChartEngine示例源码概述和分析_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、安卓图表引擎AChartEngine(二 - 示例源码概述和分析 首先看一下示例中类之间的关系:1. ChartDemo这个类是整个应用程序的入口,运行之后的效果显示一个list.2. IDemoChart接口,这个接口定义了三个方法,getName(返回值是listitem上显示的标题;getDesc(返回值是listitem上显示的描述内容.excute(context返回值是一个Intent,当点击listitem后跳转到此Intent.3. AbstractDemoChart类是一个抽象类,实现接口IDemoChart接口,这个类中封装了构建DataSet

2、和renderer的方法,目的快速构建我们的dataset和renderer.这个类具体提供了哪些方法呢?见下图.至于为什么要进行这样的封装看完4中ChartFactory.get*Intent(方法的参数类型后您就明白了.AbstractChartDemo.java: java view plaincopy1. 2.   3. 4. 5.   6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.   17. public abstract class Abstract

3、DemoChart implements IDemoChart   18.   19.   /* 20.    * 构建 XYMultipleSeriesDataset. 21.    *  22.    * param titles 每个序列的图例 23.    * param

4、 xValues X轴的坐标 24.    * param yValues Y轴的坐标 25.    * return XYMultipleSeriesDataset 26.    */  27.   protected XYMultipleSeriesDataset buildDataset(String titles, Li

5、st  xValues,   28.       List  yValues    29.     XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset(;  30.     addXYSeries(dataset, titles, xVa

6、lues, yValues, 0;  31.     return dataset;  32.     33.     34.   /向DataSet中添加序列.  35.   public void addXYSeries(XYMultipleSeriesDataset dataset, String

7、60;titles, List  xValues,   36.       List  yValues, int scale    37.     int length = titles.length;  38.     for (int i = 0; i&#

8、160;< length; i+   39.       XYSeries series = new XYSeries(titlesi, scale; /这里注意与TimeSeries区别.  40.       double xV = xValues.get(i;  41.  &#

9、160;    double yV = yValues.get(i;  42.       int seriesLength = xV.length;  43.       for (int k = 0; k < seriesLength; k+

10、0;  44.         series.add(xVk, yVk;  45.         46.       dataset.addSeries(series;  47.       48.     

11、49.   50.   /* 51.    * 构建XYMultipleSeriesRenderer. 52.    *  53.    * param colors 每个序列的颜色 54.    * param styles 每个序列点的类型(可设置三角,圆点,菱形,方块等多种 55.  

12、0; * return XYMultipleSeriesRenderer 56.    */  57.   protected XYMultipleSeriesRenderer buildRenderer(int colors, PointStyle styles   58.     XYMultipleSeriesRenderer renderer

13、0;= new XYMultipleSeriesRenderer(;  59.     setRenderer(renderer, colors, styles;  60.     return renderer;  61.     62.   63.   protected void setRenderer

14、(XYMultipleSeriesRenderer renderer, int colors, PointStyle styles   64.     /整个图表属性设置  65.     /->start  66.     renderer.setAxisTitleTextSize(16;/设置轴标题文字的大小  67. 

15、0;   renderer.setChartTitleTextSize(40;/设置整个图表标题文字的大小  68.     renderer.setLabelsTextSize(15;/设置轴刻度文字的大小  69.     renderer.setLegendTextSize(15;/设置图例文字大小  70.     renderer.setPointSize(5f;/设置点的大小

16、(图上显示的点的大小和图例中点的大小都会被设置  71.     renderer.setMargins(new int  20, 30, 15, 20 /设置图表的外边框(上/左/下/右  72.     /->end  73.       74.     /以下代码设置没个序列的

17、颜色.  75.     /->start  76.     int length = colors.length;  77.     for (int i = 0; i < length; i+   78.      

18、; XYSeriesRenderer r = new XYSeriesRenderer(;  79.       r.setColor(colorsi;/设置颜色  80.       r.setPointStyle(stylesi;  81.       renderer.addSeriesRenderer

19、(r;  82.       83.     /->end  84.     85.   86.   /* 87.    * 设置renderer的一些属性. 88.    *  89.    * param re

20、nderer 要设置的renderer 90.    * param title 图表标题 91.    * param xTitle X轴标题 92.    * param yTitle Y轴标题 93.    * param xMin X轴最小值 94.    *&

21、#160;param xMax X轴最大值 95.    * param yMin Y轴最小值 96.    * param yMax Y轴最大值 97.    * param axesColor X轴颜色 98.    * param labelsColor Y轴颜色 99.  

22、;  */  100.   protected void setChartSettings(XYMultipleSeriesRenderer renderer, String title, String xTitle,  101.       String yTitle, double xMin, double xMax, do

23、uble yMin, double yMax, int axesColor,  102.       int labelsColor   103.     renderer.setChartTitle(title;  104.     renderer.setXTitle(xTitle;  105. 

24、0;   renderer.setYTitle(yTitle;  106.     renderer.setXAxisMin(xMin;  107.     renderer.setXAxisMax(xMax;  108.     renderer.setYAxisMin(yMin;  109.     renderer.set

25、YAxisMax(yMax;  110.     renderer.setAxesColor(axesColor;  111.     renderer.setLabelsColor(labelsColor;  112.     113.   114.   /* 115.    * 构建和时间有关的XYMultipleSerie

26、sDataset,这个方法与buildDataset在参数上区别是需要List 作参数. 116.    *  117.    * param titles 序列图例 118.    * param xValues X轴值 119.    * param yValues Y轴值 120.    *&

27、#160;return XYMultipleSeriesDataset 121.    */  122.   protected XYMultipleSeriesDataset buildDateDataset(String titles, List  xValues,   123.       List  yValues    124.

28、     XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset(;  125.     int length = titles.length;  126.     for (int i = 0; i < length;

29、60;i+   127.       TimeSeries series = new TimeSeries(titlesi;/构建时间序列TimeSeries,  128.       Date xV = xValues.get(i;  129.       double

30、0;yV = yValues.get(i;  130.       int seriesLength = xV.length;  131.       for (int k = 0; k < seriesLength; k+   132.    

31、;     series.add(xVk, yVk;  133.         134.       dataset.addSeries(series;  135.       136.     return dataset;  

32、;137.     138.   139.   /* 140.    * 构建单个CategorySeries,可用于生成饼图,注意与buildMultipleCategoryDataset(构建圆环图相区别. 141.    *  142.    * param titles the series titles 14

33、3.    * param values the values 144.    * return the category series 145.    */  146.   protected CategorySeries buildCategoryDataset(String title, double value

34、s   147.     CategorySeries series = new CategorySeries(title;  148.     int k = 0;  149.     for (double value : values   150.  &

35、#160;    series.add("Project " + +k, value;  151.       152.   153.     return series;  154.     155.   156.   /* 157. &

36、#160;  * 构建MultipleCategorySeries,可用于构建圆环图(每个环是一个序列 158.    *  159.    * param titles the series titles 160.    * param values the values 161.    * re

37、turn the category series 162.    */  163.   protected MultipleCategorySeries buildMultipleCategoryDataset(String title,  164.       List  titles, List  values   

38、; 165.     MultipleCategorySeries series = new MultipleCategorySeries(title;  166.     int k = 0;  167.     for (double value : values   168.  &#

39、160;    series.add(2007 + k + "", titles.get(k, value;  169.       k+;  170.       171.     return series;  172.   

40、  173.   174.   /* 175.    * 构建DefaultRenderer. 176.    *  177.    * param colors 每个序列的颜色 178.    * return DefaultRenderer 179.    */&#

41、160; 180.   protected DefaultRenderer buildCategoryRenderer(int colors   181.     DefaultRenderer renderer = new DefaultRenderer(;  182.     renderer.setLabelsTextSize(15;  18

42、3.     renderer.setLegendTextSize(15;  184.     renderer.setMargins(new int  20, 30, 15, 0   185.     for (int color : colors   186.    

43、;   SimpleSeriesRenderer r = new SimpleSeriesRenderer(;  187.       r.setColor(color;  188.       renderer.addSeriesRenderer(r;  189.       190.

44、    return renderer;  191.     192.   193.   /* 194.    * 构建XYMultipleSeriesDataset,适用于柱状图. 195.    *  196.    * param titles 每中柱子序列的图列 

45、;197.    * param values 柱子的高度值 198.    * return XYMultipleSeriesDataset 199.    */  200.   protected XYMultipleSeriesDataset buildBarDataset(String titles, List  values &

46、#160;  201.     XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset(;  202.     int length = titles.length;  203.     for (int i = 0; i <

47、 length; i+   204.       CategorySeries series = new CategorySeries(titlesi;  205.       double v = values.get(i;  206.       int&

48、#160;seriesLength = v.length;  207.       for (int k = 0; k < seriesLength; k+   208.         series.add(vk;  209.     

49、60;   210.       dataset.addSeries(series.toXYSeries(;  211.       212.     return dataset;  213.     214.   215.   /* 216.   

50、; * 构建XYMultipleSeriesRenderer,适用于柱状图. 217.    *  218.    * param colors 每个序列的颜色 219.    * return XYMultipleSeriesRenderer 220.    */  221.   protected XYM

51、ultipleSeriesRenderer buildBarRenderer(int colors   222.     XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer(;  223.     renderer.setAxisTitleTextSize(16;  224.    

52、; renderer.setChartTitleTextSize(20;  225.     renderer.setLabelsTextSize(15;  226.     renderer.setLegendTextSize(15;  227.     int length = colors.length;  228.    

53、; for (int i = 0; i < length; i+   229.       SimpleSeriesRenderer r = new SimpleSeriesRenderer(;  230.       r.setColor(colorsi;  231. &

54、#160;     renderer.addSeriesRenderer(r;  232.       233.     return renderer;  234.     235.   236.   4.  其他的以*Chat结尾的类大都继承自AbstractDemoChart这个类实现了接口IDemoC

55、hart.我们可以重点看一下execute(context方法,分析之后发现这个方法中构建Intent的步骤大同小异,第一步构建dataset,第二步构建renderer,第三步调用ChartFactory.get*Intent(方法或ChartFactory.get*View(方法,二者的区别在于一个返回Intent,这个intent可以启动一个特定的activity,另一个返回GraphicalView,对这个GraphicalView可以灵活设置也可以仅作为一部分显示在任何activity上.对于ChartFactory.get*Intent(上的参数activityTitle是指设置显

56、示在activity上的标题.条形图static android.content.IntentgetBarChartIntent(android.content.Context context,XYMultipleSeriesDataset dataset, XYMultipleSeriesRenderer renderer,BarChart.Type type 条形图static android.content.IntentgetBarChartIntent(android.content.Context

57、0;context,XYMultipleSeriesDataset dataset, XYMultipleSeriesRenderer renderer,BarChart.Type type, java.lang.String activityTitle 条形图static GraphicalViewgetBarChartView(android.content.Context context,XYMultipleSeriesDataset dataset, XYMultipleSeriesRe

58、nderer renderer,BarChart.Type type 气泡图static android.content.IntentgetBubbleChartIntent(android.content.Context context,XYMultipleSeriesDataset dataset, XYMultipleSeriesRenderer renderer 气泡图static android.content.IntentgetBubbleChartIntent(android.co

59、ntent.Context context,XYMultipleSeriesDataset dataset, XYMultipleSeriesRenderer renderer, java.lang.String activityTitle p 气泡图static GraphicalViewgetBubbleChartView(android.content.Context context,XYMultipleSeriesDataset dataset, XYMultipleSeriesRend

60、erer renderer p 组合图static android.content.IntentgetCombinedXYChartIntent(android.content.Context context,XYMultipleSeriesDataset dataset, XYMultipleSeriesRenderer renderer, java.lang.String types, java.lang.String activityTitle p 组合图static Graph

61、icalViewgetCombinedXYChartView(android.content.Context context,XYMultipleSeriesDataset dataset, XYMultipleSeriesRenderer renderer, java.lang.String types p 立方折线图static GraphicalViewgetCubeLineChartView(android.content.Context context,XYMultipleSeriesDataset

62、60;dataset, XYMultipleSeriesRenderer renderer, float smoothness p 立方折线图static android.content.IntentgetCubicLineChartIntent(android.content.Context context,XYMultipleSeriesDataset dataset, XYMultipleSeriesRenderer renderer, float smoothness p 立方

63、折线图static android.content.IntentgetCubicLineChartIntent(android.content.Context context,XYMultipleSeriesDataset dataset, XYMultipleSeriesRenderer renderer, float smoothness, java.lang.String activityTitle p 拨号盘static android.content.IntentgetDialChartInte

64、nt(android.content.Context context,CategorySeries dataset, DialRenderer renderer, java.lang.String activityTitle p 拨号盘static GraphicalViewgetDialChartView(android.content.Context context, CategorySeries dataset,DialRenderer renderer p 圆环图st

65、atic android.content.IntentgetDoughnutChartIntent(android.content.Context context,MultipleCategorySeries dataset, DefaultRenderer renderer, java.lang.String activityTitle p 圆环图static GraphicalViewgetDoughnutChartView(android.content.Context context,Multip

66、leCategorySeries dataset, DefaultRenderer renderer p 圆环图static android.content.IntentgetLineChartIntent(android.content.Context context,XYMultipleSeriesDataset dataset, XYMultipleSeriesRenderer renderer p 折线图static android.content.IntentgetLineChartIntent(android.content.Context context,XYMultipleSeriesDataset dataset, XYMultipleSeriesRenderer renderer, java.lang.String activityTitle p

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论