本文演示在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事件中如下调用即可: 复制代码 @Override

publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
WebViewgoogleChartView=newWebView(this);
setContentView(googleChartView);
StringmUrl="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,生成图形。

示例效果如下图:

android 图形展示

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

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

android 图形展示

代码如下显示:

复制代码 public classAChartExample{

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);   

最后生成的效果如下图:

android 图形展示

示例代码下载:/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,代码如下:

复制代码 public classChartDroidDataProvider extendsContentProvider{

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。下图是运行效果:

android 图形展示

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

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

android 图形展示android 图形展示

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

最后,希望转载的朋友能够尊重作者的劳动成果,加上转载地址:http://www.cnblogs.com/hanyonglu/archive/2012/02/20/2360334.html谢谢。

更多相关文章

  1. Android ApiDemos示例解析(91):OS->SMS Messaging
  2. Android Studio GitHub 提交项目代码
  3. 第一行代码 Android读书笔记(一)
  4. 【初用Android Studio】快捷键之代码提示
  5. Android与JS代码交互
  6. 将Eclipse代码导入到Android Studio的两种方式
  7. Android文件读写实例代码

随机推荐

  1. 通过XML数据岛和Dom制作通讯录的代码实例
  2. xml解析工具包 Xstream的示例代码详解
  3. 详细介绍使用XMLHTTP发送超长XML表单数据
  4. XML创建可排序、分页的数据显示页面
  5. 详细介绍Xml数据解析的三种方式的示例代
  6. 教你如何快速通过XSL转换XML文件的详解
  7. 详细告诉你为何XML对Web服务很重要
  8. 关于XML数据库中几个容易混淆的概念详解
  9. 详细介绍xml中的空格之完全解说
  10. HTML中的XML数据岛记录编辑与添加代码实