- 浏览: 80238 次
- 性别:
- 来自: 广州
文章分类
最新评论
android图表工具achartengine之ChartFactory分析
要充分应用AChartEngine还需要查看源码,只有从本质上知道这些运作原理才能画出适合自己程序的图表
code:
package org.achartengine; import org.achartengine.chart.BarChart; import org.achartengine.chart.BubbleChart; import org.achartengine.chart.CombinedXYChart; import org.achartengine.chart.CubicLineChart; import org.achartengine.chart.DialChart; import org.achartengine.chart.DoughnutChart; import org.achartengine.chart.LineChart; import org.achartengine.chart.PieChart; import org.achartengine.chart.RangeBarChart; import org.achartengine.chart.ScatterChart; import org.achartengine.chart.TimeChart; import org.achartengine.chart.XYChart; import org.achartengine.model.CategorySeries; import org.achartengine.model.MultipleCategorySeries; import org.achartengine.model.XYMultipleSeriesDataset; import org.achartengine.renderer.DefaultRenderer; import org.achartengine.renderer.DialRenderer; import org.achartengine.renderer.XYMultipleSeriesRenderer; import android.content.Context; import android.content.Intent; public class ChartFactory//这个是AChartEngine的工厂类 { public static final String CHART = "chart"; public static final String TITLE = "title"; //---------------------以下这些是用GraphicalView显示的图表 需要寄托在一些Activity的布局上才能正常显示----------------------- public static final GraphicalView getLineChartView(Context context, XYMultipleSeriesDataset dataset, XYMultipleSeriesRenderer renderer) {//LineChart可以画柱形图,折线图等 checkParameters(dataset, renderer); XYChart chart = new LineChart(dataset, renderer); return new GraphicalView(context, chart); } public static final GraphicalView getCubeLineChartView(Context context, XYMultipleSeriesDataset dataset, XYMultipleSeriesRenderer renderer, float smoothness) {//这个是组合的线性图,可以自定义横轴,纵轴, checkParameters(dataset, renderer); XYChart chart = new CubicLineChart(dataset, renderer, smoothness); return new GraphicalView(context, chart); } public static final GraphicalView getScatterChartView(Context context, XYMultipleSeriesDataset dataset, XYMultipleSeriesRenderer renderer) {//散点图 checkParameters(dataset, renderer); XYChart chart = new ScatterChart(dataset, renderer); return new GraphicalView(context, chart); } public static final GraphicalView getBubbleChartView(Context context, XYMultipleSeriesDataset dataset, XYMultipleSeriesRenderer renderer) {//泡沫图 checkParameters(dataset, renderer); XYChart chart = new BubbleChart(dataset, renderer); return new GraphicalView(context, chart); } public static final GraphicalView getTimeChartView(Context context, XYMultipleSeriesDataset dataset, XYMultipleSeriesRenderer renderer, String format) {//时间分布图 checkParameters(dataset, renderer); TimeChart chart = new TimeChart(dataset, renderer); chart.setDateFormat(format); return new GraphicalView(context, chart); } public static final GraphicalView getBarChartView(Context context, XYMultipleSeriesDataset dataset, XYMultipleSeriesRenderer renderer, BarChart.Type type) {//柱状图 checkParameters(dataset, renderer); XYChart chart = new BarChart(dataset, renderer, type); return new GraphicalView(context, chart); } public static final GraphicalView getRangeBarChartView(Context context, XYMultipleSeriesDataset dataset, XYMultipleSeriesRenderer renderer, BarChart.Type type) {//区域图 checkParameters(dataset, renderer); XYChart chart = new RangeBarChart(dataset, renderer, type); return new GraphicalView(context, chart); } public static final GraphicalView getCombinedXYChartView(Context context, XYMultipleSeriesDataset dataset, XYMultipleSeriesRenderer renderer, String[] types) {//组合图,可以让柱状图+折线图+曲线+泡沫图融为一体 if ((dataset == null) || (renderer == null) || (types == null) || (dataset.getSeriesCount() != types.length)) { throw new IllegalArgumentException("Dataset, renderer and types should be not null and the datasets series count should be equal to the types length"); } checkParameters(dataset, renderer); CombinedXYChart chart = new CombinedXYChart(dataset, renderer, types); return new GraphicalView(context, chart); } public static final GraphicalView getPieChartView(Context context, CategorySeries dataset, DefaultRenderer renderer) {//饼图 checkParameters(dataset, renderer); PieChart chart = new PieChart(dataset, renderer); return new GraphicalView(context, chart); } public static final GraphicalView getDialChartView(Context context, CategorySeries dataset, DialRenderer renderer) {//刻表图 像汽车速度表那样的图 checkParameters(dataset, renderer); DialChart chart = new DialChart(dataset, renderer); return new GraphicalView(context, chart); } public static final GraphicalView getDoughnutChartView(Context context, MultipleCategorySeries dataset, DefaultRenderer renderer) {//圆圈图 checkParameters(dataset, renderer); DoughnutChart chart = new DoughnutChart(dataset, renderer); return new GraphicalView(context, chart); } //---------------------以下这些是用Intent(意图)显示的图表 可以不用寄托在Activity中也能正常显示----------------------- public static final Intent getLineChartIntent(Context context, XYMultipleSeriesDataset dataset, XYMultipleSeriesRenderer renderer) { return getLineChartIntent(context, dataset, renderer, ""); } public static final Intent getCubicLineChartIntent(Context context, XYMultipleSeriesDataset dataset, XYMultipleSeriesRenderer renderer, float smoothness) { return getCubicLineChartIntent(context, dataset, renderer, smoothness, ""); } public static final Intent getScatterChartIntent(Context context, XYMultipleSeriesDataset dataset, XYMultipleSeriesRenderer renderer) { return getScatterChartIntent(context, dataset, renderer, ""); } public static final Intent getBubbleChartIntent(Context context, XYMultipleSeriesDataset dataset, XYMultipleSeriesRenderer renderer) { return getBubbleChartIntent(context, dataset, renderer, ""); } public static final Intent getTimeChartIntent(Context context, XYMultipleSeriesDataset dataset, XYMultipleSeriesRenderer renderer, String format) { return getTimeChartIntent(context, dataset, renderer, format, ""); } public static final Intent getBarChartIntent(Context context, XYMultipleSeriesDataset dataset, XYMultipleSeriesRenderer renderer, BarChart.Type type) { return getBarChartIntent(context, dataset, renderer, type, ""); } public static final Intent getLineChartIntent(Context context, XYMultipleSeriesDataset dataset, XYMultipleSeriesRenderer renderer, String activityTitle) { checkParameters(dataset, renderer); Intent intent = new Intent(context, GraphicalActivity.class); XYChart chart = new LineChart(dataset, renderer); intent.putExtra("chart", chart); intent.putExtra("title", activityTitle); return intent; } public static final Intent getCubicLineChartIntent(Context context, XYMultipleSeriesDataset dataset, XYMultipleSeriesRenderer renderer, float smoothness, String activityTitle) { checkParameters(dataset, renderer); Intent intent = new Intent(context, GraphicalActivity.class); XYChart chart = new CubicLineChart(dataset, renderer, smoothness); intent.putExtra("chart", chart); intent.putExtra("title", activityTitle); return intent; } public static final Intent getScatterChartIntent(Context context, XYMultipleSeriesDataset dataset, XYMultipleSeriesRenderer renderer, String activityTitle) { checkParameters(dataset, renderer); Intent intent = new Intent(context, GraphicalActivity.class); XYChart chart = new ScatterChart(dataset, renderer); intent.putExtra("chart", chart); intent.putExtra("title", activityTitle); return intent; } public static final Intent getBubbleChartIntent(Context context, XYMultipleSeriesDataset dataset, XYMultipleSeriesRenderer renderer, String activityTitle) { checkParameters(dataset, renderer); Intent intent = new Intent(context, GraphicalActivity.class); XYChart chart = new BubbleChart(dataset, renderer); intent.putExtra("chart", chart); intent.putExtra("title", activityTitle); return intent; } public static final Intent getTimeChartIntent(Context context, XYMultipleSeriesDataset dataset, XYMultipleSeriesRenderer renderer, String format, String activityTitle) { checkParameters(dataset, renderer); Intent intent = new Intent(context, GraphicalActivity.class); TimeChart chart = new TimeChart(dataset, renderer); chart.setDateFormat(format); intent.putExtra("chart", chart); intent.putExtra("title", activityTitle); return intent; } public static final Intent getBarChartIntent(Context context, XYMultipleSeriesDataset dataset, XYMultipleSeriesRenderer renderer, BarChart.Type type, String activityTitle) { checkParameters(dataset, renderer); Intent intent = new Intent(context, GraphicalActivity.class); BarChart chart = new BarChart(dataset, renderer, type); intent.putExtra("chart", chart); intent.putExtra("title", activityTitle); return intent; } public static final Intent getRangeBarChartIntent(Context context, XYMultipleSeriesDataset dataset, XYMultipleSeriesRenderer renderer, BarChart.Type type, String activityTitle) { checkParameters(dataset, renderer); Intent intent = new Intent(context, GraphicalActivity.class); RangeBarChart chart = new RangeBarChart(dataset, renderer, type); intent.putExtra("chart", chart); intent.putExtra("title", activityTitle); return intent; } public static final Intent getCombinedXYChartIntent(Context context, XYMultipleSeriesDataset dataset, XYMultipleSeriesRenderer renderer, String[] types, String activityTitle) { if ((dataset == null) || (renderer == null) || (types == null) || (dataset.getSeriesCount() != types.length)) { throw new IllegalArgumentException("Datasets, renderers and types should be not null and the datasets series count should be equal to the types length"); } checkParameters(dataset, renderer); Intent intent = new Intent(context, GraphicalActivity.class); CombinedXYChart chart = new CombinedXYChart(dataset, renderer, types); intent.putExtra("chart", chart); intent.putExtra("title", activityTitle); return intent; } public static final Intent getPieChartIntent(Context context, CategorySeries dataset, DefaultRenderer renderer, String activityTitle) { checkParameters(dataset, renderer); Intent intent = new Intent(context, GraphicalActivity.class); PieChart chart = new PieChart(dataset, renderer); intent.putExtra("chart", chart); intent.putExtra("title", activityTitle); return intent; } public static final Intent getDoughnutChartIntent(Context context, MultipleCategorySeries dataset, DefaultRenderer renderer, String activityTitle) { checkParameters(dataset, renderer); Intent intent = new Intent(context, GraphicalActivity.class); DoughnutChart chart = new DoughnutChart(dataset, renderer); intent.putExtra("chart", chart); intent.putExtra("title", activityTitle); return intent; } public static final Intent getDialChartIntent(Context context, CategorySeries dataset, DialRenderer renderer, String activityTitle) { checkParameters(dataset, renderer); Intent intent = new Intent(context, GraphicalActivity.class); DialChart chart = new DialChart(dataset, renderer); intent.putExtra("chart", chart); intent.putExtra("title", activityTitle); return intent; } private static void checkParameters(XYMultipleSeriesDataset dataset, XYMultipleSeriesRenderer renderer) { if ((dataset == null) || (renderer == null) || (dataset.getSeriesCount() != renderer.getSeriesRendererCount())) { throw new IllegalArgumentException("Dataset and renderer should be not null and should have the same number of series"); } } private static void checkParameters(CategorySeries dataset, DefaultRenderer renderer) { if ((dataset == null) || (renderer == null) || (dataset.getItemCount() != renderer.getSeriesRendererCount())) { 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"); } } private static void checkParameters(MultipleCategorySeries dataset, DefaultRenderer renderer) { if ((dataset == null) || (renderer == null) || (!checkMultipleSeriesItems(dataset, renderer.getSeriesRendererCount()))) { 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"); } } private static boolean checkMultipleSeriesItems(MultipleCategorySeries dataset, int value) { int count = dataset.getCategoriesCount(); boolean equal = true; for (int k = 0; (k < count) && (equal); k++) { equal = dataset.getValues(k).length == dataset.getTitles(k).length; } return equal; } }
相关推荐
android图表绘制工具,功能非常强大,几乎涵盖了所有的图表种类。 这是目前最新的版本:1.1.0 包含了3个文件: achartengine-1.1.0.jar, achartengine-1.1.0-demo-source.zip, achartengine-1.1.0-javadocs.zip ...
NULL 博文链接:https://iaiai.iteye.com/blog/1783716
资源里包括Android图表引擎achartengine 的jar包、示例代码及API文档,各种二维三维图表开发利器
AChartEngine 是一个安卓系统上制作图表的框架 目前为止AchartEngine最新版是1.1.0版本。
AChartEngine 是一个安卓系统上制作图表的框架,使用简单,功能强大,目前它支持如下的图表类型:line chart (折线图),area chart (面积图;分区图,对比图),scatter chart ( 散点图),time chart (时间图;进度表),bar...
安卓图表引擎AChartEngine(六)-框架源码结构图.pdf
Android中使用AChartEngine 来绘图的demo,比google code上的demo简单易懂。相关文章请看: http://blog.csdn.net/suiyuansanren/article/details/19819437
主要是aChartEngine 图表中线性图表的time chart的使用,以时间为x轴单位,可以自由的设置单位为年 月 日 时 分 秒等,可以自由的设置间隔大小
AChartEngine is a charting library for Android applications It currently supports the following chart types: line chart area chart scatter chart time chart bar chart pie chart bubble chart doughnut ...
android 开发中经常会用到绘制各种图表,例如折线图 趋势图、饼图。这个开源的项目为各种图形的制作提供了完美的解决方案,API很完善、方便我们定制个性需求的图表展示
安卓图表框架achartengine-1.0.0 支持以下类型的图表: • line chart (折线图) • area chart (面积图;分区图,对比图) • scatter chart ( 散点图) • time chart (时间图;进度表) • bar chart (条形图;柱状图)...
Android图表引擎AChartEngine实现动态柱状图,可以实时传入数据实时刷新图表
今天在做项目的时候用到了图表功能,记录下来 achartengine是google的一个开源项目,可以在https://code.google.com/p/achartengine/ 下载技术文档,jar包以及项目源代码 ...import org.achartengine.ChartFactory;
NULL 博文链接:https://chenzheng8975.iteye.com/blog/2101575
最新android报表开发achartengine-1.0.0
Android报表库 AChartEngine 1.0.0 Demo ,官方Demo 导入Eclipse中有点小问题,重新修改后发布经测试已正常。
achartengine-0[1].7.0-demo-source.zip android开发股表图表,统计图表的开源引擎,demo及jar包
折线图展示数据,方便易懂,而且可以做成动态加载,很方便数据的管理和展示
android上的绘图库,可以绘制折线图,饼图,柱状图等,带Java doc 和demo。