|
|
|
|
@ -1,5 +1,6 @@
|
|
|
|
|
package com.rehome.zhdcoa.ui.activity;
|
|
|
|
|
|
|
|
|
|
import static com.rehome.zhdcoa.utils.GsonUtils.GsonString;
|
|
|
|
|
import static com.rehome.zhdcoa.utils.GsonUtils.GsonToBean;
|
|
|
|
|
|
|
|
|
|
import android.graphics.Color;
|
|
|
|
|
@ -75,10 +76,13 @@ public class DeviceAlarmInfoLineChartActivity extends BaseViewBindingActivity<Ac
|
|
|
|
|
private List<DeviceAlarmInfoLineChartBean.DeviceVibrationMonitoringData> deviceAlarmDataList = new ArrayList<>();
|
|
|
|
|
private double maxTemperature=0;
|
|
|
|
|
private double maxAddSpeed=0;
|
|
|
|
|
private double maxSpeed=0;
|
|
|
|
|
private double maxWy=0;
|
|
|
|
|
|
|
|
|
|
private ArrayList<String> xLabelListData = new ArrayList<>();
|
|
|
|
|
private ArrayList<String> xLabelListDataAddSpeed = new ArrayList<>();
|
|
|
|
|
private ArrayList<String> xLabelListDataSpeed = new ArrayList<>();
|
|
|
|
|
private ArrayList<String> xLabelListDataWy = new ArrayList<>();
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
protected ActivityDeviceAlarmInfoLineChartBinding getBinding() {
|
|
|
|
|
@ -205,6 +209,7 @@ public class DeviceAlarmInfoLineChartActivity extends BaseViewBindingActivity<Ac
|
|
|
|
|
binding.rb5.setChecked(false);
|
|
|
|
|
binding.rb6.setChecked(false);
|
|
|
|
|
binding.rb7.setChecked(false);
|
|
|
|
|
renderSpeed();
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
binding.rb4.setOnCheckedChangeListener((buttonView, isChecked) -> {
|
|
|
|
|
@ -216,6 +221,7 @@ public class DeviceAlarmInfoLineChartActivity extends BaseViewBindingActivity<Ac
|
|
|
|
|
binding.rb5.setChecked(false);
|
|
|
|
|
binding.rb6.setChecked(false);
|
|
|
|
|
binding.rb7.setChecked(false);
|
|
|
|
|
renderWy();
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
binding.rb5.setOnCheckedChangeListener((buttonView, isChecked) -> {
|
|
|
|
|
@ -280,6 +286,12 @@ public class DeviceAlarmInfoLineChartActivity extends BaseViewBindingActivity<Ac
|
|
|
|
|
if(binding.rb2.isChecked()){
|
|
|
|
|
renderAddSpeed();
|
|
|
|
|
}
|
|
|
|
|
if(binding.rb3.isChecked()){
|
|
|
|
|
renderSpeed();
|
|
|
|
|
}
|
|
|
|
|
if(binding.rb4.isChecked()){
|
|
|
|
|
renderWy();
|
|
|
|
|
}
|
|
|
|
|
}else{
|
|
|
|
|
showLog("is emply");
|
|
|
|
|
setDes();
|
|
|
|
|
@ -293,6 +305,47 @@ public class DeviceAlarmInfoLineChartActivity extends BaseViewBindingActivity<Ac
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void setDes() {
|
|
|
|
|
Description description = new Description();
|
|
|
|
|
description.setText("");
|
|
|
|
|
description.setTextSize(12);
|
|
|
|
|
description.setTextColor(Color.BLUE);
|
|
|
|
|
binding.linechart.setDescription(description);
|
|
|
|
|
|
|
|
|
|
//透明化图例
|
|
|
|
|
Legend legend = binding.linechart.getLegend();
|
|
|
|
|
//legend.setForm(Legend.LegendForm.NONE);
|
|
|
|
|
legend.setTextColor(Color.GRAY);
|
|
|
|
|
legend.setTextSize(14);
|
|
|
|
|
|
|
|
|
|
binding.linechart.setNoDataText("无数据");
|
|
|
|
|
binding.linechart.setExtraBottomOffset(20f);
|
|
|
|
|
binding.linechart.setExtraRightOffset(30f);
|
|
|
|
|
binding.linechart.setExtraLeftOffset(10f);
|
|
|
|
|
|
|
|
|
|
// 方法一:通过设置 X 轴偏移量间接控制
|
|
|
|
|
// legend.setXEntrySpace(10f); // 条目之间的水平间距
|
|
|
|
|
// legend.setYEntrySpace(10f); // 行之间的垂直间距
|
|
|
|
|
// legend.setFormSize(10f); // 图例图标大小
|
|
|
|
|
// // 启用自动换行
|
|
|
|
|
// legend.setWordWrapEnabled(true);
|
|
|
|
|
// // 设置换行策略
|
|
|
|
|
// legend.setDirection(Legend.LegendDirection.LEFT_TO_RIGHT);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//方法二:基本多行显示配置
|
|
|
|
|
// 水平方向排列
|
|
|
|
|
//legend.setOrientation(Legend.LegendOrientation.VERTICAL);
|
|
|
|
|
// 垂直方向排列
|
|
|
|
|
legend.setOrientation(Legend.LegendOrientation.HORIZONTAL);
|
|
|
|
|
// 设置在底部居中
|
|
|
|
|
legend.setVerticalAlignment(Legend.LegendVerticalAlignment.BOTTOM);
|
|
|
|
|
legend.setHorizontalAlignment(Legend.LegendHorizontalAlignment.LEFT);
|
|
|
|
|
// 启用自动换行
|
|
|
|
|
legend.setWordWrapEnabled(true);
|
|
|
|
|
legend.setFormSize(10f); // 图例图标大小
|
|
|
|
|
}
|
|
|
|
|
//温度折线图
|
|
|
|
|
private void renderTemperature(){
|
|
|
|
|
xLabelListData.clear();
|
|
|
|
|
maxTemperature=0;
|
|
|
|
|
@ -311,6 +364,9 @@ public class DeviceAlarmInfoLineChartActivity extends BaseViewBindingActivity<Ac
|
|
|
|
|
if(item.getTemperature()!=null&& item.getTemperature() >maxTemperature){
|
|
|
|
|
maxTemperature=item.getTemperature();
|
|
|
|
|
}
|
|
|
|
|
if(i==deviceAlarmDataList.size()-1){
|
|
|
|
|
showLog(GsonString(item));
|
|
|
|
|
}
|
|
|
|
|
} catch (ParseException e) {
|
|
|
|
|
throw new RuntimeException(e);
|
|
|
|
|
}
|
|
|
|
|
@ -341,47 +397,6 @@ public class DeviceAlarmInfoLineChartActivity extends BaseViewBindingActivity<Ac
|
|
|
|
|
showLog("maxTemperature:"+String.valueOf(maxTemperature));
|
|
|
|
|
setDataTemperature(entries1);
|
|
|
|
|
}
|
|
|
|
|
//初始化折线图
|
|
|
|
|
private void setDes() {
|
|
|
|
|
Description description = new Description();
|
|
|
|
|
description.setText("");
|
|
|
|
|
description.setTextSize(12);
|
|
|
|
|
description.setTextColor(Color.BLUE);
|
|
|
|
|
binding.linechart.setDescription(description);
|
|
|
|
|
|
|
|
|
|
//透明化图例
|
|
|
|
|
Legend legend = binding.linechart.getLegend();
|
|
|
|
|
//legend.setForm(Legend.LegendForm.NONE);
|
|
|
|
|
legend.setTextColor(Color.GRAY);
|
|
|
|
|
legend.setTextSize(14);
|
|
|
|
|
|
|
|
|
|
binding.linechart.setNoDataText("无数据");
|
|
|
|
|
binding.linechart.setExtraBottomOffset(20f);
|
|
|
|
|
binding.linechart.setExtraRightOffset(30f);
|
|
|
|
|
binding.linechart.setExtraLeftOffset(10f);
|
|
|
|
|
|
|
|
|
|
// 方法一:通过设置 X 轴偏移量间接控制
|
|
|
|
|
// legend.setXEntrySpace(10f); // 条目之间的水平间距
|
|
|
|
|
// legend.setYEntrySpace(10f); // 行之间的垂直间距
|
|
|
|
|
// legend.setFormSize(10f); // 图例图标大小
|
|
|
|
|
// // 启用自动换行
|
|
|
|
|
// legend.setWordWrapEnabled(true);
|
|
|
|
|
// // 设置换行策略
|
|
|
|
|
// legend.setDirection(Legend.LegendDirection.LEFT_TO_RIGHT);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//方法二:基本多行显示配置
|
|
|
|
|
// 水平方向排列
|
|
|
|
|
//legend.setOrientation(Legend.LegendOrientation.VERTICAL);
|
|
|
|
|
// 垂直方向排列
|
|
|
|
|
legend.setOrientation(Legend.LegendOrientation.HORIZONTAL);
|
|
|
|
|
// 设置在底部居中
|
|
|
|
|
legend.setVerticalAlignment(Legend.LegendVerticalAlignment.BOTTOM);
|
|
|
|
|
legend.setHorizontalAlignment(Legend.LegendHorizontalAlignment.LEFT);
|
|
|
|
|
// 启用自动换行
|
|
|
|
|
legend.setWordWrapEnabled(true);
|
|
|
|
|
legend.setFormSize(10f); // 图例图标大小
|
|
|
|
|
}
|
|
|
|
|
private void setDataTemperature(List<Entry> datas) {
|
|
|
|
|
// 清除所有数据
|
|
|
|
|
binding.linechart.clear();
|
|
|
|
|
@ -394,9 +409,10 @@ public class DeviceAlarmInfoLineChartActivity extends BaseViewBindingActivity<Ac
|
|
|
|
|
dataSet1.setValueTextColor(Color.parseColor("#FC863E"));
|
|
|
|
|
dataSet1.setMode(LineDataSet.Mode.CUBIC_BEZIER);
|
|
|
|
|
dataSet1.setLineWidth(2);
|
|
|
|
|
dataSet1.setCircleHoleRadius(3);
|
|
|
|
|
//dataSet1.setCircleHoleRadius(3);
|
|
|
|
|
dataSet1.setDrawCircles(false); // 禁用圆点绘制
|
|
|
|
|
//dataSet1.enableDashedLine(5, 5, 0);
|
|
|
|
|
dataSet1.setCircleColor(Color.parseColor("#FC863E"));
|
|
|
|
|
//dataSet1.setCircleColor(Color.parseColor("#FC863E"));
|
|
|
|
|
dataSet1.setColor(Color.parseColor("#FC863E"));
|
|
|
|
|
dataSet1.setDrawHighlightIndicators(false);
|
|
|
|
|
dataSet1.setDrawFilled(true);
|
|
|
|
|
@ -433,10 +449,10 @@ public class DeviceAlarmInfoLineChartActivity extends BaseViewBindingActivity<Ac
|
|
|
|
|
//设置字体颜色
|
|
|
|
|
//axisLeft.setTextColor(Color.parseColor("#FC863E"));
|
|
|
|
|
|
|
|
|
|
float ratio = (float) xLabelListData.size() / (float) 10;
|
|
|
|
|
if (ratio < 1) {
|
|
|
|
|
ratio = 1.0f;
|
|
|
|
|
}
|
|
|
|
|
// float ratio = (float) xLabelListData.size() / (float) 10;
|
|
|
|
|
// if (ratio < 1) {
|
|
|
|
|
// ratio = 1.0f;
|
|
|
|
|
// }
|
|
|
|
|
//显示的时候是按照多大的比率缩放显示,1f表示不放大缩小
|
|
|
|
|
//着重说明一下下面代码的用途
|
|
|
|
|
/**
|
|
|
|
|
@ -444,12 +460,12 @@ public class DeviceAlarmInfoLineChartActivity extends BaseViewBindingActivity<Ac
|
|
|
|
|
* 若不这样做的话,在当前页面重新加载数据时,你所设置的缩放比会失效,并且出现你意向不到的显示问题。
|
|
|
|
|
* 如果你的图表只在页面加载一次的话不需要这么做。
|
|
|
|
|
*/
|
|
|
|
|
binding.linechart.zoom(0f, 1f, 0, 0);
|
|
|
|
|
binding.linechart.zoom(ratio, 1f, 0, 0);
|
|
|
|
|
//设置为不可缩放
|
|
|
|
|
binding.linechart.setScaleEnabled(false);
|
|
|
|
|
//设置为可左右滑动
|
|
|
|
|
binding.linechart.setDragEnabled(true);
|
|
|
|
|
// binding.linechart.zoom(0f, 1f, 0, 0);
|
|
|
|
|
// binding.linechart.zoom(ratio, 1f, 0, 0);
|
|
|
|
|
// //设置为不可缩放
|
|
|
|
|
// binding.linechart.setScaleEnabled(false);
|
|
|
|
|
// //设置为可左右滑动
|
|
|
|
|
// binding.linechart.setDragEnabled(true);
|
|
|
|
|
// 假设chart是你的LineChart或BarChart对象
|
|
|
|
|
// binding.linechart.postDelayed(() -> {
|
|
|
|
|
// // 获取最后一个可见的X值
|
|
|
|
|
@ -458,6 +474,7 @@ public class DeviceAlarmInfoLineChartActivity extends BaseViewBindingActivity<Ac
|
|
|
|
|
// binding.linechart.moveViewToX(lastX);
|
|
|
|
|
// },1000);
|
|
|
|
|
}
|
|
|
|
|
//加速度折线图
|
|
|
|
|
private void renderAddSpeed(){
|
|
|
|
|
xLabelListDataAddSpeed.clear();
|
|
|
|
|
maxAddSpeed=0;
|
|
|
|
|
@ -497,7 +514,9 @@ public class DeviceAlarmInfoLineChartActivity extends BaseViewBindingActivity<Ac
|
|
|
|
|
maxAddSpeed=2.5;
|
|
|
|
|
}else if(maxAddSpeed>=2.5&&maxAddSpeed<4.5){
|
|
|
|
|
maxAddSpeed=5;
|
|
|
|
|
}else if(maxAddSpeed>=4.5&&maxAddSpeed<9){
|
|
|
|
|
}else if(maxAddSpeed>=4.5&&maxAddSpeed<6.5){
|
|
|
|
|
maxAddSpeed=7;
|
|
|
|
|
}else if(maxAddSpeed>=6.5&&maxAddSpeed<9){
|
|
|
|
|
maxAddSpeed=10;
|
|
|
|
|
}else if(maxAddSpeed>=9&&maxAddSpeed<15){
|
|
|
|
|
maxAddSpeed=16;
|
|
|
|
|
@ -530,9 +549,10 @@ public class DeviceAlarmInfoLineChartActivity extends BaseViewBindingActivity<Ac
|
|
|
|
|
dataSet1.setValueTextColor(Color.parseColor("#ff8000"));
|
|
|
|
|
dataSet1.setMode(LineDataSet.Mode.CUBIC_BEZIER);
|
|
|
|
|
dataSet1.setLineWidth(2);
|
|
|
|
|
dataSet1.setCircleHoleRadius(3);
|
|
|
|
|
//dataSet1.setCircleHoleRadius(3);
|
|
|
|
|
dataSet1.setDrawCircles(false); // 禁用圆点绘制
|
|
|
|
|
//dataSet1.enableDashedLine(5, 5, 0);
|
|
|
|
|
dataSet1.setCircleColor(Color.parseColor("#ff8000"));
|
|
|
|
|
//dataSet1.setCircleColor(Color.parseColor("#ff8000"));
|
|
|
|
|
dataSet1.setColor(Color.parseColor("#ff8000"));
|
|
|
|
|
dataSet1.setDrawHighlightIndicators(false);
|
|
|
|
|
//dataSet1.setDrawFilled(true);
|
|
|
|
|
@ -547,9 +567,10 @@ public class DeviceAlarmInfoLineChartActivity extends BaseViewBindingActivity<Ac
|
|
|
|
|
dataSet2.setValueTextColor(Color.parseColor("#0080ff"));
|
|
|
|
|
dataSet2.setMode(LineDataSet.Mode.CUBIC_BEZIER);
|
|
|
|
|
dataSet2.setLineWidth(2);
|
|
|
|
|
dataSet2.setCircleHoleRadius(3);
|
|
|
|
|
//dataSet2.setCircleHoleRadius(3);
|
|
|
|
|
dataSet2.setDrawCircles(false); // 禁用圆点绘制
|
|
|
|
|
//dataSet2.enableDashedLine(5, 5, 0);
|
|
|
|
|
dataSet2.setCircleColor(Color.parseColor("#0080ff"));
|
|
|
|
|
//dataSet2.setCircleColor(Color.parseColor("#0080ff"));
|
|
|
|
|
dataSet2.setColor(Color.parseColor("#0080ff"));
|
|
|
|
|
dataSet2.setDrawHighlightIndicators(false);
|
|
|
|
|
//dataSet2.setDrawFilled(true);
|
|
|
|
|
@ -564,9 +585,10 @@ public class DeviceAlarmInfoLineChartActivity extends BaseViewBindingActivity<Ac
|
|
|
|
|
dataSet3.setValueTextColor(Color.parseColor("#80ff00"));
|
|
|
|
|
dataSet3.setMode(LineDataSet.Mode.CUBIC_BEZIER);
|
|
|
|
|
dataSet3.setLineWidth(2);
|
|
|
|
|
dataSet3.setCircleHoleRadius(3);
|
|
|
|
|
//dataSet3.setCircleHoleRadius(3);
|
|
|
|
|
dataSet3.setDrawCircles(false); // 禁用圆点绘制
|
|
|
|
|
//dataSet3.enableDashedLine(5, 5, 0);
|
|
|
|
|
dataSet3.setCircleColor(Color.parseColor("#80ff00"));
|
|
|
|
|
//dataSet3.setCircleColor(Color.parseColor("#80ff00"));
|
|
|
|
|
dataSet3.setColor(Color.parseColor("#80ff00"));
|
|
|
|
|
dataSet3.setDrawHighlightIndicators(false);
|
|
|
|
|
//dataSet3.setDrawFilled(true);
|
|
|
|
|
@ -604,10 +626,353 @@ public class DeviceAlarmInfoLineChartActivity extends BaseViewBindingActivity<Ac
|
|
|
|
|
//设置字体颜色
|
|
|
|
|
//axisLeft.setTextColor(Color.parseColor("#FC863E"));
|
|
|
|
|
|
|
|
|
|
float ratio = (float) xLabelListDataAddSpeed.size() / (float) 10;
|
|
|
|
|
if (ratio < 1) {
|
|
|
|
|
ratio = 1.0f;
|
|
|
|
|
// float ratio = (float) xLabelListDataAddSpeed.size() / (float) 10;
|
|
|
|
|
// if (ratio < 1) {
|
|
|
|
|
// ratio = 1.0f;
|
|
|
|
|
// }
|
|
|
|
|
//显示的时候是按照多大的比率缩放显示,1f表示不放大缩小
|
|
|
|
|
//着重说明一下下面代码的用途
|
|
|
|
|
/**
|
|
|
|
|
* 先将缩放比设置成0后,再去设置你想要的缩放比。
|
|
|
|
|
* 若不这样做的话,在当前页面重新加载数据时,你所设置的缩放比会失效,并且出现你意向不到的显示问题。
|
|
|
|
|
* 如果你的图表只在页面加载一次的话不需要这么做。
|
|
|
|
|
*/
|
|
|
|
|
// binding.linechart.zoom(0f, 1f, 0, 0);
|
|
|
|
|
// binding.linechart.zoom(ratio, 1f, 0, 0);
|
|
|
|
|
// //设置为不可缩放
|
|
|
|
|
// binding.linechart.setScaleEnabled(false);
|
|
|
|
|
// //设置为可左右滑动
|
|
|
|
|
// binding.linechart.setDragEnabled(true);
|
|
|
|
|
}
|
|
|
|
|
//速度折线图
|
|
|
|
|
private void renderSpeed(){
|
|
|
|
|
xLabelListDataSpeed.clear();
|
|
|
|
|
maxSpeed=0;
|
|
|
|
|
List<Entry> entriesXSpeed = new ArrayList<>();
|
|
|
|
|
List<Entry> entriesYSpeed = new ArrayList<>();
|
|
|
|
|
List<Entry> entriesZSpeed = new ArrayList<>();
|
|
|
|
|
for (int i = 0; i < deviceAlarmDataList.size(); i++) {
|
|
|
|
|
try {
|
|
|
|
|
DeviceAlarmInfoLineChartBean.DeviceVibrationMonitoringData item = deviceAlarmDataList.get(i);
|
|
|
|
|
|
|
|
|
|
entriesXSpeed.add(new Entry(i, Float.parseFloat(item.getxSpeed().toString())));
|
|
|
|
|
entriesYSpeed.add(new Entry(i, Float.parseFloat(item.getySpeed().toString())));
|
|
|
|
|
entriesZSpeed.add(new Entry(i, Float.parseFloat(item.getzSpeed().toString())));
|
|
|
|
|
|
|
|
|
|
Date date = sdf.parse(item.getDeviceTime());
|
|
|
|
|
if(date != null){
|
|
|
|
|
Calendar calendar = Calendar.getInstance();
|
|
|
|
|
calendar.setTime(date);
|
|
|
|
|
xLabelListDataSpeed.add(sdfHourMinute.format(calendar.getTime()));
|
|
|
|
|
}
|
|
|
|
|
if(item.getxSpeed()!=null&& item.getxSpeed() >maxSpeed){
|
|
|
|
|
maxSpeed=item.getxSpeed();
|
|
|
|
|
}
|
|
|
|
|
if(item.getySpeed()!=null&& item.getySpeed() >maxSpeed){
|
|
|
|
|
maxSpeed=item.getySpeed();
|
|
|
|
|
}
|
|
|
|
|
if(item.getzSpeed()!=null&& item.getzSpeed() >maxSpeed){
|
|
|
|
|
maxSpeed=item.getzSpeed();
|
|
|
|
|
}
|
|
|
|
|
} catch (ParseException e) {
|
|
|
|
|
throw new RuntimeException(e);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
showLog(String.valueOf(deviceAlarmDataList.size()));
|
|
|
|
|
showLog("maxSpeed:"+String.valueOf(maxSpeed));
|
|
|
|
|
if(maxSpeed<2.5){
|
|
|
|
|
maxSpeed=2.5;
|
|
|
|
|
}else if(maxSpeed>=2.5&&maxSpeed<4.5){
|
|
|
|
|
maxSpeed=5;
|
|
|
|
|
}else if(maxSpeed>=4.5&&maxSpeed<6.5){
|
|
|
|
|
maxSpeed=7;
|
|
|
|
|
}else if(maxSpeed>=6.5&&maxSpeed<9){
|
|
|
|
|
maxSpeed=10;
|
|
|
|
|
}else if(maxSpeed>=9&&maxSpeed<15){
|
|
|
|
|
maxSpeed=16;
|
|
|
|
|
}else if(maxSpeed>=15&&maxSpeed<30){
|
|
|
|
|
maxSpeed=31;
|
|
|
|
|
}else if(maxSpeed>=30&&maxSpeed<50){
|
|
|
|
|
maxSpeed=60;
|
|
|
|
|
}else if(maxSpeed>=50&&maxSpeed<75){
|
|
|
|
|
maxSpeed=80;
|
|
|
|
|
}else if(maxSpeed>=75&&maxSpeed<95){
|
|
|
|
|
maxSpeed=100;
|
|
|
|
|
}else if(maxSpeed>=95&&maxSpeed<125){
|
|
|
|
|
maxSpeed=130;
|
|
|
|
|
}else{
|
|
|
|
|
maxSpeed=maxSpeed+5;
|
|
|
|
|
}
|
|
|
|
|
showLog("maxSpeed:"+String.valueOf(maxSpeed));
|
|
|
|
|
setDataSpeed(entriesXSpeed,entriesYSpeed,entriesZSpeed);
|
|
|
|
|
}
|
|
|
|
|
private void setDataSpeed(List<Entry> entriesXSpeed,List<Entry> entriesYSpeed,List<Entry> entriesZSpeed) {
|
|
|
|
|
// 清除所有数据
|
|
|
|
|
binding.linechart.clear();
|
|
|
|
|
binding.linechart.invalidate(); // 重绘视图
|
|
|
|
|
|
|
|
|
|
List<ILineDataSet> sets = new ArrayList<>();
|
|
|
|
|
|
|
|
|
|
String deviceNameLineX = deviceName+"X轴速度";
|
|
|
|
|
LineDataSet dataSet1 = new LineDataSet(entriesXSpeed, deviceNameLineX);
|
|
|
|
|
dataSet1.setValueTextSize(12);
|
|
|
|
|
dataSet1.setValueTextColor(Color.parseColor("#ff8000"));
|
|
|
|
|
dataSet1.setMode(LineDataSet.Mode.CUBIC_BEZIER);
|
|
|
|
|
dataSet1.setLineWidth(2);
|
|
|
|
|
//dataSet1.setCircleHoleRadius(3);
|
|
|
|
|
dataSet1.setDrawCircles(false); // 禁用圆点绘制
|
|
|
|
|
//dataSet1.enableDashedLine(5, 5, 0);
|
|
|
|
|
//dataSet1.setCircleColor(Color.parseColor("#ff8000"));
|
|
|
|
|
dataSet1.setColor(Color.parseColor("#ff8000"));
|
|
|
|
|
dataSet1.setDrawHighlightIndicators(false);
|
|
|
|
|
//dataSet1.setDrawFilled(true);
|
|
|
|
|
//dataSet1.setFillDrawable(new GradientDrawable(GradientDrawable.Orientation.TOP_BOTTOM, new int[]{Color.argb(127, 235, 170, 106), Color.parseColor("#00FA5544")}));
|
|
|
|
|
dataSet1.setLineWidth(2);
|
|
|
|
|
dataSet1.setDrawValues(false);
|
|
|
|
|
sets.add(dataSet1);
|
|
|
|
|
|
|
|
|
|
String deviceNameLineY = deviceName+"Y轴速度";
|
|
|
|
|
LineDataSet dataSet2 = new LineDataSet(entriesYSpeed, deviceNameLineY);
|
|
|
|
|
dataSet2.setValueTextSize(12);
|
|
|
|
|
dataSet2.setValueTextColor(Color.parseColor("#0080ff"));
|
|
|
|
|
dataSet2.setMode(LineDataSet.Mode.CUBIC_BEZIER);
|
|
|
|
|
dataSet2.setLineWidth(2);
|
|
|
|
|
//dataSet2.setCircleHoleRadius(3);
|
|
|
|
|
dataSet2.setDrawCircles(false); // 禁用圆点绘制
|
|
|
|
|
//dataSet2.enableDashedLine(5, 5, 0);
|
|
|
|
|
//dataSet2.setCircleColor(Color.parseColor("#0080ff"));
|
|
|
|
|
dataSet2.setColor(Color.parseColor("#0080ff"));
|
|
|
|
|
dataSet2.setDrawHighlightIndicators(false);
|
|
|
|
|
//dataSet2.setDrawFilled(true);
|
|
|
|
|
//dataSet2.setFillDrawable(new GradientDrawable(GradientDrawable.Orientation.TOP_BOTTOM, new int[]{Color.argb(127, 235, 170, 106), Color.parseColor("#00FA5544")}));
|
|
|
|
|
dataSet2.setLineWidth(2);
|
|
|
|
|
dataSet2.setDrawValues(false);
|
|
|
|
|
sets.add(dataSet2);
|
|
|
|
|
|
|
|
|
|
String deviceNameLineZ = deviceName+"Z轴速度";
|
|
|
|
|
LineDataSet dataSet3 = new LineDataSet(entriesZSpeed, deviceNameLineZ);
|
|
|
|
|
dataSet3.setValueTextSize(12);
|
|
|
|
|
dataSet3.setValueTextColor(Color.parseColor("#80ff00"));
|
|
|
|
|
dataSet3.setMode(LineDataSet.Mode.CUBIC_BEZIER);
|
|
|
|
|
dataSet3.setLineWidth(2);
|
|
|
|
|
//dataSet3.setCircleHoleRadius(3);//圆点大小
|
|
|
|
|
dataSet3.setDrawCircles(false); // 禁用圆点绘制
|
|
|
|
|
//dataSet3.enableDashedLine(5, 5, 0);//曲线间隔
|
|
|
|
|
//dataSet3.setCircleColor(Color.parseColor("#80ff00"));//圆点颜色
|
|
|
|
|
dataSet3.setColor(Color.parseColor("#80ff00"));//线颜色
|
|
|
|
|
dataSet3.setDrawHighlightIndicators(false);
|
|
|
|
|
//dataSet3.setDrawFilled(true);
|
|
|
|
|
//dataSet3.setFillDrawable(new GradientDrawable(GradientDrawable.Orientation.TOP_BOTTOM, new int[]{Color.argb(127, 235, 170, 106), Color.parseColor("#00FA5544")}));
|
|
|
|
|
dataSet3.setLineWidth(2);
|
|
|
|
|
dataSet3.setDrawValues(false);
|
|
|
|
|
sets.add(dataSet3);
|
|
|
|
|
|
|
|
|
|
LineData lineData = new LineData(sets);
|
|
|
|
|
binding.linechart.setData(lineData);
|
|
|
|
|
binding.linechart.invalidate();
|
|
|
|
|
|
|
|
|
|
XAxis xAxis = binding.linechart.getXAxis();
|
|
|
|
|
xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
|
|
|
|
|
xAxis.setAxisMinimum(1);//设置x轴最小
|
|
|
|
|
xAxis.setTextSize(12);
|
|
|
|
|
//xAxis.setTextColor(Color.parseColor("#FC863E"));
|
|
|
|
|
xAxis.setEnabled(true);//是否显示x轴是否禁用
|
|
|
|
|
xAxis.setDrawLabels(true); //设置x轴标签 即x轴上显示的数值
|
|
|
|
|
xAxis.setDrawGridLines(true);//是否设置x轴上每个点对应的线 即 竖向的网格线
|
|
|
|
|
xAxis.enableGridDashedLine(2, 2, 2); //竖线 虚线样式 lineLength控制虚线段的长度 spaceLength控制线之间的空间
|
|
|
|
|
xAxis.setLabelRotationAngle(40f);//设置x轴标签的旋转角度
|
|
|
|
|
String[] timearray = xLabelListDataSpeed.toArray(new String[xLabelListDataSpeed.size()]);
|
|
|
|
|
xAxis.setValueFormatter(new IndexAxisValueFormatter(timearray));
|
|
|
|
|
YAxis yAxis = binding.linechart.getAxisRight();
|
|
|
|
|
yAxis.setEnabled(false);
|
|
|
|
|
|
|
|
|
|
//设置左边Y轴的样式
|
|
|
|
|
YAxis axisLeft = binding.linechart.getAxisLeft();
|
|
|
|
|
axisLeft.setTextSize(12);
|
|
|
|
|
|
|
|
|
|
axisLeft.setAxisMinimum(0f);
|
|
|
|
|
axisLeft.setAxisMaximum((float) maxSpeed);
|
|
|
|
|
|
|
|
|
|
//设置字体颜色
|
|
|
|
|
//axisLeft.setTextColor(Color.parseColor("#FC863E"));
|
|
|
|
|
|
|
|
|
|
// float ratio = (float) xLabelListDataSpeed.size() / (float) 10;
|
|
|
|
|
// if (ratio < 1) {
|
|
|
|
|
// ratio = 1.0f;
|
|
|
|
|
// }
|
|
|
|
|
//显示的时候是按照多大的比率缩放显示,1f表示不放大缩小
|
|
|
|
|
//着重说明一下下面代码的用途
|
|
|
|
|
/**
|
|
|
|
|
* 先将缩放比设置成0后,再去设置你想要的缩放比。
|
|
|
|
|
* 若不这样做的话,在当前页面重新加载数据时,你所设置的缩放比会失效,并且出现你意向不到的显示问题。
|
|
|
|
|
* 如果你的图表只在页面加载一次的话不需要这么做。
|
|
|
|
|
*/
|
|
|
|
|
// binding.linechart.zoom(0f, 1f, 0, 0);
|
|
|
|
|
// binding.linechart.zoom(ratio, 1f, 0, 0);
|
|
|
|
|
// //设置为不可缩放
|
|
|
|
|
// binding.linechart.setScaleEnabled(false);
|
|
|
|
|
// //设置为可左右滑动
|
|
|
|
|
// binding.linechart.setDragEnabled(true);
|
|
|
|
|
}
|
|
|
|
|
private void renderWy(){
|
|
|
|
|
xLabelListDataWy.clear();
|
|
|
|
|
maxWy=0;
|
|
|
|
|
List<Entry> entriesXWy = new ArrayList<>();
|
|
|
|
|
List<Entry> entriesYWy = new ArrayList<>();
|
|
|
|
|
List<Entry> entriesZWy = new ArrayList<>();
|
|
|
|
|
for (int i = 0; i < deviceAlarmDataList.size(); i++) {
|
|
|
|
|
try {
|
|
|
|
|
DeviceAlarmInfoLineChartBean.DeviceVibrationMonitoringData item = deviceAlarmDataList.get(i);
|
|
|
|
|
|
|
|
|
|
entriesXWy.add(new Entry(i, Float.parseFloat(item.getxDisplacement().toString())));
|
|
|
|
|
entriesYWy.add(new Entry(i, Float.parseFloat(item.getyDisplacement().toString())));
|
|
|
|
|
entriesZWy.add(new Entry(i, Float.parseFloat(item.getzDisplacement().toString())));
|
|
|
|
|
|
|
|
|
|
Date date = sdf.parse(item.getDeviceTime());
|
|
|
|
|
if(date != null){
|
|
|
|
|
Calendar calendar = Calendar.getInstance();
|
|
|
|
|
calendar.setTime(date);
|
|
|
|
|
xLabelListDataWy.add(sdfHourMinute.format(calendar.getTime()));
|
|
|
|
|
}
|
|
|
|
|
if(item.getxDisplacement()!=null&& item.getxDisplacement() >maxWy){
|
|
|
|
|
maxWy=item.getxDisplacement();
|
|
|
|
|
}
|
|
|
|
|
if(item.getyDisplacement()!=null&& item.getyDisplacement() >maxWy){
|
|
|
|
|
maxWy=item.getyDisplacement();
|
|
|
|
|
}
|
|
|
|
|
if(item.getzDisplacement()!=null&& item.getzDisplacement() >maxWy){
|
|
|
|
|
maxWy=item.getzDisplacement();
|
|
|
|
|
}
|
|
|
|
|
} catch (ParseException e) {
|
|
|
|
|
throw new RuntimeException(e);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
showLog(String.valueOf(deviceAlarmDataList.size()));
|
|
|
|
|
showLog("maxSpeed:"+String.valueOf(maxWy));
|
|
|
|
|
if(maxWy<2.5){
|
|
|
|
|
maxWy=2.5;
|
|
|
|
|
}else if(maxWy>=2.5&&maxWy<6){
|
|
|
|
|
maxWy=8;
|
|
|
|
|
}else if(maxWy>=6&&maxWy<10){
|
|
|
|
|
maxWy=15;
|
|
|
|
|
}else if(maxWy>=10&&maxWy<20){
|
|
|
|
|
maxWy=25;
|
|
|
|
|
}else if(maxWy>=20&&maxWy<30){
|
|
|
|
|
maxWy=35;
|
|
|
|
|
}else if(maxWy>=30&&maxWy<40){
|
|
|
|
|
maxWy=45;
|
|
|
|
|
}else if(maxWy>=40&&maxWy<50){
|
|
|
|
|
maxWy=55;
|
|
|
|
|
}else if(maxWy>=50&&maxWy<60){
|
|
|
|
|
maxWy=70;
|
|
|
|
|
}else if(maxWy>=60&&maxWy<75){
|
|
|
|
|
maxWy=90;
|
|
|
|
|
}else if(maxWy>=75&&maxWy<90){
|
|
|
|
|
maxWy=105;
|
|
|
|
|
}else if(maxWy>=90&&maxWy<105){
|
|
|
|
|
maxWy=120;
|
|
|
|
|
}else if(maxWy>=105&&maxWy<120){
|
|
|
|
|
maxWy=135;
|
|
|
|
|
}else{
|
|
|
|
|
maxWy=maxWy+50;
|
|
|
|
|
}
|
|
|
|
|
showLog("maxSpeed:"+String.valueOf(maxWy));
|
|
|
|
|
setDataWy(entriesXWy,entriesYWy,entriesZWy);
|
|
|
|
|
}
|
|
|
|
|
private void setDataWy(List<Entry> entriesXWy,List<Entry> entriesYWy,List<Entry> entriesZWy) {
|
|
|
|
|
// 清除所有数据
|
|
|
|
|
binding.linechart.clear();
|
|
|
|
|
binding.linechart.invalidate(); // 重绘视图
|
|
|
|
|
|
|
|
|
|
List<ILineDataSet> sets = new ArrayList<>();
|
|
|
|
|
|
|
|
|
|
String deviceNameLineX = deviceName+"X轴位移";
|
|
|
|
|
LineDataSet dataSet1 = new LineDataSet(entriesXWy, deviceNameLineX);
|
|
|
|
|
dataSet1.setValueTextSize(12);
|
|
|
|
|
dataSet1.setValueTextColor(Color.parseColor("#ff8000"));
|
|
|
|
|
dataSet1.setMode(LineDataSet.Mode.CUBIC_BEZIER);
|
|
|
|
|
dataSet1.setLineWidth(2);
|
|
|
|
|
//dataSet1.setCircleHoleRadius(3);
|
|
|
|
|
dataSet1.setDrawCircles(false); // 禁用圆点绘制
|
|
|
|
|
//dataSet1.enableDashedLine(5, 5, 0);
|
|
|
|
|
//dataSet1.setCircleColor(Color.parseColor("#ff8000"));
|
|
|
|
|
dataSet1.setColor(Color.parseColor("#ff8000"));
|
|
|
|
|
dataSet1.setDrawHighlightIndicators(false);
|
|
|
|
|
//dataSet1.setDrawFilled(true);
|
|
|
|
|
//dataSet1.setFillDrawable(new GradientDrawable(GradientDrawable.Orientation.TOP_BOTTOM, new int[]{Color.argb(127, 235, 170, 106), Color.parseColor("#00FA5544")}));
|
|
|
|
|
dataSet1.setLineWidth(2);
|
|
|
|
|
dataSet1.setDrawValues(false);
|
|
|
|
|
sets.add(dataSet1);
|
|
|
|
|
|
|
|
|
|
String deviceNameLineY = deviceName+"Y轴位移";
|
|
|
|
|
LineDataSet dataSet2 = new LineDataSet(entriesYWy, deviceNameLineY);
|
|
|
|
|
dataSet2.setValueTextSize(12);
|
|
|
|
|
dataSet2.setValueTextColor(Color.parseColor("#0080ff"));
|
|
|
|
|
dataSet2.setMode(LineDataSet.Mode.CUBIC_BEZIER);
|
|
|
|
|
dataSet2.setLineWidth(2);
|
|
|
|
|
//dataSet2.setCircleHoleRadius(3);
|
|
|
|
|
dataSet2.setDrawCircles(false); // 禁用圆点绘制
|
|
|
|
|
//dataSet2.enableDashedLine(5, 5, 0);
|
|
|
|
|
//dataSet2.setCircleColor(Color.parseColor("#0080ff"));
|
|
|
|
|
dataSet2.setColor(Color.parseColor("#0080ff"));
|
|
|
|
|
dataSet2.setDrawHighlightIndicators(false);
|
|
|
|
|
//dataSet2.setDrawFilled(true);
|
|
|
|
|
//dataSet2.setFillDrawable(new GradientDrawable(GradientDrawable.Orientation.TOP_BOTTOM, new int[]{Color.argb(127, 235, 170, 106), Color.parseColor("#00FA5544")}));
|
|
|
|
|
dataSet2.setLineWidth(2);
|
|
|
|
|
dataSet2.setDrawValues(false);
|
|
|
|
|
sets.add(dataSet2);
|
|
|
|
|
|
|
|
|
|
String deviceNameLineZ = deviceName+"Z轴位移";
|
|
|
|
|
LineDataSet dataSet3 = new LineDataSet(entriesZWy, deviceNameLineZ);
|
|
|
|
|
dataSet3.setValueTextSize(12);
|
|
|
|
|
dataSet3.setValueTextColor(Color.parseColor("#80ff00"));
|
|
|
|
|
dataSet3.setMode(LineDataSet.Mode.CUBIC_BEZIER);
|
|
|
|
|
dataSet3.setLineWidth(2);
|
|
|
|
|
//dataSet3.setCircleHoleRadius(3);//圆点大小
|
|
|
|
|
dataSet3.setDrawCircles(false); // 禁用圆点绘制
|
|
|
|
|
//dataSet3.enableDashedLine(5, 5, 0);//曲线间隔
|
|
|
|
|
//dataSet3.setCircleColor(Color.parseColor("#80ff00"));//圆点颜色
|
|
|
|
|
dataSet3.setColor(Color.parseColor("#80ff00"));//线颜色
|
|
|
|
|
dataSet3.setDrawHighlightIndicators(false);
|
|
|
|
|
//dataSet3.setDrawFilled(true);
|
|
|
|
|
//dataSet3.setFillDrawable(new GradientDrawable(GradientDrawable.Orientation.TOP_BOTTOM, new int[]{Color.argb(127, 235, 170, 106), Color.parseColor("#00FA5544")}));
|
|
|
|
|
dataSet3.setLineWidth(2);
|
|
|
|
|
dataSet3.setDrawValues(false);
|
|
|
|
|
sets.add(dataSet3);
|
|
|
|
|
|
|
|
|
|
LineData lineData = new LineData(sets);
|
|
|
|
|
binding.linechart.setData(lineData);
|
|
|
|
|
binding.linechart.invalidate();
|
|
|
|
|
|
|
|
|
|
XAxis xAxis = binding.linechart.getXAxis();
|
|
|
|
|
xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
|
|
|
|
|
xAxis.setAxisMinimum(1);//设置x轴最小
|
|
|
|
|
xAxis.setTextSize(12);
|
|
|
|
|
//xAxis.setTextColor(Color.parseColor("#FC863E"));
|
|
|
|
|
xAxis.setEnabled(true);//是否显示x轴是否禁用
|
|
|
|
|
xAxis.setDrawLabels(true); //设置x轴标签 即x轴上显示的数值
|
|
|
|
|
xAxis.setDrawGridLines(true);//是否设置x轴上每个点对应的线 即 竖向的网格线
|
|
|
|
|
xAxis.enableGridDashedLine(2, 2, 2); //竖线 虚线样式 lineLength控制虚线段的长度 spaceLength控制线之间的空间
|
|
|
|
|
xAxis.setLabelRotationAngle(40f);//设置x轴标签的旋转角度
|
|
|
|
|
String[] timearray = xLabelListDataWy.toArray(new String[xLabelListDataWy.size()]);
|
|
|
|
|
xAxis.setValueFormatter(new IndexAxisValueFormatter(timearray));
|
|
|
|
|
YAxis yAxis = binding.linechart.getAxisRight();
|
|
|
|
|
yAxis.setEnabled(false);
|
|
|
|
|
|
|
|
|
|
//设置左边Y轴的样式
|
|
|
|
|
YAxis axisLeft = binding.linechart.getAxisLeft();
|
|
|
|
|
axisLeft.setTextSize(12);
|
|
|
|
|
|
|
|
|
|
axisLeft.setAxisMinimum(0f);
|
|
|
|
|
axisLeft.setAxisMaximum((float) maxWy);
|
|
|
|
|
|
|
|
|
|
//设置字体颜色
|
|
|
|
|
//axisLeft.setTextColor(Color.parseColor("#FC863E"));
|
|
|
|
|
|
|
|
|
|
// float ratio = (float) xLabelListDataWy.size() / (float) 10;
|
|
|
|
|
// if (ratio < 1) {
|
|
|
|
|
// ratio = 1.0f;
|
|
|
|
|
// }
|
|
|
|
|
//显示的时候是按照多大的比率缩放显示,1f表示不放大缩小
|
|
|
|
|
//着重说明一下下面代码的用途
|
|
|
|
|
/**
|
|
|
|
|
@ -615,11 +980,11 @@ public class DeviceAlarmInfoLineChartActivity extends BaseViewBindingActivity<Ac
|
|
|
|
|
* 若不这样做的话,在当前页面重新加载数据时,你所设置的缩放比会失效,并且出现你意向不到的显示问题。
|
|
|
|
|
* 如果你的图表只在页面加载一次的话不需要这么做。
|
|
|
|
|
*/
|
|
|
|
|
binding.linechart.zoom(0f, 1f, 0, 0);
|
|
|
|
|
binding.linechart.zoom(ratio, 1f, 0, 0);
|
|
|
|
|
//设置为不可缩放
|
|
|
|
|
binding.linechart.setScaleEnabled(false);
|
|
|
|
|
//设置为可左右滑动
|
|
|
|
|
binding.linechart.setDragEnabled(true);
|
|
|
|
|
// binding.linechart.zoom(0f, 1f, 0, 0);
|
|
|
|
|
// binding.linechart.zoom(ratio, 1f, 0, 0);
|
|
|
|
|
// //设置为不可缩放
|
|
|
|
|
// binding.linechart.setScaleEnabled(false);
|
|
|
|
|
// //设置为可左右滑动
|
|
|
|
|
// binding.linechart.setDragEnabled(true);
|
|
|
|
|
}
|
|
|
|
|
}
|