本文演示在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 图表应用 解决方案

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

完毕。^_^

更多相关文章

  1. 如何在自己的程序中添加appWidget(附简单代码)
  2. Android开发:最全面、最易懂的Android屏幕适配解决方案
  3. Android两行代码真正杀死你的App
  4. Android代码混淆之混淆规则
  5. Edittext禁止输入回车键以及单行显示解决方案
  6. Android Handler 异步消息处理机制 《第一行代码》
  7. Android实现图表绘制和展示
  8. Android ListView异步加载图片乱序问题,原因分析及解决方案

随机推荐

  1. Android 打包问题
  2. android handler 线程机制的研究
  3. Android(安卓)Program type already pres
  4. android常用adb快捷命令一览表
  5. Android(安卓)Switch 修改文字颜色
  6. Android中的后台邮件发送
  7. Android OkHttp3工具类封装
  8. 输入键盘始终停留以及尺寸转换得到默认字
  9. Head Fisrt Android Development读书笔记
  10. Android使用RecyclerView实现瀑布流效果