Android开发进阶系列(九) 玩转AChartEngine专题(上)
来源:互联网 发布:sql replace 替换空格 编辑:程序博客网 时间:2024/05/21 12:32
AChartEngine(简称ACE)是Google的一个开源图表库(for Android)。它功能强大,支持散点图、折线图、饼图、气泡图、柱状图、短棒图、仪表图等多种图表。就像Web开发世界里许多功能强大的图表库一样,它也提供比较灵活的配置。
笔者将分享两个项目中对AChartEngine的使用代码,由简单到复杂。
最初接触AChartEngine是2013年利用业余时间开发一个网络信号监测APP的时候,用来显示手机信号和WiFi的变化曲线,如下图:
在一屏上,X轴总长代表60秒,即显示这60秒的信号强弱变化。
初始化代码如下:
private void InitRenderer() { // 1, 构造显示用渲染图 renderer = new XYMultipleSeriesRenderer(); // 2,进行显示 dataset = new XYMultipleSeriesDataset(); // 2.1, 构建数据 series1 = new XYSeries("GSM/CDMA"); series1.add(0,-60); dataset.addSeries(series1); // 3, 对点的绘制进行设置 xyRenderer = new XYSeriesRenderer(); // 3.1设置颜色 xyRenderer.setColor(Color.GREEN); // 3.2设置点的样式 xyRenderer.setPointStyle(PointStyle.POINT); // 设置显示数值 xyRenderer.setDisplayChartValues(true); //xyRenderer.setChartValuesTextSize(20); //xyRenderer.setFillPoints(true); //xyRenderer.setFillBelowLineColor(Color.LTGRAY); // 3.3, 将要绘制的点添加到坐标绘制中 renderer.addSeriesRenderer(xyRenderer); // 坐标设置 //renderer.setChartTitle( "信号强度" ); //设置x,y轴显示的排列,默认是 Align.CENTER renderer.setXLabelsAlign(Align.CENTER); renderer.setYLabelsAlign(Align.RIGHT); // 设置坐标轴,轴的颜色 renderer.setAxesColor(Color.WHITE); // 设置是否显示,坐标轴的轴,默认为 true renderer.setShowAxes(true); // 显示网格 renderer.setShowGrid(true); // 禁止拖动 renderer.setClickEnabled(false); renderer.setZoomEnabled(false); renderer.setXTitle( "时间(s)" ); renderer.setYTitle( "信号强度(dbm)" ); renderer.setXAxisMin(0); renderer.setXAxisMax(60); renderer.setYAxisMin(-100); renderer.setYAxisMax(-50); }
对于手机信号来说,数值在-100dbm到-50dbm之间,所以Y轴设置了最大最小值范围。
数据每秒更新一次,代码如下:
private void UpdateSource() { Timer timer = new Timer(); // 每隔1秒进行更新 timer.schedule(new TimerTask() { @Override public void run() { update(); } }, 0, 1000); } private static Handler hand = new Handler() { }; public void update() { hand.post(new Runnable() { @Override public void run() { int count1 = dataset.getSeries()[0].getItemCount(); int value; // Y轴范围为-100~-50 if(myListener.lastSignalStrength > 0) //断网了 { return; } if(myListener.lastSignalStrength < -100) value = -100; else if(myListener.lastSignalStrength > -50) value = -50; else value = myListener.lastSignalStrength; if(count1 > 60) { dataset.getSeries()[0].clear(); // 重新绘制 count1 = dataset.getSeries()[0].getItemCount(); } dataset.getSeries()[0].add(count1, value); mView.repaint(); } }); }
- * Android开发进阶系列(一) 序言 *
- * Android开发进阶系列(二) Tab页界面布局 *
- * Android开发进阶系列(三) 系统参数的获取和Broadcast *
- * Android开发进阶系列(四) 左移拉出Menu菜单界面布局 *
- * Android开发进阶系列(五) 连接服务器更新APK或下载资源文件 *
- * Android开发进阶系列(六) ListView的基本用法 *
- * Android开发进阶系列(七) 使用数据库 *
- * Android开发进阶系列(八) 界面美化之自定义弹出框 *
- * Android开发进阶系列(九) 玩转AChartEngine专题(上) *
- * Android开发进阶系列(十) 玩转AChartEngine专题(下) *
0 0
- Android开发进阶系列(九) 玩转AChartEngine专题(上)
- Android开发进阶系列(十) 玩转AChartEngine专题(下)
- Android报表库aChartEngine系列(介绍)
- Android报表库aChartEngine系列(介绍)
- Android开发进阶系列(一) 序言
- Android进阶专题九:电池续航
- 【转】Android 技术专题系列之九 -- 图形系统
- Android报表库aChartEngine系列(pie chart)
- Android报表库aChartEngine系列(stacked chart)
- 玩转Excel系列-Vlookup函数的使用(上)
- Cocos2d开发系列(九)
- Cocos2d开发系列(九)
- Android开发进阶系列(二) Tab页界面布局
- Android开发进阶系列(六) ListView的基本用法
- Android开发进阶系列(七) 使用数据库
- 入门Android开发--第一行代码--笔记系列(九)
- pro android 2第三章(九)资源进阶(上)
- android AchartEngine (内含源码)
- http://haohaoxuexi.iteye.com/blog/1900568
- C++primer plus第六版课后编程练习答案7.2
- Redis入门,集群安装
- 佛祖保佑,永无BUG
- 实习过程学习(1):springMVC页面跳转
- Android开发进阶系列(九) 玩转AChartEngine专题(上)
- HDU 4521(dp)
- Python 与 C++ 混合编程 实验
- hadoop 完全分布式 下 datanode无法启动解决方法
- python中的含有 *args 和**kwargs的用法 作为参数的函数,参数输入问题
- Linux如何通过PAM限制用户登录失败次数
- JavaSE+Thread
- git 命令
- Offline Image Viewer Guide