diff --git a/app/src/main/java/com/rehome/zhdcoa/ui/activity/DeviceAlarmInfoLineChartActivity.java b/app/src/main/java/com/rehome/zhdcoa/ui/activity/DeviceAlarmInfoLineChartActivity.java index b709780..c96b671 100644 --- a/app/src/main/java/com/rehome/zhdcoa/ui/activity/DeviceAlarmInfoLineChartActivity.java +++ b/app/src/main/java/com/rehome/zhdcoa/ui/activity/DeviceAlarmInfoLineChartActivity.java @@ -78,11 +78,20 @@ public class DeviceAlarmInfoLineChartActivity extends BaseViewBindingActivity xLabelListData = new ArrayList<>(); private ArrayList xLabelListDataAddSpeed = new ArrayList<>(); private ArrayList xLabelListDataSpeed = new ArrayList<>(); private ArrayList xLabelListDataWy = new ArrayList<>(); + private ArrayList xLabelListDataZlfl = new ArrayList<>(); + private ArrayList xLabelListDataZqpl = new ArrayList<>(); + private ArrayList xLabelListDataFreq = new ArrayList<>(); @Override protected ActivityDeviceAlarmInfoLineChartBinding getBinding() { @@ -233,6 +242,7 @@ public class DeviceAlarmInfoLineChartActivity extends BaseViewBindingActivity { @@ -244,6 +254,7 @@ public class DeviceAlarmInfoLineChartActivity extends BaseViewBindingActivity { @@ -255,6 +266,7 @@ public class DeviceAlarmInfoLineChartActivity extends BaseViewBindingActivity=1&&maxAddSpeed<2.5){ maxAddSpeed=2.5; }else if(maxAddSpeed>=2.5&&maxAddSpeed<4.5){ maxAddSpeed=5; @@ -603,7 +626,7 @@ public class DeviceAlarmInfoLineChartActivity extends BaseViewBindingActivity=2.5&&maxSpeed<4.5){ - maxSpeed=5; + if(maxAddSpeed<1){ + maxAddSpeed=1; + }else if(maxAddSpeed>=1&&maxAddSpeed<2.5){ + maxAddSpeed=2.5; + }else if(maxAddSpeed>=2.5&&maxAddSpeed<4.5){ + maxAddSpeed=5; }else if(maxSpeed>=4.5&&maxSpeed<6.5){ maxSpeed=7; }else if(maxSpeed>=6.5&&maxSpeed<9){ @@ -773,7 +798,7 @@ public class DeviceAlarmInfoLineChartActivity extends BaseViewBindingActivity entriesXZlfl = new ArrayList<>(); + List entriesYZlfl = new ArrayList<>(); + List entriesZZlfl = new ArrayList<>(); + for (int i = 0; i < deviceAlarmDataList.size(); i++) { + try { + DeviceAlarmInfoLineChartBean.DeviceVibrationMonitoringData item = deviceAlarmDataList.get(i); + + entriesXZlfl.add(new Entry(i, Float.parseFloat(item.getxDcComponent().toString()))); + entriesYZlfl.add(new Entry(i, Float.parseFloat(item.getyDcComponent().toString()))); + entriesZZlfl.add(new Entry(i, Float.parseFloat(item.getzDcComponent().toString()))); + + Date date = sdf.parse(item.getDeviceTime()); + if(date != null){ + Calendar calendar = Calendar.getInstance(); + calendar.setTime(date); + xLabelListDataZlfl.add(sdfHourMinute.format(calendar.getTime())); + } + if(item.getxDcComponent()!=null&& item.getxDcComponent() >maxZlfl){ + maxZlfl=item.getxDcComponent(); + } + if(item.getyDcComponent()!=null&& item.getyDcComponent() >maxZlfl){ + maxZlfl=item.getyDcComponent(); + } + if(item.getzDcComponent()!=null&& item.getzDcComponent() >maxZlfl){ + maxZlfl=item.getzDcComponent(); + } + if(item.getxDcComponent()!=null&& item.getxDcComponent() < minZlfl){ + minZlfl=item.getxDcComponent(); + } + if(item.getyDcComponent()!=null&& item.getyDcComponent() < minZlfl){ + minZlfl=item.getyDcComponent(); + } + if(item.getzDcComponent()!=null&& item.getzDcComponent() < minZlfl){ + minZlfl=item.getzDcComponent(); + } + } catch (ParseException e) { + throw new RuntimeException(e); + } + } + showLog(String.valueOf(deviceAlarmDataList.size())); + showLog("maxZlfl:"+String.valueOf(maxZlfl)); + showLog("minZlfl:"+String.valueOf(minZlfl)); + if(maxZlfl<2){ + maxZlfl=2; + }else if(maxZlfl>=2&&maxZlfl<4){ + maxZlfl=4; + }else if(maxZlfl>=4&&maxZlfl<6){ + maxZlfl=6; + }else if(maxZlfl>=6&&maxZlfl<8){ + maxZlfl=8; + }else if(maxZlfl>=8&&maxZlfl<10){ + maxZlfl=12; + }else if(maxZlfl>=12&&maxZlfl<20){ + maxZlfl=20; + }else if(maxZlfl>=20&&maxZlfl<40){ + maxZlfl=45; + }else if(maxZlfl>=40&&maxZlfl<60){ + maxZlfl=70; + }else if(maxZlfl>=60&&maxZlfl<75){ + maxZlfl=90; + }else if(maxZlfl>=75&&maxZlfl<90){ + maxZlfl=105; + }else if(maxZlfl>=90&&maxZlfl<105){ + maxZlfl=120; + }else if(maxZlfl>=105&&maxZlfl<120){ + maxZlfl=135; + }else{ + maxZlfl=maxZlfl+50; + } + + if(minZlfl<0&&minZlfl>-2){ + minZlfl=-2; + }else if(minZlfl<=-2&&minZlfl>-4){ + minZlfl=-4; + }else if(minZlfl<=-4&&minZlfl>-6){ + minZlfl=-6; + }else if(minZlfl<=-6&&minZlfl>-8){ + minZlfl=-8; + }else if(minZlfl<=-8&&minZlfl>-10){ + minZlfl=-12; + }else if(minZlfl<=-10&&minZlfl>-12){ + minZlfl=-14; + }else if(minZlfl<=-12&&minZlfl>-14){ + minZlfl=-16; + }else{ + minZlfl=minZlfl-10; + } + showLog("maxZlfl:"+String.valueOf(maxZlfl)); + showLog("minZlfl:"+String.valueOf(minZlfl)); + setDataZlfl(entriesXZlfl,entriesYZlfl,entriesZZlfl); + } + private void setDataZlfl(List entriesXZlfl,List entriesYZlfl,List entriesZZlfl) { + // 清除所有数据 + binding.linechart.clear(); + binding.linechart.invalidate(); // 重绘视图 + + List sets = new ArrayList<>(); + + showLog(GsonString(entriesXZlfl)); + showLog(GsonString(entriesYZlfl)); + showLog(GsonString(entriesZZlfl)); + + String deviceNameLineX = deviceName+"X轴直流分量"; + LineDataSet dataSet1 = new LineDataSet(entriesXZlfl, 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(entriesYZlfl, 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(entriesZZlfl, 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(0);//设置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 = xLabelListDataZlfl.toArray(new String[xLabelListDataZlfl.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((float) minZlfl); + axisLeft.setAxisMaximum((float) maxZlfl); + + //设置字体颜色 + //axisLeft.setTextColor(Color.parseColor("#FC863E")); + +// float ratio = (float) xLabelListDataZlfl.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 renderZqpl(){ + xLabelListDataZqpl.clear(); + maxZqpl=0; + List entriesXZqpl = new ArrayList<>(); + List entriesYZqpl = new ArrayList<>(); + List entriesZZqpl = new ArrayList<>(); + for (int i = 0; i < deviceAlarmDataList.size(); i++) { + try { + DeviceAlarmInfoLineChartBean.DeviceVibrationMonitoringData item = deviceAlarmDataList.get(i); + + entriesXZqpl.add(new Entry(i, Float.parseFloat(item.getxFrequency().toString()))); + entriesYZqpl.add(new Entry(i, Float.parseFloat(item.getyFrequency().toString()))); + entriesZZqpl.add(new Entry(i, Float.parseFloat(item.getzFrequency().toString()))); + + Date date = sdf.parse(item.getDeviceTime()); + if(date != null){ + Calendar calendar = Calendar.getInstance(); + calendar.setTime(date); + xLabelListDataZqpl.add(sdfHourMinute.format(calendar.getTime())); + } + if(item.getxFrequency()!=null&& item.getxFrequency() >maxZqpl){ + maxZqpl=item.getxFrequency(); + } + if(item.getyFrequency()!=null&& item.getyFrequency() >maxZqpl){ + maxZqpl=item.getyFrequency(); + } + if(item.getzFrequency()!=null&& item.getzFrequency() >maxZqpl){ + maxZqpl=item.getzFrequency(); + } + } catch (ParseException e) { + throw new RuntimeException(e); + } + } + showLog(String.valueOf(deviceAlarmDataList.size())); + showLog("maxZqpl:"+String.valueOf(maxZqpl)); + if(maxZqpl<2){ + maxZqpl=2; + }else if(maxZqpl>=2&&maxZqpl<4){ + maxZqpl=4; + }else if(maxZqpl>=4&&maxZqpl<6){ + maxZqpl=6; + }else if(maxZqpl>=6&&maxZqpl<8){ + maxZqpl=8; + }else if(maxZqpl>=8&&maxZqpl<10){ + maxZqpl=12; + }else if(maxZqpl>=12&&maxZqpl<20){ + maxZqpl=20; + }else if(maxZqpl>=20&&maxZqpl<40){ + maxZqpl=45; + }else if(maxZqpl>=40&&maxZqpl<60){ + maxZqpl=70; + }else if(maxZqpl>=60&&maxZqpl<75){ + maxZqpl=90; + }else if(maxZqpl>=75&&maxZqpl<90){ + maxZqpl=105; + }else if(maxZqpl>=90&&maxZqpl<105){ + maxZqpl=120; + }else if(maxZqpl>=105&&maxZqpl<120){ + maxZqpl=135; + }else{ + maxZqpl=maxZqpl+100; + } + + showLog("maxZqpl:"+String.valueOf(maxZqpl)); + renderDataZqpl(entriesXZqpl,entriesYZqpl,entriesZZqpl); + } + private void renderDataZqpl(List entriesXZqpl,List entriesYZqpl,List entriesZZqpl) { + // 清除所有数据 + binding.linechart.clear(); + binding.linechart.invalidate(); // 重绘视图 + + List sets = new ArrayList<>(); + + showLog(GsonString(entriesXZqpl)); + showLog(GsonString(entriesYZqpl)); + showLog(GsonString(entriesZZqpl)); + + String deviceNameLineX = deviceName+"X轴最强频率"; + LineDataSet dataSet1 = new LineDataSet(entriesXZqpl, 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(entriesYZqpl, 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(entriesZZqpl, 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(0);//设置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 = xLabelListDataZqpl.toArray(new String[xLabelListDataZqpl.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) maxZqpl); + + //设置字体颜色 + //axisLeft.setTextColor(Color.parseColor("#FC863E")); + +// float ratio = (float) xLabelListDataZqpl.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 renderFreq(){ + xLabelListDataFreq.clear(); + maxFreq=0; + List entriesXFreq = new ArrayList<>(); + List entriesYFreq = new ArrayList<>(); + List entriesZFreq = new ArrayList<>(); + for (int i = 0; i < deviceAlarmDataList.size(); i++) { + try { + DeviceAlarmInfoLineChartBean.DeviceVibrationMonitoringData item = deviceAlarmDataList.get(i); + + entriesXFreq.add(new Entry(i, Float.parseFloat(item.getxFreq().toString()))); + entriesYFreq.add(new Entry(i, Float.parseFloat(item.getyFreq().toString()))); + entriesZFreq.add(new Entry(i, Float.parseFloat(item.getzFreq().toString()))); + + Date date = sdf.parse(item.getDeviceTime()); + if(date != null){ + Calendar calendar = Calendar.getInstance(); + calendar.setTime(date); + xLabelListDataFreq.add(sdfHourMinute.format(calendar.getTime())); + } + if(item.getxFreq()!=null&& item.getxFreq() >maxFreq){ + maxFreq=item.getxFreq(); + } + if(item.getyFreq()!=null&& item.getyFreq() >maxFreq){ + maxFreq=item.getyFreq(); + } + if(item.getzFreq()!=null&& item.getzFreq() >maxFreq){ + maxFreq=item.getzFreq(); + } + } catch (ParseException e) { + throw new RuntimeException(e); + } + } + showLog(String.valueOf(deviceAlarmDataList.size())); + showLog("maxFreq:"+String.valueOf(maxFreq)); + if(maxFreq<2){ + maxFreq=2; + }else if(maxFreq>=2&&maxFreq<4){ + maxFreq=4; + }else if(maxFreq>=4&&maxFreq<6){ + maxFreq=6; + }else if(maxFreq>=6&&maxFreq<8){ + maxFreq=8; + }else if(maxFreq>=8&&maxFreq<10){ + maxFreq=12; + }else if(maxFreq>=12&&maxFreq<20){ + maxFreq=20; + }else if(maxFreq>=20&&maxFreq<40){ + maxFreq=45; + }else if(maxFreq>=40&&maxFreq<60){ + maxFreq=70; + }else if(maxFreq>=60&&maxFreq<75){ + maxFreq=90; + }else if(maxFreq>=75&&maxFreq<90){ + maxFreq=105; + }else if(maxFreq>=90&&maxFreq<105){ + maxFreq=120; + }else if(maxFreq>=105&&maxFreq<120){ + maxFreq=135; + }else if(maxFreq>=120&&maxFreq<200){ + maxFreq=200; + }else if(maxFreq>=200&&maxFreq<300){ + maxFreq=300; + }else if(maxFreq>=300&&maxFreq<400){ + maxFreq=400; + }else if(maxFreq>=400&&maxFreq<500){ + maxFreq=500; + }else{ + maxFreq=maxFreq+500; + } + + showLog("maxFreq:"+String.valueOf(maxFreq)); + renderDataFreq(entriesXFreq,entriesYFreq,entriesZFreq); + } + private void renderDataFreq(List entriesXFreq,List entriesYFreq,List entriesZFreq) { + // 清除所有数据 + binding.linechart.clear(); + binding.linechart.invalidate(); // 重绘视图 + + List sets = new ArrayList<>(); + + showLog(GsonString(entriesXFreq)); + showLog(GsonString(entriesYFreq)); + showLog(GsonString(entriesZFreq)); + + String deviceNameLineX = deviceName+"X轴FREQ对应幅值"; + LineDataSet dataSet1 = new LineDataSet(entriesXFreq, 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轴FREQ对应幅值"; + LineDataSet dataSet2 = new LineDataSet(entriesYFreq, 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轴FREQ对应幅值"; + LineDataSet dataSet3 = new LineDataSet(entriesZFreq, 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(0);//设置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 = xLabelListDataFreq.toArray(new String[xLabelListDataFreq.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) maxFreq); + + //设置字体颜色 + //axisLeft.setTextColor(Color.parseColor("#FC863E")); + +// float ratio = (float) xLabelListDataZqpl.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); } } \ No newline at end of file