【IT168技术】在日常的统计中,经常要用图表来给用户恰当的数据体验,比如用饼状图,柱型图等。在传统的web中,有比较多的开源的这方面的解决方案。本文将简单介绍如何在Android中,如何使用开源工具库来展示图表。

在Android中,有三种解决方案,分别是:

1) 使用google 图表 api

下面分别进行介绍:

使用google 图表api

第一种方法是使用google的图表API。可以到如下这个地址去申请使用google 图表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事件中如下调用即可:

@Overridepublicvoid onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

WebView googleChartView=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);

}

因为要连接网络,所以要在配置文件中允许使用网络,在AndroidManifest.xml中如下配置:

最后效果如下图:

,但这种方案有个缺点,就是必须要联上网络,才能访问其API,生成图形。

2) 使用Achartengine库

第二种解决方案是使用Achartengine库,下载地址在:

,将其JAR下载后,放到工程的lib包库中,结构如下图:

代码如下:

publicclass AChartExample {publicIntentexecute(Context context) {int[] colors=newint[] { Color.RED, Color.YELLOW, Color.BLUE };

DefaultRenderer renderer=buildCategoryRenderer(colors);

CategorySeries categorySeries=newCategorySeries("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=newDefaultRenderer();for(intcolor : colors) {

SimpleSeriesRenderer r=newSimpleSeriesRenderer();

r.setColor(color);

renderer.addSeriesRenderer(r);

}

return renderer;

}

}

在上面的代码中,首先将初始化了colors数组,这里指定了饼图的三种颜色,然后在buildCategoryRenderer方法中,使用SimpleSeriesRenderer类实例来进行初始化,分别设置了饼图要显示的系列区域的颜色。而我们将要显示的数据及标签内容都放到categorySeries中进行显示。最后调用ChartFactory的getPieChartIntent方法,传入categorySeries和renderer即可。

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

Intent achartIntent = new AChartExample().execute(this);

startActivity(achartIntent);

最后生成的效果如下图:

3) 使用Chartdroid

第三种方法是使用chartdroid,要注意的是,如果使用这种方法的话,必须先下载并安装Chardroid这个APK,下载地址在:http://code.google.com/p/chartdroid/downloads/list,下载并将其APK包进行安装。

要使用Chartdroid,必须要使用content provider,我们编写代码如下:

publicclass ChartDroidDataProvider extends ContentProvider {

static finalStringAUTHORITY="com.xyz.contentprovider.chardroid";

@OverridepublicStringgetType(Uri uri) {

return"vnd.android.cursor.dir/vnd.com.googlecode.chartdroid.graphable";

}publicstatic final Uri PROVIDER_URI=newUri.Builder().scheme(

ContentResolver.SCHEME_CONTENT).authority(AUTHORITY).build();

@OverridepublicCursor query(Uri uri,String[] projection,Stringselection,String[] selectionArgs,StringsortOrder) {//获得实际数据

MatrixCursor c=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);

return c;

}

}

在上面的代码中,我们使用了MatrixCursor生成了相关的数据:30,10,60。关于ChartDroid的详细ContentProvider信息,请参考http://code.google.com/p/chartdroid/wiki/InterfaceSpecification。接下来,我们看使用的代码,如下:

Intent chartDroidIntent=newIntent(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。下图是运行效果:

总结:

本文讲解了目前三种在Android上生成统计图的解决方案,三种方案各有优劣,请根据实际情况使用。

android开发比例图表,Android开发中如何使用绘制图表相关推荐

  1. React中使用echarts绘制图表

    我们都知道,Echarts图表功能非常强大,使用起来也很方便,我们的项目中就用到了Echarts,现在笔者就带大家看看怎么在react中使用Echarts. 我们要想在react项目中高效使用echa ...

  2. android 标注 比例换算,android APP UI设计图标注、换算

    作为一名 Androider,能遇到一个优雅的设计屎也得靠运气.唉,说多了都是泪啊. 狼哥特地贴上一篇关于UI设计的文章,你可以拿去BS你们的设计屎了. -------------- 众所周知,对追求 ...

  3. android 标注 比例换算,Android APP界面标注、尺寸换算和APP标注工具

    众所周知,对追求高还原的移动APP产品来说,移动APP设计稿上的精确尺寸标记是必不可少的的一步.很多设计师都抱怨APP程序员做的效果太差,跟设计图相差太多,你有没有提供最规范的Android APP界 ...

  4. [codeigniter]CI中使用pChart绘制图表,已测通过

    因为一个codeigniter开发的项目上要用到图表.FusionChart是flash技术,在某些情况下可能造成无法使用(如ipad).因此不禁想起了之前用Pchart做的图表项目. 但是毕竟是在C ...

  5. android 按比例缩放,Android postScale不按比例缩放

    我已经有了一个Bitmaps的负载,我现在试图根据屏幕大小来缩放,我这样做的方式是将当前设备屏幕大小除以我的测试手机大小,因为所有图像是根据该屏幕制作的.Android postScale不按比例缩放 ...

  6. android 视频比例,关于Android用Ijkplayer拉流的视频比例问题

    在Demo中集成Ijkplayer尝试拉取网络视频流进行播放时,发现拉取后出现视频无法全部在屏幕中播放,显示效果如下(测试地址为香港卫视的rtmp视频源:rtmp://live.hkstv.hk.lx ...

  7. pandas中强大的绘制图表功能——DataFrame.hist(),以及统计分析函数——DataFrame.describe()

    pandas中具有很多很强大的图表绘制功能,今天介绍一个简单好用的绘制数据框DataFrame中某一列数据分布直方图的函数--DataFrame.hist(),顺便介绍一个统计分析函数DataFram ...

  8. python中使用matplotlib绘制图表

    Pyplot 是 Matplotlib 的子库,提供了和 MATLAB 类似的绘图 API import matplotlib.pyplot as plt fig = plt.figure() ax ...

  9. Python自动化办公:openpyxl绘制图表

    在后台回复[阅读书籍] 即可获取python相关电子书~ Hi,我是山月. 之前给大家分享了openpyxl的基础和进阶教程: Python自动化办公:openpyxl教程(基础) Python自动化 ...

最新文章

  1. AI一分钟 | 北京发放自动驾驶首批牌照,百度获准测试;亿航美国分公司申请破产,债务高达数百万美元
  2. 【Windows10nbsp;IoT开发系列】“Hello,World!”指导
  3. 相移波束形成算法的MATLAB仿真
  4. tensorflow: Could not load dynamic library ‘cudart64_101.dll‘ 解决办法
  5. DeepLearnign:windows tensorflow-cmake编译
  6. at java.net.urlclassloader.findclass_如何使用URLClassLoader加载* .class文件?
  7. ubuntu 下安装五笔输入法
  8. 21张GIF动图让你秒懂数学原理
  9. ArrayList单列集合的简单使用常见方法
  10. linux脚本done报错,linux – 如何在shell脚本中处理错误/异常?
  11. centos8 安装docker_利用Jenkins和Docker实现小公司的自动部署
  12. 【每日算法Day 72】谷歌面试题:又双叒叕是位运算,最详细的自动机推导过程...
  13. php7 $GLOBALS['HTTP_RAW_POST_DATA']接收不到值
  14. 关于苹果审核团队内部消息以及一些过审小方法
  15. 台达DVP50MC11T与威纶触摸屏ModbusTCP通信
  16. 微信小程序上拉触底事件
  17. 孤军奋战的百合网 下一城会在哪?
  18. PCB电路板EN 45545-2:2020最新标准的测试要求
  19. doom3 代码结构
  20. layui上传图片需携带额外参数

热门文章

  1. oracle call 存储过程 带out_详解oracle数据库存储过程调试方法
  2. python从入门到精通 明日科技 电子书-【明日科技+python】百度云下载 - 云盘精灵...
  3. python免费网课-Python网课推荐——免费学习Python编程
  4. python可以自学编程吗-编程学习第一步,让你20天搞定Python编程
  5. python电脑配置-Python--获取电脑配置信息--设计代码
  6. python编程入门与案例详解-python编程入门知识练习
  7. 语音识别算法阅读之CTC
  8. 微软认知语音服务 语音识别
  9. s7300plc串口通信_s7-300串口通讯.ppt
  10. 数据库软删除php,应用 Laravel 的软删除你需要注意的几点