Android开发进阶系列(十) 玩转AChartEngine专题(下)
来源:互联网 发布:服务器地址和端口号 编辑:程序博客网 时间:2024/06/08 02:46
第二个项目是电力数据实时监测相关的,数据就不是从本机上读取了,而是连接到服务器与后台数据库交互。下面是三个界面对应的三种不同的显示需求:
1. 实时往前推的柱状图
初始化代码:
//画曲线 private View InitRenderer() { /* achartengine-1.1.0 * */ // 设置Renderer renderer = new XYMultipleSeriesRenderer(); renderer.setAxisTitleTextSize(16); renderer.setChartTitleTextSize(20); renderer.setLabelsTextSize(15); renderer.setLegendTextSize(15); renderer.setPointSize(5f); renderer.setMargins(new int[] { 0, 0, 0,0 }); renderer.setMarginsColor(0xff307B63); // 外部颜色,X轴坐标 renderer.setBackgroundColor(0xff41968D); // 内部底色 renderer.setApplyBackgroundColor(true); //内部底色 // Color 和 Point Style XYSeriesRenderer r = new XYSeriesRenderer(); r.setColor(0xffEDEDED); r.setPointStyle(PointStyle.POINT); // 点的形状 r.setFillPoints(true); // 实心点 r.setDisplayChartValues(false);// 设置不显示数值 renderer.addSeriesRenderer(r); // Chart Settings renderer.setChartTitle(""); // 不显示Title renderer.setXTitle(""); renderer.setYTitle(""); //renderer.setXAxisMin(0); renderer.setXAxisMax(barDataCount); renderer.setYAxisMin(0); //renderer.setYAxisMax(10); renderer.setXLabelsColor(Color.WHITE); renderer.setAxesColor(Color.WHITE); renderer.setLabelsColor(Color.WHITE); // renderer.setXLabels(0); //设置x轴显示刻度标签的个数,根据setChartSettings的最大值和最小值自动计算点的间隔 renderer.setYLabels(5); //设置y轴显示5个点,根据setChartSettings的最大值和最小值自动计算点的间隔 renderer.setShowGrid(false); //是否显示网格 renderer.setXLabelsAlign(Align.LEFT); //刻度线与刻度标注之间的相对位置关系 renderer.setYLabelsAlign(Align.LEFT); //刻度线与刻度标注之间的相对位置关系 renderer.setPanEnabled(false); renderer.setZoomEnabled(false); renderer.setZoomButtonsVisible(false); // 滑动和放大缩小 renderer.setClickEnabled(false); // 不允许点击 renderer.setShowLegend(false); // 不显示图例 renderer.setShowAxes(false); // 是否显示坐标轴的轴线 renderer.setShowLabels(false); // 是否显示坐标轴区域,包括轴线和坐标值 //renderer.setMargins(new int[]{0,10,0,10});//上,左,下,右的边距 renderer.setBarSpacing(0.2f); // BarChart的条状间距 renderer.setBarWidth(5.0f); // barchart的宽度 // DataSet 初始化 FusionField.realtotaldata = new XYMultipleSeriesDataset(); SetDataSeries(); //View view = ChartFactory.getLineChartView(this, FusionField.realtotaldata, renderer); View view = ChartFactory.getBarChartView(this, FusionField.realtotaldata, renderer, Type.DEFAULT); // 柱状图需要设置 //View view = ChartFactory.getCubeLineChartView(this, FusionField.dataset, renderer, 0.3f);//0.3f标示曲线的平滑度 return view; }
更新数据的代码:
private void SetDataSeries() { XYSeries series = new XYSeries("实时总功率"); for (int k = 0; k < barDataCount; k++) { series.add(k, FusionField.total20RealPower[k]); } FusionField.realtotaldata.addSeries(series); } private void UpdateDataSeries() { XYSeries series = (XYSeries) FusionField.realtotaldata.getSeries()[0]; if(series!=null) { series.clear(); for (int k = 0; k < barDataCount; k++) { series.add(k, FusionField.total20RealPower[k]); } } else SetDataSeries(); }
2. 实时往后更新的曲线图
初始化代码:
//画曲线 private View InitRenderer() { /* achartengine-1.1.0 * */ // X轴数据 long now = Math.round(new Date().getTime() / DAY) * DAY - ZONEGAP; // 今日0点,-ZONEGAP是减去8小时时差 dates = new Date[COUNT5MINUTES]; for (int i = 0; i < COUNT5MINUTES; i++) { dates[i] = new Date(now + i * MINUTE5); } // 设置Renderer renderer = new XYMultipleSeriesRenderer(); renderer.setAxisTitleTextSize(16); renderer.setChartTitleTextSize(20); renderer.setLabelsTextSize(15); renderer.setLegendTextSize(15); renderer.setPointSize(5f); renderer.setMargins(new int[] { 0, 0, 0,0 }); renderer.setMarginsColor(0xff307B63); // 外部颜色,X轴坐标 renderer.setBackgroundColor(0xff41968D); // 内部底色 renderer.setApplyBackgroundColor(true); //内部底色 // Color 和 Point Style XYSeriesRenderer r = new XYSeriesRenderer(); r.setColor(Color.WHITE); r.setPointStyle(PointStyle.POINT); // 点的形状 r.setFillPoints(true); // 实心点 r.setDisplayChartValues(true);// 设置显示数值 r.setLineWidth(3); renderer.addSeriesRenderer(r); // Chart Settings renderer.setChartTitle("总功率"); // 不显示Title renderer.setXTitle(""); renderer.setYTitle(""); renderer.setXAxisMin(dates[0].getTime()); renderer.setXAxisMax(dates[COUNT5MINUTES - 1].getTime()); renderer.setYAxisMin(0); //renderer.setYAxisMax(10); renderer.setXLabelsColor(Color.WHITE); renderer.setAxesColor(Color.WHITE); renderer.setLabelsColor(Color.GREEN); // renderer.setXLabels(12); //设置x轴显示12个点,根据setChartSettings的最大值和最小值自动计算点的间隔 renderer.setYLabels(5); //设置y轴显示10个点,根据setChartSettings的最大值和最小值自动计算点的间隔 renderer.setShowGrid(false); //是否显示网格 renderer.setXLabelsAlign(Align.LEFT); //刻度线与刻度标注之间的相对位置关系 renderer.setYLabelsAlign(Align.RIGHT); //刻度线与刻度标注之间的相对位置关系 renderer.setPanEnabled(false); renderer.setZoomEnabled(false); renderer.setZoomButtonsVisible(false); // 滑动和放大缩小 renderer.setClickEnabled(true); // 不允许点击 renderer.setShowLegend(false); // 不显示图例 renderer.setShowAxes(false); //renderer.setShowLabels(false); // DataSet 初始化 FusionField.dataset = new XYMultipleSeriesDataset(); SetDataSeries(); View view = ChartFactory.getTimeChartView(this, FusionField.dataset, renderer, "H:mm"); //View view = ChartFactory.getBarChartView(this, FusionField.dataset, renderer, Type.DEFAULT); // 柱状图需要设置 //View view = ChartFactory.getCubeLineChartView(this, FusionField.dataset, renderer, 0.3f);//0.3f标示曲线的平滑度 return view; }
数据更新的代码:
private void SetDataSeries() { TimeSeries series = new TimeSeries("实时总功率"); int seriesLength = dates.length; for (int k = 0; k < seriesLength; k++) { //series.add(dates[k], FusionField.realPower[k]); series.add(dates[k], MathHelper.NULL_VALUE); } FusionField.dataset.addSeries(series); } private void UpdateDataSeries() { TimeSeries series = (TimeSeries) FusionField.dataset.getSeries()[0]; if(series!=null) { series.clear(); int seriesLength = dates.length; for (int k = 0; k < seriesLength; k++) { series.add(dates[k], FusionField.realPower[k]); } } else SetDataSeries(); }
全屏折线图
在这张图上,显示了放大缩小按钮,也支持手势放大缩小操作。
初始化代码:
private View InitRenderer() { /* achartengine-1.1.0 * */ // X轴数据 long now = Math.round(new Date().getTime() / DAY) * DAY - ZONEGAP; // 今日0点,-ZONEGAP是减去8小时时差 dates = new Date[COUNT5MINUTES]; for (int i = 0; i < COUNT5MINUTES; i++) { dates[i] = new Date(now + i * MINUTE5); } // 设置Renderer renderer = new XYMultipleSeriesRenderer(); renderer.setAxisTitleTextSize(16); renderer.setChartTitleTextSize(20); renderer.setLabelsTextSize(15); //renderer.setLegendTextSize(15); renderer.setPointSize(5f); renderer.setMargins(new int[] { 20, 50, 15, 20 }); // Color 和 Point Style XYSeriesRenderer r = new XYSeriesRenderer(); r.setColor(Color.GREEN); r.setPointStyle(PointStyle.POINT); // 点的形状 r.setFillPoints(true); // 实心点 r.setDisplayChartValues(true);// 设置显示数值 renderer.addSeriesRenderer(r); // Chart Settings renderer.setChartTitle(""); // 不显示Title renderer.setXTitle("时间"); renderer.setYTitle("kW"); renderer.setXAxisMin(dates[0].getTime()); renderer.setXAxisMax(dates[COUNT5MINUTES - 1].getTime()); renderer.setYAxisMin(0); //renderer.setYAxisMax(10); renderer.setAxesColor(Color.WHITE); renderer.setLabelsColor(Color.WHITE); renderer.setZoomButtonsVisible(true); // renderer.setXLabels(24); //设置x轴显示12个点,根据setChartSettings的最大值和最小值自动计算点的间隔 renderer.setYLabels(10); //设置y轴显示10个点,根据setChartSettings的最大值和最小值自动计算点的间隔 renderer.setShowGrid(true); //是否显示网格 renderer.setXLabelsAlign(Align.CENTER); //刻度线与刻度标注之间的相对位置关系 renderer.setYLabelsAlign(Align.RIGHT); //刻度线与刻度标注之间的相对位置关系 //renderer.setPanLimits(new double[] { 0, 0, 0, MathHelper.NULL_VALUE }); //设置拖动时X轴Y轴允许的最大值最小值. //renderer.setZoomLimits(new double[] { 0, 0, 0, MathHelper.NULL_VALUE });//设置放大缩小时X轴Y轴允许的最大最小值. renderer.setShowLegend(false); // 不显示图例 // DataSet 初始化 FusionField.dataset = new XYMultipleSeriesDataset(); SetDataSeries(); View view = ChartFactory.getTimeChartView(this, FusionField.dataset, renderer, "H:mm"); //View view = ChartFactory.getCubeLineChartView(this, FusionField.dataset, renderer, 0.3f);//0.3f标示曲线的平滑度 return view; }
数据更新代码:
private void SetDataSeries() { TimeSeries series = new TimeSeries(title); int seriesLength = dates.length; for (int k = 0; k < seriesLength; k++) { series.add(dates[k], FusionField.realPower[k]); } FusionField.dataset.addSeries(series); } private void UpdateDataSeries() { TimeSeries series = (TimeSeries) FusionField.dataset.getSeries()[0]; if(series!=null) { series.clear(); int seriesLength = dates.length; for (int k = 0; k < seriesLength; k++) { series.add(dates[k], FusionField.realPower[k]); } } else SetDataSeries(); }
- * Android开发进阶系列(一) 序言 *
- * Android开发进阶系列(二) Tab页界面布局 *
- * Android开发进阶系列(三) 系统参数的获取和Broadcast *
- * Android开发进阶系列(四) 左移拉出Menu菜单界面布局 *
- * Android开发进阶系列(五) 连接服务器更新APK或下载资源文件 *
- * Android开发进阶系列(六) ListView的基本用法 *
- * Android开发进阶系列(七) 使用数据库 *
- * Android开发进阶系列(八) 界面美化之自定义弹出框 *
- * Android开发进阶系列(九) 玩转AChartEngine专题(上) *
- * Android开发进阶系列(十) 玩转AChartEngine专题(下) *
1 0
- Android开发进阶系列(十) 玩转AChartEngine专题(下)
- Android开发进阶系列(九) 玩转AChartEngine专题(上)
- Android报表库aChartEngine系列(介绍)
- Android报表库aChartEngine系列(介绍)
- Android开发进阶系列(一) 序言
- Android进阶专题十:界面布局优化
- Android报表库aChartEngine系列(pie chart)
- Android报表库aChartEngine系列(stacked chart)
- Android开发进阶系列(二) Tab页界面布局
- Android开发进阶系列(六) ListView的基本用法
- Android开发进阶系列(七) 使用数据库
- android AchartEngine (内含源码)
- Android开发,AchartEngine使用
- 玩转Excel系列-Vlookup函数的使用(下)
- Android报表库aChartEngine系列
- pro android 2第三章(十)资源进阶(下)
- Android 技术专题系列之十 -- Audio manager
- Android 技术专题系列之十 -- Audio manager
- 电子或通信领域当前的主流技术及其社会需求调查报告
- Grub2引导VHDX中的Windows
- C 数组最大值
- Android 同一段String 要设置为不同的两个颜色
- 超轻量级缓存技术——EhCache
- Android开发进阶系列(十) 玩转AChartEngine专题(下)
- struts2常用标签之property&debug
- robotframework学习
- 用Photoshop制作自己喜欢的桌面
- [python]微信开发access_token数据库存储 和 socket存取
- 单链表的头结点和头指针
- iOS 有关界面设计规范的一些总结
- struts2常用result类型详解
- java、synchronized、wait()、notify()、notifyAll()