|
|
@@ -1,5 +1,12 @@
|
|
|
package com.yingyang.workbenches.brainability
|
|
|
|
|
|
+import android.graphics.Color
|
|
|
+import android.text.TextUtils
|
|
|
+import com.github.mikephil.charting.components.XAxis
|
|
|
+import com.github.mikephil.charting.components.YAxis
|
|
|
+import com.github.mikephil.charting.data.Entry
|
|
|
+import com.github.mikephil.charting.data.LineData
|
|
|
+import com.github.mikephil.charting.data.LineDataSet
|
|
|
import com.yingyang.workbenches.databinding.FragmentBrainAbilityBinding
|
|
|
import com.yingyangfly.baselib.ext.toast
|
|
|
import com.yingyangfly.baselib.mvvm.BaseMVVMFragment
|
|
|
@@ -7,6 +14,7 @@ import com.yingyangfly.baselib.utils.RxBusCodes
|
|
|
import gorden.rxbus2.Subscribe
|
|
|
import gorden.rxbus2.ThreadMode
|
|
|
|
|
|
+
|
|
|
/**
|
|
|
* 脑能力值
|
|
|
*/
|
|
|
@@ -14,7 +22,7 @@ class BrainAbilityFragment :
|
|
|
BaseMVVMFragment<FragmentBrainAbilityBinding, BrainAbilityViewModel>() {
|
|
|
|
|
|
override fun initViews() {
|
|
|
-
|
|
|
+ initLineChart()
|
|
|
}
|
|
|
|
|
|
override fun initListener() {
|
|
|
@@ -33,7 +41,88 @@ class BrainAbilityFragment :
|
|
|
viewModel.getVariationTendencyByType(fail = {
|
|
|
it.toast()
|
|
|
}, success = {
|
|
|
-
|
|
|
+ if (it.isNullOrEmpty().not()) {
|
|
|
+ val lineData = LineData()
|
|
|
+ it?.forEach {
|
|
|
+ if (it.value.isNullOrEmpty().not()) {
|
|
|
+ val list = ArrayList<Entry>()
|
|
|
+ for (i in it.value.indices) {
|
|
|
+ val entry = Entry(i.toFloat(), it.value[i].mentalEnergyVal)
|
|
|
+ list.add(entry)
|
|
|
+ }
|
|
|
+ //两个参数
|
|
|
+ val lineDataSet = LineDataSet(list, it.name)
|
|
|
+ if (TextUtils.equals("定向力", it.name)) {
|
|
|
+ lineDataSet.color = Color.RED
|
|
|
+ } else {
|
|
|
+ lineDataSet.color = Color.BLUE
|
|
|
+ }
|
|
|
+ lineDataSet.setDrawCircleHole(false)
|
|
|
+ lineDataSet.setDrawCircles(false)
|
|
|
+ lineDataSet.mode = LineDataSet.Mode.CUBIC_BEZIER
|
|
|
+ //线条的宽度
|
|
|
+ lineDataSet.lineWidth = 2f
|
|
|
+ lineData.addDataSet(lineDataSet)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ binding.lineChart.data = lineData
|
|
|
+ binding.lineChart.invalidate()
|
|
|
+ }
|
|
|
})
|
|
|
}
|
|
|
+
|
|
|
+ private fun initLineChart() {
|
|
|
+ //设置线状图不显示描述
|
|
|
+ binding.lineChart.description = null
|
|
|
+ //Y 自下往上动态绘制 这里添加初始的动画效果
|
|
|
+ binding.lineChart.animateY(1000)
|
|
|
+ //获取柱状图的X轴
|
|
|
+ val xAxis: XAxis = binding.lineChart.xAxis
|
|
|
+ //下面两个是获取Y轴 包括左右
|
|
|
+ val axisLeft: YAxis = binding.lineChart.axisLeft
|
|
|
+ val axisRight: YAxis = binding.lineChart.axisRight
|
|
|
+ //设置XY轴
|
|
|
+ setAXis(xAxis, axisLeft, axisRight)
|
|
|
+ }
|
|
|
+
|
|
|
+ /*
|
|
|
+ * 设置折线图的XY轴
|
|
|
+ * */
|
|
|
+ private fun setAXis(axis: XAxis, axisLeft: YAxis, axisRight: YAxis) {
|
|
|
+ //设置X轴在图底部显示
|
|
|
+ axis.position = XAxis.XAxisPosition.BOTTOM
|
|
|
+ //设置X轴的宽度
|
|
|
+ axis.axisLineWidth = 1f
|
|
|
+ axis.axisLineColor = Color.BLACK
|
|
|
+ //起始0坐标开始
|
|
|
+ axis.axisMinimum = 0f
|
|
|
+ //设置X轴显示轴线
|
|
|
+ axis.setDrawAxisLine(true)
|
|
|
+ //x的表格线不显示
|
|
|
+ axis.setDrawGridLines(false)
|
|
|
+ //设置X轴显示
|
|
|
+ axis.isEnabled = true
|
|
|
+ //x轴显示字符串
|
|
|
+// axis.valueFormatter = object : ValueFormatter() {
|
|
|
+// override fun getFormattedValue(value: Float): String {
|
|
|
+// // private String[] mLableXHeartRate = new String[]{"初始","休息区","热身区","燃脂区","有氧运动","无氧运动","最大心率"}
|
|
|
+// return mLableXHeartRate.get(value.toInt())
|
|
|
+// }
|
|
|
+// }
|
|
|
+ axis.setLabelCount(7, true)
|
|
|
+ //y轴0刻度
|
|
|
+ axisLeft.axisMinimum = 30f
|
|
|
+ //不画网格线
|
|
|
+ axisLeft.setDrawGridLines(false)
|
|
|
+ axisLeft.axisLineColor = Color.BLACK
|
|
|
+ //显示Y轴轴线
|
|
|
+ axisLeft.setDrawAxisLine(true)
|
|
|
+ axisLeft.axisLineWidth = 1f
|
|
|
+ axisLeft.isEnabled = true
|
|
|
+ axisLeft.setDrawLabels(true)
|
|
|
+ //不显示右Y轴
|
|
|
+ axisRight.isEnabled = false
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
}
|