diff --git a/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt b/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt new file mode 100644 index 0000000..7532687 --- /dev/null +++ b/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt @@ -0,0 +1,48 @@ +package com.casic.smarttube.extensions + +import com.casic.smarttube.R +import com.casic.smarttube.base.BaseApplication +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.LineChart +import com.github.mikephil.charting.components.Legend +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.dp2px + +fun LineChart.init() { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.orangeTextColor) + this.getPaint(Chart.PAINT_INFO).textSize = 14f.dp2px(BaseApplication.obtainInstance()).toFloat() + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.animateY(1200, Easing.EaseInOutQuad) + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f + this.isScaleXEnabled = true //X轴可缩放 + this.isScaleYEnabled = false //Y轴不可缩放 + //设置x轴 + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.mainTextColor.convertColor(BaseApplication.obtainInstance()) + xAxis.textSize = 10f + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.granularity = 1f //禁止放大后x轴标签重绘 + xAxis.position = XAxis.XAxisPosition.BOTTOM + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //去掉描述 + this.description.isEnabled = false + //设置图例 + val legend = this.legend + legend.orientation = Legend.LegendOrientation.HORIZONTAL + legend.verticalAlignment = Legend.LegendVerticalAlignment.BOTTOM + legend.horizontalAlignment = Legend.LegendHorizontalAlignment.CENTER + //图例是否自动换行 + legend.isWordWrapEnabled = true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt b/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt new file mode 100644 index 0000000..7532687 --- /dev/null +++ b/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt @@ -0,0 +1,48 @@ +package com.casic.smarttube.extensions + +import com.casic.smarttube.R +import com.casic.smarttube.base.BaseApplication +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.LineChart +import com.github.mikephil.charting.components.Legend +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.dp2px + +fun LineChart.init() { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.orangeTextColor) + this.getPaint(Chart.PAINT_INFO).textSize = 14f.dp2px(BaseApplication.obtainInstance()).toFloat() + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.animateY(1200, Easing.EaseInOutQuad) + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f + this.isScaleXEnabled = true //X轴可缩放 + this.isScaleYEnabled = false //Y轴不可缩放 + //设置x轴 + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.mainTextColor.convertColor(BaseApplication.obtainInstance()) + xAxis.textSize = 10f + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.granularity = 1f //禁止放大后x轴标签重绘 + xAxis.position = XAxis.XAxisPosition.BOTTOM + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //去掉描述 + this.description.isEnabled = false + //设置图例 + val legend = this.legend + legend.orientation = Legend.LegendOrientation.HORIZONTAL + legend.verticalAlignment = Legend.LegendVerticalAlignment.BOTTOM + legend.horizontalAlignment = Legend.LegendHorizontalAlignment.CENTER + //图例是否自动换行 + legend.isWordWrapEnabled = true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt index 44bdee7..2b45002 100644 --- a/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt +++ b/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt @@ -1,6 +1,7 @@ package com.casic.smarttube.utils import com.casic.smarttube.base.BaseApplication +import com.casic.smarttube.extensions.init import com.casic.smarttube.model.LineChartEntryModel import com.casic.smarttube.widgets.LineChartMarkerView import com.github.mikephil.charting.charts.LineChart @@ -8,7 +9,6 @@ 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 /** @@ -25,7 +25,7 @@ chart: LineChart, xAxisDate: MutableList, entryModel: LineChartEntryModel ) { //每次加载数据都初始化折线图 - chart.init(BaseApplication.obtainInstance()) + chart.init() if (entryModel.entries.isEmpty()) { chart.clearValues() return @@ -53,7 +53,6 @@ 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()]