本文演示在Android平台中绘制和展示图表示例,本示例是基于RChart 2实现的。

在一个系统中经常要用到图表统计数据,在WEB开发中图表绘制是一件简单的事情,因为有比较多的开源方案。但在Android中开源方案并不多。

Android中绘制图表解决方案:

1) 使用google 图表 api   

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

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

4) 使用RChart 2库实现。

第一种解决方案是使用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事件中如下调用即可:
publicvoid 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); }

由于需要连接网络,需要在配置文件中加入访问网络权限:

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

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

缺点:必须连网才能访问API,生成图形。

示例效果如下图:

第二种解决方案是使用Achartengine库。

下载地址在:http://code.google.com/p/achartengine/downloads/list ,将其JAR下载后,放到工程的lib包库中,结构如下图:

代码如下显示:

publicclassAChartExample{

publicIntentexecute(Contextcontext){
int[]colors=newint[]{Color.RED,Color.YELLOW,Color.BLUE};
DefaultRendererrenderer=buildCategoryRenderer(colors);
CategorySeriescategorySeries=newCategorySeries("VehiclesChart");
categorySeries.add("cars",30);
categorySeries.add("trucks",20);
categorySeries.add("bikes",60);
returnChartFactory.getPieChartIntent(context,categorySeries,renderer);
}

protectedDefaultRendererbuildCategoryRenderer(int[]colors){
DefaultRendererrenderer=newDefaultRenderer();
for(intcolor:colors){
SimpleSeriesRendererr=newSimpleSeriesRenderer();
r.setColor(color);
renderer.addSeriesRenderer(r);
}
returnrenderer;
}
}

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

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

startActivity(achartIntent);   

最后生成的效果如下图:

示例代码下载: /Files/hanyonglu/AndroidFile/achartengine-0.7.0-demo-source.rar

第三种解决方案是使用chartdroid,要注意的是。

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

要使用Chartdroid,必须要使用content provider,代码如下:

publicclassChartDroidDataProviderextendsContentProvider{

staticfinalStringAUTHORITY="com.xyz.contentprovider.chardroid";
@Override
publicStringgetType(Uriuri){
return"vnd.android.cursor.dir/vnd.com.googlecode.chartdroid.graphable";
}
publicstaticfinalUriPROVIDER_URI=newUri.Builder().scheme(
ContentResolver.SCHEME_CONTENT).authority(AUTHORITY).build();
@Override
publicCursorquery(Uriuri,String[]projection,Stringselection,
String[]selectionArgs,StringsortOrder){

//获得实际数据
MatrixCursorc=newMatrixCursor(newString[]{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);

returnc;
}

}


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

接下来,代码如下:

IntentchartDroidIntent=newIntent(Intent.ACTION_VIEW,

ChartDroidDataProvider.PROVIDER_URI);
chartDroidIntent.putExtra(Intent.EXTRA_TITLE,"Chartdroid");
chartDroidIntent
.addCategory("com.googlecode.chartdroid.intent.category.PIE_CHART");

startActivity(chartDroidIntent);

注意,这里要使用charDroidIntent的addCategory方法去指定图表的类型,即   com.googlecode.chartdroid.intent.category.PIE_CHART。下图是运行效果:

第四种解决方案是使用RChart 2库,关于RChart 2信息访问:http://www.java4less.com/charts/chart.php

下面是一些示例实现效果:

示例下载地址: /Files/hanyonglu/AndroidFile/MyAndroidChart.rar

转载 http://www.cnblogs.com/hanyonglu/archive/2012/02/20/2360334.html谢谢。



已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐
  • —软件人才免语言低担保 赴美带薪读研!—



更多相关文章

  1. Android入门篇三:使用静态变量在Activity之间传递数据
  2. Android设计原则
  3. Android(安卓)ExoPlayer播放音视频的使用指南
  4. android开机自启动APP及使用adb命令测试
  5. Android上使用ksoap2支持Web Service服务调用实例
  6. Android(安卓)笔记 01
  7. 箭头函数的基础使用
  8. NPM 和webpack 的基础使用
  9. Python list sort方法的具体使用

随机推荐

  1. 图解IntelliJ IDEA 13版本对Android(安卓
  2. Android(安卓)wifi信号强度与图标对应关
  3. android自定义属性
  4. [Android] Android下实现电话号码归属地
  5. Android(安卓)IPC(一)
  6. Android(安卓)*#06#显示的更改
  7. 开发android,我们需要哪些技能基础。
  8. Intent的Action实现应用程序之间的切换
  9. GestureOverlayView属性
  10. iphone/android比较学习之──图片、文件