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

}

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

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

最后生成的效果如下图:

第三种解决方案是使用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

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

android 图表实现,Android实现图表绘制和展示相关推荐

  1. android 清理缓存动画,Android仿微信清理内存图表动画(解决surfaceView屏幕闪烁问题)demo实例详解...

    最近接了一个项目其中有功能要实现一个清理内存,要求和微信的效果一样.于是想到用surfaceView而不是继承view.下面小编给大家解析下实现思路. surfaceView是为了解决频繁绘制动画产生 ...

  2. android电子书App、自定义图表、仿腾讯漫画App、仿淘宝优惠券、3D选择容器等源码...

    Android精选源码 仿支付宝记账本功能,饼状图:数字键盘 android一款功能完善的电子书应用源码 Android自定义图标库,使用方便,扩展性强 android 3D立体无限旋转容器源码 an ...

  3. android电子书App、自定义图表、仿腾讯漫画App、仿淘宝优惠券、3D选择容器等源码... 1

    Android精选源码 仿支付宝记账本功能,饼状图:数字键盘 android一款功能完善的电子书应用源码 Android自定义图标库,使用方便,扩展性强 android 3D立体无限旋转容器源码 an ...

  4. android电子书App、自定义图表、仿腾讯漫画App、仿淘宝优惠券、3D选择容器等源码

    Android精选源码 仿支付宝记账本功能,饼状图:数字键盘 android一款功能完善的电子书应用源码 Android自定义图标库,使用方便,扩展性强 android 3D立体无限旋转容器源码 an ...

  5. Android自定义视图二:如何绘制内容

    这个系列是老外写的,干货!翻译出来一起学习.如有不妥,不吝赐教! Android自定义视图一:扩展现有的视图,添加新的XML属性 Android自定义视图二:如何绘制内容 Android自定义视图三: ...

  6. android自定义View: 饼状图绘制(四)

    本系列自定义View全部采用kt 系统mac android studio: 4.1.3 kotlin version1.5.0 gradle: gradle-6.5-bin.zip 本篇效果: 画矩 ...

  7. 【Android开发】图形图像处理技术-绘制几何图形

    常见的几何图形包括点.线.弧.矩形等.在Android中,Canvas类提供了丰富的绘制几何图形的方法,通过这些方法,可以绘制出各种几何图形.常用的几何图形的绘制方法如下所示: 1. 画一个圆使用的是 ...

  8. 【Android 应用开发】Canvas 精准绘制文字 ( 文本边界坐标解析 | 绘图位置 )

    文章目录 一.文本边界坐标解析 二.绘图位置 一.文本边界坐标解析 在上一篇博客 [Android 应用开发]Canvas 精准绘制文字 ( 测量文本真实边界 | 将文本中心点与给定中心点对齐 ) 中 ...

  9. Android中使用Canvas和Paint绘制一个安卓机器人

    场景 在Android中画笔使用Paint类,画布使用Canvas类来表示. 绘图的基本步骤 首先编写一个继承自View的自定义View类,然后重写其onDraw方法,最后把自定义的view添加到ac ...

最新文章

  1. etcd 笔记(09)— 基于 etcd 实现微服务的注册与发现
  2. np.reshape()用法
  3. spring-boot的access日志格式修改
  4. 微型计算机只能使用机器语言,道计算机等级考试精选题全.doc
  5. RDLC系列之五 初试XAML
  6. horizon流程图_项目实施流程和规范模板(测试方向)
  7. java安全(五)java反序列化
  8. oracle dd if=/dev/zero of=/dev,【转】dd if=/dev/zero of=的含义是什么?Linux 下的dd命令使用详解...
  9. SecureCRT远程连接Ubuntu,SecureCRT开发环境配置
  10. 删除顺序表中重复元素,并按照原序输出
  11. 提升速度与精度,FedReg: 减轻灾难性遗忘加速联邦收敛(ICLR 2022)
  12. java文件编译为class文件需要键入什么命令_Day02:Java语言基础-第一个Java程序以及编译与运行机制...
  13. acad.exe 中的 0x25c70fc2 (???.arx) 处最可能的异常: 0xC0000005: 读取位置 0x0000009c 时发生访问冲突
  14. 基于STM32F030实现RFID射频识别
  15. python课程设计小结和体会_课程设计心得体会与总结
  16. 百度智能云怎样建立服务器,百度智能云服务器BCC系统盘扩容如何做
  17. 使用pyfinance进行证券收益分析!金融界的一大帮手!
  18. 程序员叫啥名字_他们的名字叫程序员
  19. 嵌入式 printf(\033[1;33m Hello World. \033[0m \n);有趣的串口之超级终端的玩法
  20. python支付宝自动支付_python 调用支付宝支付

热门文章

  1. .key+.cer 转成.jks
  2. 「5.29 开源市集参与指南」因为相信所以看见
  3. 如何在PDF文档中添加手写签名?
  4. Android——Framework之Packamanager深析
  5. Git提交报错git-upload-pack
  6. avplayer视频重复循环播放,视频重播
  7. 【Python】数理统计理论:常用统计量、经验分布函数
  8. 计算机图形学-X扫描线
  9. 港科百创 | 未磁科技完成超亿元A轮融资,获国内首张原子磁力计心磁图仪注册证...
  10. idea修改 项目代码,浏览器页面不生效 解决方案