android图表工具achartengine之ChartFactory分析

From:http://blog.csdn.net/qiuzhping/article/details/18629145

要充分应用AChartEngine还需要查看源码,只有从本质上知道这些运作原理才能画出适合自己程序的图表

code:

[java]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. package org.achartengine;  
  2.   
  3. import org.achartengine.chart.BarChart;  
  4. import org.achartengine.chart.BubbleChart;  
  5. import org.achartengine.chart.CombinedXYChart;  
  6. import org.achartengine.chart.CubicLineChart;  
  7. import org.achartengine.chart.DialChart;  
  8. import org.achartengine.chart.DoughnutChart;  
  9. import org.achartengine.chart.LineChart;  
  10. import org.achartengine.chart.PieChart;  
  11. import org.achartengine.chart.RangeBarChart;  
  12. import org.achartengine.chart.ScatterChart;  
  13. import org.achartengine.chart.TimeChart;  
  14. import org.achartengine.chart.XYChart;  
  15. import org.achartengine.model.CategorySeries;  
  16. import org.achartengine.model.MultipleCategorySeries;  
  17. import org.achartengine.model.XYMultipleSeriesDataset;  
  18. import org.achartengine.renderer.DefaultRenderer;  
  19. import org.achartengine.renderer.DialRenderer;  
  20. import org.achartengine.renderer.XYMultipleSeriesRenderer;  
  21.   
  22. import android.content.Context;  
  23. import android.content.Intent;  
  24.   
  25. public class ChartFactory//这个是AChartEngine的工厂类  
  26. {  
  27.   public static final String CHART = "chart";  
  28.   public static final String TITLE = "title";  
  29.     
  30.   //---------------------以下这些是用GraphicalView显示的图表 需要寄托在一些Activity的布局上才能正常显示-----------------------  
  31.   public static final GraphicalView getLineChartView(Context context, XYMultipleSeriesDataset dataset, XYMultipleSeriesRenderer renderer)  
  32.   {//LineChart可以画柱形图,折线图等  
  33.     checkParameters(dataset, renderer);  
  34.     XYChart chart = new LineChart(dataset, renderer);  
  35.     return new GraphicalView(context, chart);  
  36.   }  
  37.   
  38.   public static final GraphicalView getCubeLineChartView(Context context, XYMultipleSeriesDataset dataset, XYMultipleSeriesRenderer renderer, float smoothness)  
  39.   {//这个是组合的线性图,可以自定义横轴,纵轴,  
  40.     checkParameters(dataset, renderer);  
  41.     XYChart chart = new CubicLineChart(dataset, renderer, smoothness);  
  42.     return new GraphicalView(context, chart);  
  43.   }  
  44.   
  45.   public static final GraphicalView getScatterChartView(Context context, XYMultipleSeriesDataset dataset, XYMultipleSeriesRenderer renderer)  
  46.   {//散点图  
  47.     checkParameters(dataset, renderer);  
  48.     XYChart chart = new ScatterChart(dataset, renderer);  
  49.     return new GraphicalView(context, chart);  
  50.   }  
  51.   
  52.   public static final GraphicalView getBubbleChartView(Context context, XYMultipleSeriesDataset dataset, XYMultipleSeriesRenderer renderer)  
  53.   {//泡沫图  
  54.     checkParameters(dataset, renderer);  
  55.     XYChart chart = new BubbleChart(dataset, renderer);  
  56.     return new GraphicalView(context, chart);  
  57.   }  
  58.   
  59.   public static final GraphicalView getTimeChartView(Context context, XYMultipleSeriesDataset dataset, XYMultipleSeriesRenderer renderer, String format)  
  60.   {//时间分布图  
  61.     checkParameters(dataset, renderer);  
  62.     TimeChart chart = new TimeChart(dataset, renderer);  
  63.     chart.setDateFormat(format);  
  64.     return new GraphicalView(context, chart);  
  65.   }  
  66.   
  67.   public static final GraphicalView getBarChartView(Context context, XYMultipleSeriesDataset dataset, XYMultipleSeriesRenderer renderer, BarChart.Type type)  
  68.   {//柱状图  
  69.     checkParameters(dataset, renderer);  
  70.     XYChart chart = new BarChart(dataset, renderer, type);  
  71.     return new GraphicalView(context, chart);  
  72.   }  
  73.   
  74.   public static final GraphicalView getRangeBarChartView(Context context, XYMultipleSeriesDataset dataset, XYMultipleSeriesRenderer renderer, BarChart.Type type)  
  75.   {//区域图  
  76.     checkParameters(dataset, renderer);  
  77.     XYChart chart = new RangeBarChart(dataset, renderer, type);  
  78.     return new GraphicalView(context, chart);  
  79.   }  
  80.   
  81.   public static final GraphicalView getCombinedXYChartView(Context context, XYMultipleSeriesDataset dataset, XYMultipleSeriesRenderer renderer, String[] types)  
  82.   {//组合图,可以让柱状图+折线图+曲线+泡沫图融为一体  
  83.     if ((dataset == null) || (renderer == null) || (types == null) || (dataset.getSeriesCount() != types.length))  
  84.     {  
  85.       throw new IllegalArgumentException("Dataset, renderer and types should be not null and the datasets series count should be equal to the types length");  
  86.     }  
  87.   
  88.     checkParameters(dataset, renderer);  
  89.     CombinedXYChart chart = new CombinedXYChart(dataset, renderer, types);  
  90.     return new GraphicalView(context, chart);  
  91.   }  
  92.   
  93.   public static final GraphicalView getPieChartView(Context context, CategorySeries dataset, DefaultRenderer renderer)  
  94.   {//饼图  
  95.     checkParameters(dataset, renderer);  
  96.     PieChart chart = new PieChart(dataset, renderer);  
  97.     return new GraphicalView(context, chart);  
  98.   }  
  99.   
  100.   public static final GraphicalView getDialChartView(Context context, CategorySeries dataset, DialRenderer renderer)  
  101.   {//刻表图 像汽车速度表那样的图  
  102.     checkParameters(dataset, renderer);  
  103.     DialChart chart = new DialChart(dataset, renderer);  
  104.     return new GraphicalView(context, chart);  
  105.   }  
  106.   
  107.   public static final GraphicalView getDoughnutChartView(Context context, MultipleCategorySeries dataset, DefaultRenderer renderer)  
  108.   {//圆圈图  
  109.     checkParameters(dataset, renderer);  
  110.     DoughnutChart chart = new DoughnutChart(dataset, renderer);  
  111.     return new GraphicalView(context, chart);  
  112.   }  
  113.   //---------------------以下这些是用Intent(意图)显示的图表 可以不用寄托在Activity中也能正常显示-----------------------  
  114.   public static final Intent getLineChartIntent(Context context, XYMultipleSeriesDataset dataset, XYMultipleSeriesRenderer renderer)  
  115.   {  
  116.     return getLineChartIntent(context, dataset, renderer, "");  
  117.   }  
  118.   
  119.   public static final Intent getCubicLineChartIntent(Context context, XYMultipleSeriesDataset dataset, XYMultipleSeriesRenderer renderer, float smoothness)  
  120.   {  
  121.     return getCubicLineChartIntent(context, dataset, renderer, smoothness, "");  
  122.   }  
  123.   
  124.   public static final Intent getScatterChartIntent(Context context, XYMultipleSeriesDataset dataset, XYMultipleSeriesRenderer renderer)  
  125.   {  
  126.     return getScatterChartIntent(context, dataset, renderer, "");  
  127.   }  
  128.   
  129.   public static final Intent getBubbleChartIntent(Context context, XYMultipleSeriesDataset dataset, XYMultipleSeriesRenderer renderer)  
  130.   {  
  131.     return getBubbleChartIntent(context, dataset, renderer, "");  
  132.   }  
  133.   
  134.   public static final Intent getTimeChartIntent(Context context, XYMultipleSeriesDataset dataset, XYMultipleSeriesRenderer renderer, String format)  
  135.   {  
  136.     return getTimeChartIntent(context, dataset, renderer, format, "");  
  137.   }  
  138.   
  139.   public static final Intent getBarChartIntent(Context context, XYMultipleSeriesDataset dataset, XYMultipleSeriesRenderer renderer, BarChart.Type type)  
  140.   {  
  141.     return getBarChartIntent(context, dataset, renderer, type, "");  
  142.   }  
  143.   
  144.   public static final Intent getLineChartIntent(Context context, XYMultipleSeriesDataset dataset, XYMultipleSeriesRenderer renderer, String activityTitle)  
  145.   {  
  146.     checkParameters(dataset, renderer);  
  147.     Intent intent = new Intent(context, GraphicalActivity.class);  
  148.     XYChart chart = new LineChart(dataset, renderer);  
  149.     intent.putExtra("chart", chart);  
  150.     intent.putExtra("title", activityTitle);  
  151.     return intent;  
  152.   }  
  153.   
  154.   public static final Intent getCubicLineChartIntent(Context context, XYMultipleSeriesDataset dataset, XYMultipleSeriesRenderer renderer, float smoothness, String activityTitle)  
  155.   {  
  156.     checkParameters(dataset, renderer);  
  157.     Intent intent = new Intent(context, GraphicalActivity.class);  
  158.     XYChart chart = new CubicLineChart(dataset, renderer, smoothness);  
  159.     intent.putExtra("chart", chart);  
  160.     intent.putExtra("title", activityTitle);  
  161.     return intent;  
  162.   }  
  163.   
  164.   public static final Intent getScatterChartIntent(Context context, XYMultipleSeriesDataset dataset, XYMultipleSeriesRenderer renderer, String activityTitle)  
  165.   {  
  166.     checkParameters(dataset, renderer);  
  167.     Intent intent = new Intent(context, GraphicalActivity.class);  
  168.     XYChart chart = new ScatterChart(dataset, renderer);  
  169.     intent.putExtra("chart", chart);  
  170.     intent.putExtra("title", activityTitle);  
  171.     return intent;  
  172.   }  
  173.   
  174.   public static final Intent getBubbleChartIntent(Context context, XYMultipleSeriesDataset dataset, XYMultipleSeriesRenderer renderer, String activityTitle)  
  175.   {  
  176.     checkParameters(dataset, renderer);  
  177.     Intent intent = new Intent(context, GraphicalActivity.class);  
  178.     XYChart chart = new BubbleChart(dataset, renderer);  
  179.     intent.putExtra("chart", chart);  
  180.     intent.putExtra("title", activityTitle);  
  181.     return intent;  
  182.   }  
  183.   
  184.   public static final Intent getTimeChartIntent(Context context, XYMultipleSeriesDataset dataset, XYMultipleSeriesRenderer renderer, String format, String activityTitle)  
  185.   {  
  186.     checkParameters(dataset, renderer);  
  187.     Intent intent = new Intent(context, GraphicalActivity.class);  
  188.     TimeChart chart = new TimeChart(dataset, renderer);  
  189.     chart.setDateFormat(format);  
  190.     intent.putExtra("chart", chart);  
  191.     intent.putExtra("title", activityTitle);  
  192.     return intent;  
  193.   }  
  194.   
  195.   public static final Intent getBarChartIntent(Context context, XYMultipleSeriesDataset dataset, XYMultipleSeriesRenderer renderer, BarChart.Type type, String activityTitle)  
  196.   {  
  197.     checkParameters(dataset, renderer);  
  198.     Intent intent = new Intent(context, GraphicalActivity.class);  
  199.     BarChart chart = new BarChart(dataset, renderer, type);  
  200.     intent.putExtra("chart", chart);  
  201.     intent.putExtra("title", activityTitle);  
  202.     return intent;  
  203.   }  
  204.   
  205.   public static final Intent getRangeBarChartIntent(Context context, XYMultipleSeriesDataset dataset, XYMultipleSeriesRenderer renderer, BarChart.Type type, String activityTitle)  
  206.   {  
  207.     checkParameters(dataset, renderer);  
  208.     Intent intent = new Intent(context, GraphicalActivity.class);  
  209.     RangeBarChart chart = new RangeBarChart(dataset, renderer, type);  
  210.     intent.putExtra("chart", chart);  
  211.     intent.putExtra("title", activityTitle);  
  212.     return intent;  
  213.   }  
  214.   
  215.   public static final Intent getCombinedXYChartIntent(Context context, XYMultipleSeriesDataset dataset, XYMultipleSeriesRenderer renderer, String[] types, String activityTitle)  
  216.   {  
  217.     if ((dataset == null) || (renderer == null) || (types == null) || (dataset.getSeriesCount() != types.length))  
  218.     {  
  219.       throw new IllegalArgumentException("Datasets, renderers and types should be not null and the datasets series count should be equal to the types length");  
  220.     }  
  221.   
  222.     checkParameters(dataset, renderer);  
  223.     Intent intent = new Intent(context, GraphicalActivity.class);  
  224.     CombinedXYChart chart = new CombinedXYChart(dataset, renderer, types);  
  225.     intent.putExtra("chart", chart);  
  226.     intent.putExtra("title", activityTitle);  
  227.     return intent;  
  228.   }  
  229.   
  230.   public static final Intent getPieChartIntent(Context context, CategorySeries dataset, DefaultRenderer renderer, String activityTitle)  
  231.   {  
  232.     checkParameters(dataset, renderer);  
  233.     Intent intent = new Intent(context, GraphicalActivity.class);  
  234.     PieChart chart = new PieChart(dataset, renderer);  
  235.     intent.putExtra("chart", chart);  
  236.     intent.putExtra("title", activityTitle);  
  237.     return intent;  
  238.   }  
  239.   
  240.   public static final Intent getDoughnutChartIntent(Context context, MultipleCategorySeries dataset, DefaultRenderer renderer, String activityTitle)  
  241.   {  
  242.     checkParameters(dataset, renderer);  
  243.     Intent intent = new Intent(context, GraphicalActivity.class);  
  244.     DoughnutChart chart = new DoughnutChart(dataset, renderer);  
  245.     intent.putExtra("chart", chart);  
  246.     intent.putExtra("title", activityTitle);  
  247.     return intent;  
  248.   }  
  249.   
  250.   public static final Intent getDialChartIntent(Context context, CategorySeries dataset, DialRenderer renderer, String activityTitle)  
  251.   {  
  252.     checkParameters(dataset, renderer);  
  253.     Intent intent = new Intent(context, GraphicalActivity.class);  
  254.     DialChart chart = new DialChart(dataset, renderer);  
  255.     intent.putExtra("chart", chart);  
  256.     intent.putExtra("title", activityTitle);  
  257.     return intent;  
  258.   }  
  259.   
  260.   private static void checkParameters(XYMultipleSeriesDataset dataset, XYMultipleSeriesRenderer renderer)  
  261.   {  
  262.     if ((dataset == null) || (renderer == null) || (dataset.getSeriesCount() != renderer.getSeriesRendererCount()))  
  263.     {  
  264.       throw new IllegalArgumentException("Dataset and renderer should be not null and should have the same number of series");  
  265.     }  
  266.   }  
  267.   
  268.   private static void checkParameters(CategorySeries dataset, DefaultRenderer renderer)  
  269.   {  
  270.     if ((dataset == null) || (renderer == null) || (dataset.getItemCount() != renderer.getSeriesRendererCount()))  
  271.     {  
  272.       throw new IllegalArgumentException("Dataset and renderer should be not null and the dataset number of items should be equal to the number of series renderers");  
  273.     }  
  274.   }  
  275.   
  276.   private static void checkParameters(MultipleCategorySeries dataset, DefaultRenderer renderer)  
  277.   {  
  278.     if ((dataset == null) || (renderer == null) || (!checkMultipleSeriesItems(dataset, renderer.getSeriesRendererCount())))  
  279.     {  
  280.       throw new IllegalArgumentException("Titles and values should be not null and the dataset number of items should be equal to the number of series renderers");  
  281.     }  
  282.   }  
  283.   
  284.   private static boolean checkMultipleSeriesItems(MultipleCategorySeries dataset, int value)  
  285.   {  
  286.     int count = dataset.getCategoriesCount();  
  287.     boolean equal = true;  
  288.     for (int k = 0; (k < count) && (equal); k++) {  
  289.       equal = dataset.getValues(k).length == dataset.getTitles(k).length;  
  290.     }  
  291.     return equal;  
  292.   }  
  293. }  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值