Android图表
最近需要用到Android里面的折现图,因此在这方面也去做了一些调研。总体发现Android对报表的支持还是非常好的。总体上去研究了两个实现方案,一个是利用Android提供的的AChartEngine来实现,然后在GitHub上还发现了另一个工程,直接手动利用Canvas手动实现了折线图的绘制,看完还是很有启发的,就当作是其他jar包的源码实现看吧。
1. AChartEngine
搜索到Android上各个报表控件的支持情况:
- Java4Less (http://java4less.com/charts/chart.php?info=android)
- aChartEngine (http://code.google.com/p/achartengine/)
- aiCharts (http://www.artfulbits.com/Android/aiCharts.aspx)主要有以上几种。各个报表的优缺点:
java4Less统计的图的形状好看,但是如果屏幕分辨率很小的时候,不能进行缩放。
aChartEngine这个东西api简单,支持的东西也太少,但是可以进行缩放。
aiCharts 这个东东做的比较好,可是要收费。而我的需求中一定要能够缩放,所以最后选择了AChartEngine
我这里所需要的是TimeChart和LineChart,使用后的总结是,API极简单,而且图标性能表现不错,可定制性也还不错。
(1)LineChart
一些图形API:
XYMultipleSeriesRenderer内一些常用的API:
double getXAxisMax();//获取X轴上的标度值最大值
setXAxisMin(double min);//设置X轴上标度最小值
Int getMarginsColor();//获取空白处颜色
isZoomXEnabled();//获取在X轴上是否可以缩放
setGridColor(int color);//设置网格颜色
setMarginsColor(int color);//设置空白处颜色
setPointSize(float size);//设置点大小
render.setDisplayChartValues(true) ;//显示折线上点的数值
XYSeriesRenderer.setLineWidth(float lineWidth);//设置 线的粗细
renderer.setPanEnabled(false, false);//禁止报表的拖动
renderer.setMargins(new int[]{40,50,35,50});//上,左,下,右 控制图的边距
renderer.setLegendHeight(115);//控制图例的高度

源码地址:http://yunpan.cn/QDhVFZknkeCsm
(2)TimeChart
TimeChart继承与LineChart,所以在大部分报表的控制接口上是一致的,这个例子里面实现了动态刷新,效果还是不错的。

/*
* 参数依次为:图形的标题,X轴标题,Y轴标题,轴背景颜色,轴坐标颜色
* */
public void setRandererBasicProperty(String title,String xTitle,String yTitle,int axeColor,int labelColor){
renderer.setChartTitle(title);
renderer.setXTitle(xTitle);
renderer.setYTitle(yTitle);
renderer.setYAxisMax(10);
renderer.setYAxisMin(-4);
//设置各种颜色
renderer.setAxesColor(axeColor);
renderer.setLabelsColor(labelColor);
renderer.setMarginsColor(Color.WHITE);//空白颜色(底色)
renderer.setGridColor(Color.GRAY);//网格颜色
//设置文字的属性
renderer.setXLabels(5);
renderer.setYLabels(5);
renderer.setXLabelsAlign(Align.RIGHT);
renderer.setYLabelsAlign(Align.LEFT);
renderer.setAxisTitleTextSize(16);
renderer.setChartTitleTextSize(20);
renderer.setLabelsTextSize(15);
renderer.setLegendTextSize(15);
//设置图形位置,缩放,形态
renderer.setPointSize(2);
renderer.setMargins(new int[] { 35, 35, 0, 20 });//留白 上,左,下,右
renderer.setLegendHeight(41);//设置底部文字的高度
renderer.setShowGrid(true);
renderer.setZoomEnabled(true, false);
}
源码地址:http://yunpan.cn/QDhVxE2DeIbMB
2.直接使用Canvas绘图手动绘制的折线图报表。
源码地址:http://yunpan.cn/QDhVaSfUVVD22
Android图表的更多相关文章
- Android图表类库:WilliamChart
WilliamChart是基于Views的Android图表类库,帮助开发者在Android应用中实现折线图.柱状图和堆叠柱状图.数值发生变化时图表也会以动画的效果发生变化. At the momen ...
- Android图表库MPAndroidChart(十四)——在ListView种使用相同的图表
Android图表库MPAndroidChart(十四)--在ListView种使用相同的图表 各位好久不见,最近挺忙的,所有博客更新的比较少,这里今天说个比较简单的图表,那就是在ListView中使 ...
- Android图表库MPAndroidChart(十三)——简约的底部柱状图
Android图表库MPAndroidChart(十三)--简约的底部柱状图 我们继续上一讲,今天还是说下柱状图,这个图的话应该是用的比较多的,所有拿出来溜溜,先看下效果 我们还是来看下基本实现 一. ...
- Android图表库MPAndroidChart(十二)——来点不一样的,正负堆叠条形图
Android图表库MPAndroidChart(十二)--来点不一样的,正负堆叠条形图 接上篇,今天要说的,和上篇的类似,只是方向是有相反的两面,我们先看下效果 实际上这样就导致了我们的代码是比较类 ...
- Android图表库MPAndroidChart(十一)——多层级的堆叠条形图
Android图表库MPAndroidChart(十一)--多层级的堆叠条形图 事实上这个也是条形图的一种扩展,我们看下效果就知道了 是吧,他一般满足的需求就是同类数据比较了,不过目前我还真没看过哪个 ...
- Android图表库MPAndroidChart(十)——散点图的孪生兄弟气泡图
Android图表库MPAndroidChart(十)--散点图的孪生兄弟气泡图 起泡图和散点图如出一辙,但是个人认为要比散点图好看一点,我们来看下实际的演示效果 这个和散点图的实现很相似,我们一起来 ...
- Android图表库MPAndroidChart(九)——神神秘秘的散点图
Android图表库MPAndroidChart(九)--神神秘秘的散点图 今天所的散点图可能用的人不多,但是也算是图表界的一股清流,我们来看下实际的效果 添加的数据有点少,但是足以表示散点图了,我们 ...
- Android图表库MPAndroidChart(八)——饼状图的扩展:折线饼状图
Android图表库MPAndroidChart(八)--饼状图的扩展:折线饼状图 我们接着上文,饼状图的扩展,增加折现的说明,来看下我们要实现的效果 因为之前对MPAndroidChart的熟悉,所 ...
- Android图表库MPAndroidChart(七)—饼状图可以再简单一点
Android图表库MPAndroidChart(七)-饼状图可以再简单一点 接上文,今天实现的是用的很多的,作用在统计上的饼状图,我们看下今天的效果 这个效果,我们实现,和之前一样的套路,我先来说下 ...
- Android图表库MPAndroidChart(六)——换一种思考方式,水平条形图的实现过程
Android图表库MPAndroidChart(六)--换一种思考方式,水平条形图的实现过程 一.基本实现 我们之前实现了条形图,现在来看下水平条形图是怎么实现的,说白了就是横起来,看下效果: 说起 ...
随机推荐
- 用imageNamed加载图片产生的问题
通常我们会用imageNamed:来加载图片,但是用这个API有个问题,就是它会缓存加载的image. 因此,对于那些被重用的图片,这个API很高效.但是对于那些使用很少的图片,用这个就很耗内存,那怎 ...
- WEB 安全之 SQL注入 < 二 > 暴库
SQL注入是一个比较"古老"的话题,虽然现在存在这种漏洞的站点比较少了,我们还是有必要了解一下它的危害,及其常用的手段,知己知彼方能百战不殆.进攻与防守相当于矛和盾的关系,我们如果 ...
- MongoDB基本操作命令
由于工作需要,笔者这两天使用了一下MongoDB.真的很不习惯!但是确实好用,命令比mysql和sqlserver简单很多.在这里整理一些MongoDB的基本操作命令分享出来. 客户端的安装就不说了, ...
- Orchard官方文档翻译(十) 管理Widgets
原文地址:http://docs.orchardproject.net/Documentation/Managing-widgets 想要查看文档目录请用力点击这里 最近想要学习了解orchard,但 ...
- 【LeetCode】6. ZigZag Conversion 锯齿形转换
题目: 思路: 以图为例:s={'A','B','C','D','E','F','G','H'.....} 1.先不考虑中间元素F.G.H.N...,每一行前后元素在数组中对应下标相差size=2*n ...
- 【练习】手工生成awr报告
①首先进入$ORACLE_HOME/rdbms/admin目录 [oracle@host02 ~]$ cd $ORACLE_HOME/rdbms/admin 该目录下 [oracle@host02 a ...
- HTML DOM(学习笔记二)
嗯,在HTML DOM(学习笔记一)中简单描述了一下HTML DOM 是什么,这一篇将记录下来有关HTML DOM的内容! 1:DOM节点 首先,再来看一下HTML DOM的树状结构,如下图所示: 这 ...
- sass mapsource --->gulp
详细,请戳这里 1.安装插件 npm install --save-dev gulp-sass gulp-sourcemaps gulp-autoprefixer 如果安装错误,请用sudo 权限: ...
- (笔记)angular 包含关系的controller参数父级方法
- 操作系统模仿CMD
实验一.命令解释程序的编写 专业:商软(2)班 姓名:列志华 学号:201406114254 一. 实验目的 (1)掌握命令解释程序的原理: (2)掌握简单的DOS调用方法: (3 ...