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(六)--换一种思考方式,水平条形图的实现过程 一.基本实现 我们之前实现了条形图,现在来看下水平条形图是怎么实现的,说白了就是横起来,看下效果: 说起 ...
随机推荐
- svn排除不想要的目录上传的实践技巧
使用SVN时,经常会遇到,有些目录,上传到SVN上,不想最持同步中,尤其像.net中的bin.obj目录,在网上找了很多资料,都是说setting-->General-->Subversi ...
- Flask框架学习笔记(API接口管理平台 V1.0)
今天博主终于完成了API接口管理平台,最后差的就是数据库的维护, 博主这里介绍下平台的设计原理,首先基于python,利用flask的web框架+bootstrap前端框架完成,先阶段完成了前台展示页 ...
- 用C#编写游戏脚本
大学宿舍玩游戏的时候,为了简化重复的键鼠动作,有学习过按键精灵和TC脚本开发工具,并做了一些小脚本,基本达到了当时的需求.不知不觉,已经毕业了3年了,无聊之余又玩起了游戏,对于一些无趣的重复行为,于是 ...
- Java垃圾收集器之--Garbage-First Collector
简介 Garbage-First(G1)垃圾收集器全面支持JDK7 Upate 4及后续版本.G1收集器是一个服务器形式(server-style)的垃圾收集器,主要用于内存大.多处理器的 ...
- 【LeetCode】6. ZigZag Conversion 锯齿形转换
题目: 思路: 以图为例:s={'A','B','C','D','E','F','G','H'.....} 1.先不考虑中间元素F.G.H.N...,每一行前后元素在数组中对应下标相差size=2*n ...
- Android学习笔记之AndroidManifest.xml文件解析
一.关于AndroidManifest.xml AndroidManifest.xml 是每个android程序中必须的文件.它位于整个项目的根目录,描述了package中暴露的组件(activiti ...
- 转载:SMS软件FESWMS模型使用体会
自学了SMS-FESWMS几个月,从其原理到具体应用都已经比较熟悉.感觉这个软件还是有许多不足,这也是需要进一步提高和改进的地方.下面谈谈自己的一些感受和体会. 首先,对一些比较简单的模型,软件的计算 ...
- zedboard如何从PL端控制DDR读写(三)——AXI-FULL总线调试
之前的项目和培训中,都只用到了AXI-Lite或者AXI-Stream,对于AXI-FULL知之甚少,主要是每次一看到那么多接口信号就望而却步了. 现在为了调试DDR,痛下决心要把AXI-FULL弄懂 ...
- jQuery 遍历 - map() 方法
定义和用法 map() 把每个元素通过函数传递到当前匹配集合中,生成包含返回值的新的 jQuery 对象. 例子1: 构建表单中所有值的列表: <p><b>value为: &l ...
- Java 并发编程实战 摘要
第一部分小结 并发技巧清单: 可变状态是至关重要的(It's the mutable state ,stupid). 所有的并发问题结为如何协调对并发状态的访问,可变状态越少,就越容易确保线程安全性. ...