package com.mm.android.deviceaddmodule.mobilecommon.widget.linechart; import com.mm.android.deviceaddmodule.mobilecommon.widget.linechart.adapter.DayHighLightValueAdapter; import com.mm.android.deviceaddmodule.mobilecommon.widget.linechart.adapter.DefaultValueAdapter; import com.mm.android.deviceaddmodule.mobilecommon.widget.linechart.adapter.MonthHighLightValueAdapter; import com.mm.android.deviceaddmodule.mobilecommon.widget.linechart.adapter.ReportValueAdapter; import com.mm.android.deviceaddmodule.mobilecommon.widget.linechart.adapter.WeekHighLightValueAdapter; import com.mm.android.deviceaddmodule.mobilecommon.widget.linechart.adapter.YearHighLightValueAdapter; import com.mm.android.deviceaddmodule.mobilecommon.widget.linechart.charts.LineChart; import com.mm.android.deviceaddmodule.mobilecommon.widget.linechart.data.Entry; import com.mm.android.deviceaddmodule.mobilecommon.widget.linechart.data.Line; import com.mm.android.deviceaddmodule.mobilecommon.widget.linechart.data.Lines; import com.mm.android.deviceaddmodule.mobilecommon.widget.linechart.model.Axis; import com.mm.android.deviceaddmodule.mobilecommon.widget.linechart.model.HighLight; import com.mm.android.deviceaddmodule.mobilecommon.widget.linechart.model.XAxis; import com.mm.android.deviceaddmodule.mobilecommon.widget.linechart.model.YAxis; import com.mm.android.deviceaddmodule.mobilecommon.widget.linechart.utils.Utils; import java.util.ArrayList; import java.util.List; public class ChartHelper { private static final int dayXCount = 24; private static final int weekXCount = 7; private static final int monthXCount = 31; private static final int yearXCount = 12; private LineChart _lineChart; private int linesNumber=0; private String duration; private List lineEntities; public ChartHelper(LineChart _lineChart) { this._lineChart = _lineChart; } public void displayChart() { _lineChart.setCanX_drag(true);// x 方向可以拖拽 _lineChart.setCanY_drag(false);// y 方向不可拖拽 _lineChart.setCanX_zoom(true);// x 方向可以缩放 _lineChart.setCanY_zoom(false);// y 方向不可用缩放 _lineChart.setZoom_alone(false);// 设置在 x,y方向上是否要独立缩放 setAxis(_lineChart); setNumberData(); setHighLight(_lineChart); } private void setHighLight(LineChart lineChart) { // 高亮 HighLight highLight = lineChart.get_HighLight(); highLight.setEnable(!(linesNumber > 1));// 启用高亮显示 默认为启用状态 highLight.setDrawHint(false); switch (duration) { case "day": highLight.setxValueAdapter(new DayHighLightValueAdapter()); break; case "week": highLight.setxValueAdapter(new WeekHighLightValueAdapter()); break; case "month": highLight.setxValueAdapter(new MonthHighLightValueAdapter()); break; case "year": highLight.setxValueAdapter(new YearHighLightValueAdapter()); break; } } private void setAxis(LineChart lineChart) { duration = getDuration(); if (duration == null) { return; } // // x,y轴上的单位 XAxis xAxis = lineChart.get_XAxis(); xAxis.set_labelCountAdvice(4); xAxis.set_ValueAdapter(new DefaultValueAdapter(0)); xAxis.setLabelTextSize(Utils.sp2px(12)); YAxis yAxis = lineChart.get_YAxis(); yAxis.set_labelCountAdvice(6); yAxis.setCalWay(Axis.CalWay.perfect); yAxis.set_ValueAdapter(new ReportValueAdapter()); yAxis.setLabelTextSize(Utils.sp2px(12)); switch (duration) { case "day": xAxis.setCalWay(Axis.CalWay.lc_day); break; case "week": xAxis.setCalWay(Axis.CalWay.lc_week); break; case "month": xAxis.setCalWay(Axis.CalWay.lc_month); break; case "year": xAxis.setCalWay(Axis.CalWay.lc_year); break; } _lineChart.set_paddingLeft(0); _lineChart.set_paddingBottom(0); } private void setNumberData() { linesNumber = 0; Lines lines = new Lines(); lines.setXCustomMaxMin(false); for(int i = 0; i < lineEntities.size(); i++) { LineEntity lineEntity = lineEntities.get(i); List listEntriesNow = new ArrayList<>(); if (lineEntity.isVisible()) { int count = dayXCount; switch (duration) { case "day": count = dayXCount; break; case "week": count = weekXCount; break; case "month": count = monthXCount; break; case "year": count = yearXCount; break; } long[] data = lineEntity.getData(); for(int j = 0; j < count; j++) { if (data.length > j) { listEntriesNow.add(new Entry(j, data[j])); } } Line line = new Line(); line.setLineColor(lineEntity.getColor()); line.setEntries(listEntriesNow); lines.addLine(line); linesNumber++; setHighLight(_lineChart); } } _lineChart.setLines(lines); } public String getDuration() { return duration; } public void setDuration(String duration) { this.duration = duration; } public void setLineEntities(List lineEntities) { this.lineEntities = lineEntities; } }