曲线图-测振测温设备 速度、位移图表完成

master
wenfei 1 month ago
parent 3543b69fbd
commit 7dde0593ef

@ -1045,7 +1045,7 @@
android:windowSoftInputMode="adjustResize|stateHidden" />
<activity
android:name=".ui.activity.BaseWebActivity"
android:screenOrientation="landscape"
android:screenOrientation="portrait"
android:windowSoftInputMode="adjustResize|stateHidden" />
<activity
android:name=".ui.activity.BeiAnWebActivity"

@ -8,6 +8,8 @@ import com.rehome.zhdcoa.base.BaseActivityOaToolbarViewBinding
import com.rehome.zhdcoa.bean.DeviceAlarmListResultBean
import com.rehome.zhdcoa.databinding.ActivityDeviceAlarmInfoDetailBinding
import com.rehome.zhdcoa.utils.GsonUtils
import java.math.RoundingMode
import java.text.DecimalFormat
class DeviceAlarmInfoDetailActivity : BaseActivityOaToolbarViewBinding<ActivityDeviceAlarmInfoDetailBinding>() {
private var deviceCode:String?=null
@ -104,21 +106,23 @@ class DeviceAlarmInfoDetailActivity : BaseActivityOaToolbarViewBinding<ActivityD
binding.itemWdbjz.llAll.visibility= View.GONE
binding.llZhendong.visibility= View.VISIBLE
if(data!=null){
val df: DecimalFormat = DecimalFormat("#.##")
df.setRoundingMode(RoundingMode.DOWN) // 设置截断模式
val result: Double = df.format(data.getxDisplacement()).toDouble()
//位移
binding.itemXwy.llAll.visibility= View.VISIBLE //x位移
binding.itemXwy.tvBjz.text= String.format("%.2f", data.getxDisplacement()) + "um" //x位移
binding.itemXwy.tvBjz.text= String.format("%.2f", df.format(data.getxDisplacement()).toDouble()) + "um" //x位移
binding.itemYwy.llAll.visibility= View.VISIBLE //y位移
binding.itemYwy.tvBjz.text= String.format("%.2f", data.getyDisplacement()) + "um" //y位移
binding.itemYwy.tvBjz.text= String.format("%.2f", df.format(data.getyDisplacement()).toDouble()) + "um" //y位移
binding.itemZwy.llAll.visibility= View.VISIBLE //z位移
binding.itemZwy.tvBjz.text= String.format("%.2f", data.getzDisplacement()) + "um" //z位移
binding.itemZwy.tvBjz.text= String.format("%.2f", df.format(data.getzDisplacement()).toDouble()) + "um" //z位移
//速度
binding.itemXsd.llAll.visibility= View.VISIBLE //x速度
binding.itemXsd.tvBjz.text= String.format("%.2f", data.getxSpeed()) + "um" //x速度
binding.itemXsd.tvBjz.text= String.format("%.2f", df.format(data.getxSpeed()).toDouble()) + "mm/s" //x速度
binding.itemYsd.llAll.visibility= View.VISIBLE //y速度
binding.itemYsd.tvBjz.text= String.format("%.2f", data.getySpeed()) + "um" //y速度
binding.itemYsd.tvBjz.text= String.format("%.2f", df.format(data.getySpeed()).toDouble()) + "mm/s" //y速度
binding.itemZsd.llAll.visibility= View.VISIBLE //z速度
binding.itemZsd.tvBjz.text= String.format("%.2f", data.getzSpeed()) + "um" //z速度
binding.itemZsd.tvBjz.text= String.format("%.2f", df.format(data.getzSpeed()).toDouble()) + "mm/s" //z速度
if(params!=null){
//温度报警值
@ -134,13 +138,13 @@ class DeviceAlarmInfoDetailActivity : BaseActivityOaToolbarViewBinding<ActivityD
//binding.itemWybjz.tvBjz.text= String.format("%.0f", params.dpmAlarmMinValue) + "um"
binding.itemWybjz.tvBjz.text= getResultDeviceValue(String.format("%.2f", params.dpmAlarmMinValue)) + "um"
if(data.getxDisplacement()>params.dpmAlarmMinValue){
binding.itemXwy.tvBjz.setTextColor(Color.parseColor("#e9260f"))
binding.itemXwy.tvBjz.setTextColor(Color.parseColor("#ff8000"))
}
if(data.getyDisplacement()>params.dpmAlarmMinValue){
binding.itemYwy.tvBjz.setTextColor(Color.parseColor("#e9260f"))
binding.itemYwy.tvBjz.setTextColor(Color.parseColor("#ff8000"))
}
if(data.getzDisplacement()>params.dpmAlarmMinValue){
binding.itemZwy.tvBjz.setTextColor(Color.parseColor("#e9260f"))
binding.itemZwy.tvBjz.setTextColor(Color.parseColor("#ff8000"))
}
}else{
binding.itemWybjz.llAll.visibility= View.GONE
@ -168,13 +172,13 @@ class DeviceAlarmInfoDetailActivity : BaseActivityOaToolbarViewBinding<ActivityD
//binding.itemSdbjz.tvBjz.text= String.format("%.0f", params.spdAlarmMinValue) + "mm/s"
binding.itemSdbjz.tvBjz.text= getResultDeviceValue(String.format("%.2f", params.spdAlarmMinValue)) + "mm/s"
if(data.getxSpeed()>params.spdAlarmMinValue){
binding.itemXsd.tvBjz.setTextColor(Color.parseColor("#e9260f"))
binding.itemXsd.tvBjz.setTextColor(Color.parseColor("#ff8000"))
}
if(data.getySpeed()>params.spdAlarmMinValue){
binding.itemYsd.tvBjz.setTextColor(Color.parseColor("#e9260f"))
binding.itemYsd.tvBjz.setTextColor(Color.parseColor("#ff8000"))
}
if(data.getzSpeed()>params.spdAlarmMinValue){
binding.itemZsd.tvBjz.setTextColor(Color.parseColor("#e9260f"))
binding.itemZsd.tvBjz.setTextColor(Color.parseColor("#ff8000"))
}
}else{
binding.itemSdbjz.llAll.visibility= View.GONE
@ -205,6 +209,8 @@ class DeviceAlarmInfoDetailActivity : BaseActivityOaToolbarViewBinding<ActivityD
// 检查是否末尾有0且小数点后有两位数字如果是则去掉末尾的0和可能的小数点
var result = ""
if (valueStr.endsWith(".00")) {
result = valueStr.substring(0, valueStr.length - 3) // 去掉".0"
}else if (valueStr.endsWith(".0")) {
result = valueStr.substring(0, valueStr.length - 2) // 去掉".0"
} else {
if (valueStr.endsWith("0")) {

@ -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);
}
}

@ -241,8 +241,8 @@ class LoginActivity : BaseActivityOaToolbarViewBinding<ActivityLoginBinding>() {
if (isApkInDebug(context)) {
// 管理员
// binding.etUsername.setText("ZHPS_Admin")
// binding.etPassword.setText("Rehome.zhps@996")
binding.etUsername.setText("ZHPS_Admin")
binding.etPassword.setText("Rehome.zhps@996")
// binding.etUsername.setText("310249")
// binding.etPassword.setText("GZgs#@0249")

Loading…
Cancel
Save