`
wb1991wb
  • 浏览: 152090 次
  • 来自: 上海
社区版块
存档分类
最新评论

Android 图表应用 解决方案

 
阅读更多

本文演示在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 

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-permission android: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包库中,结构如下图: 

代码如下显示:

 

复制代码
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; 

}

复制代码

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

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,代码如下:

复制代码
public class ChartDroidDataProvider extends ContentProvider {  

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

 

 

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

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

 

 

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

完毕。^_^

分享到:
评论
2 楼 wb1991wb 2013-04-30  
jiaoronggui 写道
不错,收藏,最近刚好用到这些,还有一个方案,就是使用webview+jquery-flat来做,最近刚好在尝试中

文章系属于转载!最近也在研究Android!希望能多多帮助!
1 楼 jiaoronggui 2013-04-30  
不错,收藏,最近刚好用到这些,还有一个方案,就是使用webview+jquery-flat来做,最近刚好在尝试中

相关推荐

    Basic4android库分析器兼智能提示文本汉化工具

    而目前有很多人只考虑眼前利益,有问题在B4A群里求问,自己解决了,或有高手帮你解答了,也没有意识要到B4A中文官网把问题和解答方案通过发帖子的形式留给今后会碰到相同问题的人员。这样做的后果是,最终形成有很多...

    工程硕士学位论文 基于Android+HTML5的移动Web项目高效开发探究

    1.2.4 Android移动Web项目开发的三种解决方案:Native, Web和Hybrid优缺陷分析 4 1.2.5国内外应用现状 6 1.2.6 研究现状总结 7 1.3研究目标与内容 7 1.3.1多窗口浏览器模式的实现机制 7 1.3.2跨域交互即缓存处理方法...

    软件系统整体设计方案.docx

    设计原则 快速响应:快速发布、快速响应业务变化 方便扩展:响应新业务无需推倒重来 稳定运行: 通过弹性伸缩和便捷的容灾恢复来保障稳定性(参考阿里云解决方案) 高效运维:提高运维效率、减少运维成本 演进规划 --...

    android调用matlab代码-Temperature-and-Vibration-Monitoring:温度和振动监测

    解决方案:将 MPU6050(用于加速度计和陀螺仪应用)和 LM35(用于温度测量)与 WeMos D1 接口,我们设计了一个用于监控工业生产过程的系统,用于温度和振动测量。 来自两个传感器的数据(即加速度计和陀螺仪的三个...

    ichartjs和示例程序

    是WEB图表展示方面的解决方案 。如果你正在开发HTML5的应用,ichartjs正好适合你。 ichartjs目前支持饼图、折线图、区域图、柱形图、条形图。ichartjs是基于Apache License 2.0协议的开源项目。 特点 跨平台: ...

    论文研究 - 基于智能手机的颈椎压力预防

    该解决方案利用了智能手机的内置3维加速度计,并提供了一个基于Android操作系统的应用程序作为概念验证,可以确定颈椎姿势并在必要时生成警报。 另外,可以以图表的形式显示姿势数据,以使用户在整个星期中都知道他...

    charting-library-examples:Charting Library与其他库,框架和数据传输的集成示例

    图表库是用于显示图表的独立解决方案。 这个免费的,可下载的库托管在您的服务器上,并连接到您的数据供稿,供您在网站或应用中使用。。 内容 安卓 TradingView集成到Android WebView中 角度5 TradingView和集成...

    Android-MVC:这个存储库包含我对 Android 上的 MVC 模式的解释

    示例应用程序显示了一些常见问题的干净解决方案: 屏幕旋转后显示刷新指示器。 只存储对象的一个​​实例,即使很多视图都使用它。 在模型更改后更新视图状态,即使很多视图使用它。 在片段、活动、视图等之间传递...

    SophisticatedSoftwareSolutions:CSE 201项目

    先进的软件解决方案-Appdex概述: ios和android应用程序存储库,用户共同成长和管理存储库。特征: 拥有应用程序列表应用程序包含与制造者,成本等相关的信息。 列表可以按应用程序中包含的各种信息进行排序可以通过...

    OfficeSuite Premium 10.4.18597.apk

    OfficeSuite使您可以使用Android上提供的功能最丰富的移动办公解决方案轻松查看,编辑和创建Word,Excel和PowerPoint文档,转换为PDF以及管理文件。 由顶级制造商预装,包括索尼,亚马逊,宏基,阿尔卡特,东芝,...

    OfficeSuite_Premium_v10.13.24972.apk

    OfficeSuite使您可以使用Android上功能最丰富的移动办公解决方案轻松查看,编辑和创建Word,Excel和PowerPoint文档,转换为PDF以及管理文件。 由索尼,亚马逊,宏cer,阿尔卡特,东芝,夏普,YotaPhone,京瓷等顶级...

    O2OA开源OA系统-其他

    O2OA是基于J2EE架构,集成移动办公、智能办公,支持私有化部署,自适应负载能力的,能够很大程度上节约企业软件开发成本的基于AGPL协议开放源代码的企业信息化系统需求定制开发解决方案,对外提供专业的开发运维等...

    java开源包1

    JSTUN 是另外一个用来解决穿越 NAT 进行通讯的 Java 解决方案,是 STUN 协议的 Java实现。 在浏览器上运行Java程序 Doppio DoppioVM 是一个可在浏览器上直接运行 Java 项目的系统,无需任何插件支持。目前它包含一...

    java开源包11

    JSTUN 是另外一个用来解决穿越 NAT 进行通讯的 Java 解决方案,是 STUN 协议的 Java实现。 在浏览器上运行Java程序 Doppio DoppioVM 是一个可在浏览器上直接运行 Java 项目的系统,无需任何插件支持。目前它包含一...

    java开源包2

    JSTUN 是另外一个用来解决穿越 NAT 进行通讯的 Java 解决方案,是 STUN 协议的 Java实现。 在浏览器上运行Java程序 Doppio DoppioVM 是一个可在浏览器上直接运行 Java 项目的系统,无需任何插件支持。目前它包含一...

    java开源包3

    JSTUN 是另外一个用来解决穿越 NAT 进行通讯的 Java 解决方案,是 STUN 协议的 Java实现。 在浏览器上运行Java程序 Doppio DoppioVM 是一个可在浏览器上直接运行 Java 项目的系统,无需任何插件支持。目前它包含一...

    java开源包6

    JSTUN 是另外一个用来解决穿越 NAT 进行通讯的 Java 解决方案,是 STUN 协议的 Java实现。 在浏览器上运行Java程序 Doppio DoppioVM 是一个可在浏览器上直接运行 Java 项目的系统,无需任何插件支持。目前它包含一...

    java开源包5

    JSTUN 是另外一个用来解决穿越 NAT 进行通讯的 Java 解决方案,是 STUN 协议的 Java实现。 在浏览器上运行Java程序 Doppio DoppioVM 是一个可在浏览器上直接运行 Java 项目的系统,无需任何插件支持。目前它包含一...

    java开源包10

    JSTUN 是另外一个用来解决穿越 NAT 进行通讯的 Java 解决方案,是 STUN 协议的 Java实现。 在浏览器上运行Java程序 Doppio DoppioVM 是一个可在浏览器上直接运行 Java 项目的系统,无需任何插件支持。目前它包含一...

    java开源包4

    JSTUN 是另外一个用来解决穿越 NAT 进行通讯的 Java 解决方案,是 STUN 协议的 Java实现。 在浏览器上运行Java程序 Doppio DoppioVM 是一个可在浏览器上直接运行 Java 项目的系统,无需任何插件支持。目前它包含一...

Global site tag (gtag.js) - Google Analytics