package com.casic.smarttube.utils import com.casic.smarttube.R import com.casic.smarttube.extensions.initConfig import com.casic.smarttube.widgets.LineChartMarkerView import com.github.mikephil.charting.charts.LineChart import com.github.mikephil.charting.data.Entry 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.convertColor /** * @author a203 * @description 各种图初始化配置类 * @date 2022/2/15 16:24 * @email 290677893@qq.com */ object ChartViewHelper { /** * 折线图 * */ fun setLineChartData(chart: LineChart, xAxisDate: ArrayList<String>, entries: List<Entry>) { //每次加载数据都初始化折线图 chart.initConfig() //绑定数据 val lineDataSets: MutableList<ILineDataSet> = ArrayList() //设置数据 val dataSet = LineDataSet(entries, entries[0].data.toString()) dataSet.setDrawCircles(false) //线条颜色 dataSet.color = R.color.redTextColor.convertColor(chart.context) dataSet.setDrawFilled(false) dataSet.mode = LineDataSet.Mode.LINEAR lineDataSets.add(dataSet) val lineData = LineData(lineDataSets) lineData.setDrawValues(false) //添加自定义Marker val markerView = LineChartMarkerView(chart.context) markerView.chartView = chart markerView.setXAxisDate(xAxisDate) chart.marker = markerView //设置X轴坐标 val xAxis = chart.xAxis xAxis.valueFormatter = object : ValueFormatter() { override fun getFormattedValue(value: Float): String { return if (xAxisDate.size == 1) { xAxisDate[0] } else { xAxisDate[value.toInt()] } } } chart.data = lineData chart.invalidate() } }