package com.casic.smarttube.utils import com.casic.smarttube.base.BaseApplication import com.casic.smarttube.model.LineChartEntryModel import com.casic.smarttube.widgets.LineChartMarkerView import com.github.mikephil.charting.charts.LineChart import com.github.mikephil.charting.data.LineData import com.github.mikephil.charting.data.LineDataSet import com.github.mikephil.charting.formatter.ValueFormatter import com.github.mikephil.charting.interfaces.datasets.ILineDataSet import com.pengxh.kt.lite.extensions.init /** * @author a203 * @description 各种图初始化配置类 * @date 2022/2/15 16:24 * @email 290677893@qq.com */ object ChartViewHelper { /** * 折线图 * */ fun setLineChartData( chart: LineChart, xAxisDate: MutableList<String>, entryModel: LineChartEntryModel ) { //每次加载数据都初始化折线图 chart.init(BaseApplication.obtainInstance()) if (entryModel.entries.isEmpty()) { chart.clearValues() return } //绑定数据 val lineDataSets: MutableList<ILineDataSet> = ArrayList() //设置数据 val dataSet = LineDataSet(entryModel.entries, entryModel.entries[0].data.toString()) dataSet.setDrawCircles(true) //线条颜色 dataSet.color = entryModel.lineColor //圆点颜色 dataSet.setCircleColor(entryModel.lineColor) dataSet.setDrawFilled(true) dataSet.fillColor = entryModel.lineColor dataSet.mode = LineDataSet.Mode.CUBIC_BEZIER lineDataSets.add(dataSet) val lineData = LineData(lineDataSets) lineData.setDrawValues(false) //添加自定义Marker val markerView = LineChartMarkerView(BaseApplication.obtainInstance()) markerView.chartView = chart markerView.setXAxisDate(xAxisDate) chart.marker = markerView //设置X轴坐标 val xAxis = chart.xAxis xAxis.labelRotationAngle = -45f xAxis.valueFormatter = object : ValueFormatter() { override fun getFormattedValue(value: Float): String { return xAxisDate[value.toInt()] } } chart.data = lineData chart.invalidate() } }