Android开发进阶系列(十) 玩转AChartEngine专题(下)
2015-11-27 16:53
225 查看
第二个项目是电力数据实时监测相关的,数据就不是从本机上读取了,而是连接到服务器与后台数据库交互。下面是三个界面对应的三种不同的显示需求:
初始化代码:
更新数据的代码:
初始化代码:
数据更新的代码:
在这张图上,显示了放大缩小按钮,也支持手势放大缩小操作。
初始化代码:
数据更新代码:
* Android开发进阶系列(一) 序言 *
* Android开发进阶系列(二) Tab页界面布局 *
* Android开发进阶系列(三) 系统参数的获取和Broadcast *
* Android开发进阶系列(四) 左移拉出Menu菜单界面布局 *
* Android开发进阶系列(五) 连接服务器更新APK或下载资源文件 *
* Android开发进阶系列(六) ListView的基本用法 *
* Android开发进阶系列(七) 使用数据库 *
* Android开发进阶系列(八) 界面美化之自定义弹出框 *
* Android开发进阶系列(九) 玩转AChartEngine专题(上) *
* Android开发进阶系列(十) 玩转AChartEngine专题(下) *
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专题(下) *
相关文章推荐
- Android 同一段String 要设置为不同的两个颜色
- 使用admob移动广告SDK在Android应用中集成插页式广告教程
- 加载页面遮挡耗时操作任务页面--第三方开源--AndroidProgressLayout
- android 5.0 实现xml文件的解释,读写操作
- AndroidL 传感器系统
- Android开发进阶系列(九) 玩转AChartEngine专题(上)
- 使用nineoldandroids仿制QQ侧滑菜单
- android检查是否插入OTG鼠标或键盘代码
- android之CardView的使用
- Android使用AttributeSet自定义控件的方法
- android入门介绍
- view getMeasuredHeight getHeight区别
- 改变android system目录的权限,使修改该目录下的内容。
- android学习笔记16 - TypedArray自定义属性
- android 优化Lint清除无效资源文件的用法
- Android中的AlertDialog实现
- Android-类qq功能(四)
- Android 自定义EditText( 登录界面)
- Android中对Log日志文件的分析
- android应用中去掉标题栏的方法