android开发比例图表,Android开发中如何使用绘制图表
【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开发中如何使用绘制图表相关推荐
- React中使用echarts绘制图表
我们都知道,Echarts图表功能非常强大,使用起来也很方便,我们的项目中就用到了Echarts,现在笔者就带大家看看怎么在react中使用Echarts. 我们要想在react项目中高效使用echa ...
- android 标注 比例换算,android APP UI设计图标注、换算
作为一名 Androider,能遇到一个优雅的设计屎也得靠运气.唉,说多了都是泪啊. 狼哥特地贴上一篇关于UI设计的文章,你可以拿去BS你们的设计屎了. -------------- 众所周知,对追求 ...
- android 标注 比例换算,Android APP界面标注、尺寸换算和APP标注工具
众所周知,对追求高还原的移动APP产品来说,移动APP设计稿上的精确尺寸标记是必不可少的的一步.很多设计师都抱怨APP程序员做的效果太差,跟设计图相差太多,你有没有提供最规范的Android APP界 ...
- [codeigniter]CI中使用pChart绘制图表,已测通过
因为一个codeigniter开发的项目上要用到图表.FusionChart是flash技术,在某些情况下可能造成无法使用(如ipad).因此不禁想起了之前用Pchart做的图表项目. 但是毕竟是在C ...
- android 按比例缩放,Android postScale不按比例缩放
我已经有了一个Bitmaps的负载,我现在试图根据屏幕大小来缩放,我这样做的方式是将当前设备屏幕大小除以我的测试手机大小,因为所有图像是根据该屏幕制作的.Android postScale不按比例缩放 ...
- android 视频比例,关于Android用Ijkplayer拉流的视频比例问题
在Demo中集成Ijkplayer尝试拉取网络视频流进行播放时,发现拉取后出现视频无法全部在屏幕中播放,显示效果如下(测试地址为香港卫视的rtmp视频源:rtmp://live.hkstv.hk.lx ...
- pandas中强大的绘制图表功能——DataFrame.hist(),以及统计分析函数——DataFrame.describe()
pandas中具有很多很强大的图表绘制功能,今天介绍一个简单好用的绘制数据框DataFrame中某一列数据分布直方图的函数--DataFrame.hist(),顺便介绍一个统计分析函数DataFram ...
- python中使用matplotlib绘制图表
Pyplot 是 Matplotlib 的子库,提供了和 MATLAB 类似的绘图 API import matplotlib.pyplot as plt fig = plt.figure() ax ...
- Python自动化办公:openpyxl绘制图表
在后台回复[阅读书籍] 即可获取python相关电子书~ Hi,我是山月. 之前给大家分享了openpyxl的基础和进阶教程: Python自动化办公:openpyxl教程(基础) Python自动化 ...
最新文章
- AI一分钟 | 北京发放自动驾驶首批牌照,百度获准测试;亿航美国分公司申请破产,债务高达数百万美元
- 【Windows10nbsp;IoT开发系列】“Hello,World!”指导
- 相移波束形成算法的MATLAB仿真
- tensorflow: Could not load dynamic library ‘cudart64_101.dll‘ 解决办法
- DeepLearnign:windows tensorflow-cmake编译
- at java.net.urlclassloader.findclass_如何使用URLClassLoader加载* .class文件?
- ubuntu 下安装五笔输入法
- 21张GIF动图让你秒懂数学原理
- ArrayList单列集合的简单使用常见方法
- linux脚本done报错,linux – 如何在shell脚本中处理错误/异常?
- centos8 安装docker_利用Jenkins和Docker实现小公司的自动部署
- 【每日算法Day 72】谷歌面试题:又双叒叕是位运算,最详细的自动机推导过程...
- php7 $GLOBALS['HTTP_RAW_POST_DATA']接收不到值
- 关于苹果审核团队内部消息以及一些过审小方法
- 台达DVP50MC11T与威纶触摸屏ModbusTCP通信
- 微信小程序上拉触底事件
- 孤军奋战的百合网 下一城会在哪?
- PCB电路板EN 45545-2:2020最新标准的测试要求
- doom3 代码结构
- layui上传图片需携带额外参数
热门文章
- oracle call 存储过程 带out_详解oracle数据库存储过程调试方法
- python从入门到精通 明日科技 电子书-【明日科技+python】百度云下载 - 云盘精灵...
- python免费网课-Python网课推荐——免费学习Python编程
- python可以自学编程吗-编程学习第一步,让你20天搞定Python编程
- python电脑配置-Python--获取电脑配置信息--设计代码
- python编程入门与案例详解-python编程入门知识练习
- 语音识别算法阅读之CTC
- 微软认知语音服务 语音识别
- s7300plc串口通信_s7-300串口通讯.ppt
- 数据库软删除php,应用 Laravel 的软删除你需要注意的几点