`

Android开发中如何使用绘制图表

阅读更多
本文原文发表在http://tech.it168.com/a2011/0603/1200/000001200313.shtml
乃本人作品,不得转载

在日常的统计中,经常要用图表来给用户恰当的数据体验,比如用饼状图,柱型图等。在传统的web中,有比较多的开源的这方面的解决方案。本文将简单介绍如何在Android中,如何使用开源工具库来展示图表。

  在Android中,有三种解决方案,分别是:

  1) 使用google 图表 api

  2) 使用Achartengine库(http://www.achartengine.org/)

  3) 使用chartdroid库(http://code.google.com/p/chartdroid/)

  下面分别进行介绍:

  使用google 图表api

  第一种方法是使用google的图表API。可以到如下这个地址去申请使用google 图表API

  (http://code.google.com/apis/chart/)。这个API特别适合去生成饼状图。调用的格式如下即可:

  http://chart.apis.google.com/chart?cht=p3&chd=t:30,60,10&chs=250x100&chl=cars|bikes|trucks

  其中cht=p3表示生成的是一个饼状图;chd=t:30,60,10表示要生成三个部分的数据,分别是30,60,10,当然也可以其他更复杂的数据形式。

  chs=250*100表示的是图型的大小(宽度*高度);chl=cars|bikes|trucks指出了这三部分数据内容的文字标签,即实际上显示在图表上的。

  使用方法很简单,只需要在oncreate事件中如下调用即可:

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
WebView googleChartView = new WebView(this);
setContentView(googleChartView);
String mUrl = "http://chart.apis.google.com/chart?cht=p3& chd=t:30,60,10&chs=250x100&chl=cars|bikes|trucks";
googleChartView.loadUrl(mUrl);
}

  因为要连接网络,所以要在配置文件中允许使用网络,在AndroidManifest.xml中如下配置:

<uses-permission android:name="android.permission.INTERNET" />

 关于google 图表API更多的资料请参考http://code.google.com/intl/zh-CN/apis/chart/image/docs/making_charts.html

  ,但这种方案有个缺点,就是必须要联上网络,才能访问其API,生成图形。

  2) 使用Achartengine库

  第二种解决方案是使用Achartengine库,下载地址在:

  http://code.google.com/p/achartengine/downloads/list

  ,将其JAR下载后,放到工程的lib包库中,结构如下图:


代码如下:

public class AChartExample {
public Intent execute(Context context) {
int[] colors = new int[] { Color.RED, Color.YELLOW, Color.BLUE };
DefaultRenderer renderer = buildCategoryRenderer(colors);
CategorySeries categorySeries = new CategorySeries("Vehicles Chart");
categorySeries.add("cars ", 30);
categorySeries.add("trucks", 20);
categorySeries.add("bikes ", 60);
return ChartFactory.getPieChartIntent(context, categorySeries, renderer);
}
 
protected DefaultRenderer buildCategoryRenderer(int[] colors) {
DefaultRenderer renderer = new DefaultRenderer();
for (int color : colors) {
SimpleSeriesRenderer r = new SimpleSeriesRenderer();
r.setColor(color);
renderer.addSeriesRenderer(r);
}
return renderer;
}
}

  在上面的代码中,首先将初始化了colors数组,这里指定了饼图的三种颜色,然后在buildCategoryRenderer方法中,使用SimpleSeriesRenderer类实例来进行初始化,分别设置了饼图要显示的系列区域的颜色。而我们将要显示的数据及标签内容都放到categorySeries中进行显示。最后调用ChartFactory的getPieChartIntent方法,传入categorySeries和renderer即可。

  在我们的主类中,进行如下调用:

  Intent achartIntent = new AChartExample().execute(this);

  startActivity(achartIntent);

  最后生成的效果如下图:


3) 使用Chartdroid

  第三种方法是使用chartdroid,要注意的是,如果使用这种方法的话,必须先下载并安装Chardroid这个APK,下载地址在:http://code.google.com/p/chartdroid/downloads/list,下载并将其APK包进行安装。

  要使用Chartdroid,必须要使用content provider,我们编写代码如下:

public class ChartDroidDataProvider extends ContentProvider {
static final String AUTHORITY =  "com.xyz.contentprovider.chardroid";
@Override
public String getType(Uri uri) {
return "vnd.android.cursor.dir/vnd.com.googlecode.chartdroid.graphable";
}
public static final Uri PROVIDER_URI = new Uri.Builder().scheme(
ContentResolver.SCHEME_CONTENT).authority(AUTHORITY).build();
@Override
public Cursor query(Uri uri, String[] projection, String selection,
String[] selectionArgs, String sortOrder) {
 
//获得实际数据 
MatrixCursor c = new MatrixCursor(new String[]                  { BaseColumns._ID,
"COLUMN_AXIS_INDEX", "COLUMN_SERIES_INDEX",
"COLUMN_DATUM_VALUE", "COLUMN_DATUM_LABEL" });
 
c.newRow().add(1).add(0).add(1).add(30).add(null);
c.newRow().add(2).add(0).add(1).add(10).add(null);
c.newRow().add(3).add(0).add(1).add(60).add(null);
 
return c;
}
 
}

  在上面的代码中,我们使用了MatrixCursor生成了相关的数据:30,10,60。关于ChartDroid的详细ContentProvider信息,请参考http://code.google.com/p/chartdroid/wiki/InterfaceSpecification。接下来,我们看使用的代码,如下:

Intent chartDroidIntent = new Intent(Intent.ACTION_VIEW,
ChartDroidDataProvider.PROVIDER_URI);
chartDroidIntent.putExtra(Intent.EXTRA_TITLE, "Chart droid");
chartDroidIntent
.addCategory("com.googlecode.chartdroid.intent.category.PIE_CHART");
startActivity(chartDroidIntent);

  注意,这里要使用charDroidIntent的addCategory方法去指定图表的类型,即

  com.googlecode.chartdroid.intent.category.PIE_CHART。下图是运行效果:

5
2
分享到:
评论
2 楼 Williamyuan86 2011-08-03  
xihuan&java 写道
请问楼主
我用google 图表 api 显示图表
图表怎么显示不出来呀,一片空白

试试这个地址啊http://chart.apis.google.com/chart?chs=300x225&cht=p3&chd=s:Uf9a&chdl=30%C2%B0|40%C2%B0|50%C2%B0|60%C2%B0
1 楼 xihuan&java 2011-06-24  
请问楼主
我用google 图表 api 显示图表
图表怎么显示不出来呀,一片空白

相关推荐

    使用echarts绘制android图表

    要在 Android 中使用 ECharts,我们需要在一个 Webview 中加载包含 ECharts 初始化代码的 HTML 页面。 - 通过集成 Webview,Android 应用可以调用 JavaScript 代码,进而利用 ECharts 提供的 API 来创建和操作图表...

    android绘制各种图表

    在Android开发中,绘制各种图表是一项常见的需求,无论是用于数据可视化、用户界面设计还是数据分析展示。本教程将深入探讨如何在Android平台上实现柱状图和线形图的绘制,这些都是数据展示的重要工具。 首先,我们...

    android绘制自定义图表效果源码.zip

    3. **动画逻辑**:ValueAnimator的使用会体现在对数据模型的更新以及重新绘制图表的过程中。开发者可能创建一个ValueAnimator实例,设置动画属性,并在动画更新回调中更新数据模型,然后调用`invalidate()`使View...

    android图表绘制类库 achartengine

    在Android应用开发中,数据可视化是一项重要的任务,它能够帮助用户直观地理解复杂的数据信息。`achartengine`是一个强大的开源类库,专门用于在Android平台上绘制各种图表,包括折线图、趋势图和饼图等。这个库以其...

    android 图表绘制

    在Android开发中,图表绘制是一项重要的任务,尤其在数据可视化、数据分析或用户界面设计中扮演着关键角色。本文将深入探讨Android平台上的图表绘制技术,包括基础概念、常用库以及各种图表类型的实现。 首先,我们...

    Android例子源码动态绘制折线、圆柱、饼状图

    在Android开发中,数据可视化是十分重要的,它能够帮助用户直观地理解应用程序中的信息和统计数据。本示例源码着重展示了如何在Android平台上动态绘制折线图、圆柱图和饼状图,这些都是数据可视化中常见的图表类型。...

    Android使用HelloCharts绘制多曲线图

    在Android开发中,有时我们需要展示复杂的数据,如统计图表,这时可以借助第三方库来实现,例如"HelloCharts"。HelloCharts是一个轻量级且功能强大的图表库,支持多种类型的图表,包括线图、柱状图、饼图等,非常...

    Android图表开发jar宝

    5. **绘制图表**:在Android的`View`上绘制图表,通常会在`Activity`或`Fragment`中创建一个`ChartView`并将其添加到布局中。 6. **处理交互**:如果需要,可以添加监听器来处理用户的触摸事件,如点击图表、拖动等...

    android曲线图的绘制

    在Android开发中,有时我们需要创建动态的、可定制的曲线图来展示数据,这通常涉及到自定义View的绘制。这个“android曲线图的绘制”是一个关于如何在Android平台上实现曲线图表的小型示例项目。该项目可能包含了一...

    android开发中 类似于jfreechart的图表开发

    总之,在Android开发中,利用开源图表库可以方便地实现类似JFreeChart的图表功能。开发者需要根据项目需求选择合适的库,学习并掌握其用法,同时注意性能优化和用户体验,以实现高质量的图表展示。

    Android图形图表绘制控件

    在Android应用开发中,图形和图表的展示是至关重要的,特别是在数据分析、统计报告或用户界面设计方面。...无论是`AChartEngine`还是其他库,理解它们的工作原理并灵活运用,将是提升Android开发技能的重要步骤。

    android上绘制统计图表的例子

    总之,AChartEngine是Android开发中一个实用的统计图表库,它提供了丰富的图表类型和高度可定制的选项。通过熟练掌握其使用,你可以轻松地在应用中创建美观且功能强大的数据可视化界面。在实际开发中,你可以根据...

    Android绘制图表

    在Android开发中,绘制图表是一项常见的任务,尤其在数据可视化、统计分析或者创建各种应用程序时。图表可以帮助用户直观地理解复杂的数据,使信息传递更为高效。Android提供了多种方式来实现图表的绘制,包括使用...

    android绘制心电图

    6. **实时更新**:在UI线程中使用Handler或RxJava来定时更新数据并重绘图表,确保心电图随数据变化而动态更新。同时要注意避免阻塞主线程,保持界面响应性。 7. **用户交互**:添加缩放、平移手势,使用户能详细...

    Android过若干点绘制平滑曲线.zip

    在Android开发中,有时我们需要在屏幕上绘制出平滑的曲线,比如在绘制图表、游戏轨迹或者UI动画时。本教程将聚焦于如何使用贝塞尔曲线(Bezier Curve)通过若干个控制点来实现这一目标。贝塞尔曲线是一种在图形设计...

    android 图表的绘制

    在Android应用开发中,图表的绘制是数据可视化的重要部分,尤其在数据分析、统计报告或用户界面展示时。本项目着重于使用ACHARTENGINE库来实现折线图、曲线图、柱形图和饼状图的绘制,这四种图表类型在各种应用场景...

    Android实现图表绘制和展示

    在Android平台上,实现图表的绘制和展示是一项常见的需求,特别是在数据可视化和分析的应用中。本文主要探讨了四种方法,它们都是在Android环境中创建图表的有效途径。 首先,我们可以使用Google图表API来实现图表...

    Android XY图表.rar

    在Android开发中,XY图表是一种常见的数据可视化工具,它允许开发者以图形化的方式展示两个轴上的数据关系。这种图表类型通常用于科学计算、数据分析、金融图表等场景,可以帮助用户直观理解复杂的数据信息。本资源...

    android 绘制各种图表的开源引擎achartengine 7.0

    `achartengine-0[1].7.0.jar`是AChartEngine库的二进制文件,包含了库的所有功能,开发者可以直接将其导入到Android项目中使用。而`achartengine-0[1].7.0-demo-source.zip`则包含了示例代码,通过这些代码可以快速...

    Android 绘制 散点图

    在Android开发中,绘制图形是常见且重要的任务之一,尤其在数据可视化或创建自定义UI时。本教程将深入探讨如何使用Android的核心组件——Canvas、Paint来绘制散点图。散点图是一种用点的位置来表示数据分布的图表,...

Global site tag (gtag.js) - Google Analytics