Android实现图表绘制和展示

标签: android 图表 展示 | 发表时间:2015-01-17 15:24 | 作者:KT.G
出处:http://www.iteye.com

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

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

 

 

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

 

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



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


ITeye推荐



相关 [android 图表 展示] 推荐:

Android实现图表绘制和展示

- - 移动开发 - ITeye博客
本文演示在Android平台中绘制和展示图表示例,本示例是基于RChart 2实现的. 在一个系统中经常要用到图表统计数据,在WEB开发中图表绘制是一件简单的事情,因为有比较多的开源方案. 但在Android中开源方案并不多. Android中绘制图表解决方案: . 1) 使用google 图表 api    .

Computex 2011:展示可在Windows 7底下运作Android的Blue Stacks

- 洞箫 - Engadget 中国版
在今年Computex的AMD记者会上,Blue Stacks展示了基于x86架构处理器的Android接口,这套系统有趣的地方在于它并非采用双引导,而是真正在x86架构下的Windows 7提供Android的界面模拟,Android界面就像是一个全屏幕的软件一样,只要点选就能开启,并且能让Android的app在x86的环境下运作.

Intel 和 Android 关系升华,Andy Rubin 展示基于 Medfield 的手机

- 小趴 八足趴 八足 ramener - 谷安——谷奥Android专题站
12 日,Intel 宣布了他们新系列的基于 Atom 的 E6xx 处理器,该系列处理器将正式支持 Android 2.3. 13 日 (Google 的)Andy Rubin 在 IDF 上与 Intel 的 CEO Paul Otellini 进行了接洽,并展示了一个基于 Medfield 的 Android Gingerbread 手机(这似乎是今年初发现的 Aava 手机),当然更重要的实际上是新产品有两大公司的承诺,他们将共同努力.

简单的 Android 系统主要版本对比图表

- 猪头小队长 - 谷安——谷奥Android专题站
这里有一个来自 tecca 网站的简单的 Android 系统主要版本对比图表,对 Android 版本不熟悉读者可以看看,这个图表很形象,除了每个重要版本的代表性图标和名称而外,还有一些版本特点介绍. 当然它是简介性质的,并不是说明书所以并没有功能说明什么的. 另有该图表的 PDF 版本,可 [点此下载],感兴趣的 Android 粉丝们可以收藏一下.

谷安: Andorid 的故事:完整的 Android 历史信息图表

- davidjs - 谷奥聚合——谷奥主站+谷安 aggregator
前段时间我们看到过一个 Android 主要版本图表,老实说那个确实简单了一点,我们无法从中看到多少 Android 的演进过程. 不过这次来自 [X]CUBELABS 的设计还真是不错,通过这个新的 Android 历史信息图表(The Android Story)你可以对 Android 的演化过程一目了然.

Google Android手机操作系统发展历程[信息图表]

- We_Get - 中文互联网数据研究资讯中心
2003年10月,Android公司在加州Palo Alto市成立,联合创始人为安迪-鲁宾、Rich Miner、Nick Sears与Chris White. 2005年8月,谷歌收购Android公司. 2007年11月5日,开放设备联盟(OHA)成立,12日Beta版的Android开发包发布.

[信息图表]iPhone和Android的系统生命周期对比

- China Moon - cnBeta.COM
相比iOS系统轻松愉悦的开发过程,Android遭遇开发者吐槽的机会远大于前者,这是由于Android的版本相当杂乱,不同设备对各个版本的支持度又各有不同,导致“碎片”化的结局,虽然Google已经在着力解决此事,但事实情况依旧是Android各版本在各个设备上各自为战,并且对未来的规划不清,以下这张信息图表就是描述Android和iOS的版本及其兼容性现状,相当详细值得参考:.

[数据图表]Android军团超级黑马亚马逊平板电脑Amazon Kindle Fire,逼近三星Galaxy Tab

- - TechFrom科技源
TechFrom科技源 1.28日,国外创业公司 Flurry ,发布的数据图表研究报告,亚马逊平板电脑Amazon Kindle Fire 成为Android军团中最亮的超级黑马,市场份额直逼 三星公司的 Galaxy Tab. 在所有Android平板电脑中,使用程度分别占据 36%. 另外,剩下的Android 平板电脑使用情况分别是,华硕平板电脑 7%,宏基 7%,摩托罗拉才 4%.

Android 遥控车

- CasparZ - LinuxTOY
您确定您真的会用 Android 手机玩赛车. 16 岁的法国学生 Jonathan Rico 使用 Android 手机通过蓝牙实现了对改装玩具汽车的遥控. 操控的方式和那些标榜的智能手机游戏一样,使用重力感应,差别是这次控制的是现实世界中的遥控汽车. 收藏到 del.icio.us |.

Android免费?毛

- Ruby - FeedzShare
来自: 36氪 - FeedzShare  . 发布时间:2011年08月17日,  已有 2 人推荐. 微软CEO Steve Ballmer在预测竞争对手产品时通常口无遮拦. 比如他去年抨击Google的Android战略时,很多人都不屑一顾. 接着Android蚕食了微软的地盘,后来又开始侵犯苹果的地盘.