Przeglądaj źródła

1.添加脑能力值功能

王鹏鹏 2 lat temu
rodzic
commit
96e28d44ad

+ 1 - 0
workbenches/build.gradle

@@ -22,6 +22,7 @@ dependencies {
     implementation(rootProject.ext.androidx.material)
     implementation(rootProject.ext.androidx.material)
     implementation(rootProject.ext.androidx.constraintlayout)
     implementation(rootProject.ext.androidx.constraintlayout)
     implementation(rootProject.ext.dependencies.Zxing)
     implementation(rootProject.ext.dependencies.Zxing)
+    implementation(rootProject.ext.dependencies.MPAndroidChart)
     //RxJava2.0
     //RxJava2.0
     implementation(rootProject.ext.dependencies.rxjava)
     implementation(rootProject.ext.dependencies.rxjava)
     implementation(rootProject.ext.dependencies.rxandroid)
     implementation(rootProject.ext.dependencies.rxandroid)

+ 43 - 0
workbenches/src/main/java/com/yingyang/workbenches/adapter/BrainAbilityTypeAdapter.kt

@@ -0,0 +1,43 @@
+package com.yingyang.workbenches.adapter
+
+import com.yingyang.workbenches.R
+import com.yingyang.workbenches.databinding.ItemBrainAbilityTypeBinding
+import com.yingyang.workbenches.entity.VariationTendencyByTypeBean
+import com.yingyangfly.baselib.adapter.BaseDataBindingAdapter
+
+/**
+ * 脑能力值类型
+ */
+class BrainAbilityTypeAdapter(override val layoutId: Int = R.layout.item_brain_ability_type) :
+    BaseDataBindingAdapter<VariationTendencyByTypeBean, ItemBrainAbilityTypeBinding>() {
+    override fun onBindViewHolder(
+        binding: ItemBrainAbilityTypeBinding,
+        item: VariationTendencyByTypeBean,
+        position: Int
+    ) {
+        when (position) {
+            0 -> {
+                binding.tvType.setBackgroundResource(R.drawable.bg_brain_ability_type_one)
+            }
+            1 -> {
+                binding.tvType.setBackgroundResource(R.drawable.bg_brain_ability_type_two)
+            }
+            2 -> {
+                binding.tvType.setBackgroundResource(R.drawable.bg_brain_ability_type_three)
+            }
+            3 -> {
+                binding.tvType.setBackgroundResource(R.drawable.bg_brain_ability_type_four)
+            }
+            4 -> {
+                binding.tvType.setBackgroundResource(R.drawable.bg_brain_ability_type_five)
+            }
+            5 -> {
+                binding.tvType.setBackgroundResource(R.drawable.bg_brain_ability_type_six)
+            }
+            else -> {
+                binding.tvType.setBackgroundResource(R.drawable.bg_brain_ability_type_seven)
+            }
+        }
+        binding.data = item
+    }
+}

+ 22 - 10
workbenches/src/main/java/com/yingyang/workbenches/brainability/BrainAbilityFragment.kt

@@ -2,12 +2,16 @@ package com.yingyang.workbenches.brainability
 
 
 import android.graphics.Color
 import android.graphics.Color
 import android.text.TextUtils
 import android.text.TextUtils
+import androidx.recyclerview.widget.LinearLayoutManager
+import androidx.recyclerview.widget.RecyclerView
 import com.github.mikephil.charting.components.XAxis
 import com.github.mikephil.charting.components.XAxis
 import com.github.mikephil.charting.components.YAxis
 import com.github.mikephil.charting.components.YAxis
 import com.github.mikephil.charting.data.Entry
 import com.github.mikephil.charting.data.Entry
 import com.github.mikephil.charting.data.LineData
 import com.github.mikephil.charting.data.LineData
 import com.github.mikephil.charting.data.LineDataSet
 import com.github.mikephil.charting.data.LineDataSet
+import com.yingyang.workbenches.adapter.BrainAbilityTypeAdapter
 import com.yingyang.workbenches.databinding.FragmentBrainAbilityBinding
 import com.yingyang.workbenches.databinding.FragmentBrainAbilityBinding
+import com.yingyang.workbenches.entity.VariationTendencyByTypeBean
 import com.yingyangfly.baselib.ext.toast
 import com.yingyangfly.baselib.ext.toast
 import com.yingyangfly.baselib.mvvm.BaseMVVMFragment
 import com.yingyangfly.baselib.mvvm.BaseMVVMFragment
 import com.yingyangfly.baselib.utils.RxBusCodes
 import com.yingyangfly.baselib.utils.RxBusCodes
@@ -21,7 +25,17 @@ import gorden.rxbus2.ThreadMode
 class BrainAbilityFragment :
 class BrainAbilityFragment :
     BaseMVVMFragment<FragmentBrainAbilityBinding, BrainAbilityViewModel>() {
     BaseMVVMFragment<FragmentBrainAbilityBinding, BrainAbilityViewModel>() {
 
 
+    private var xType = mutableListOf<String>()
+    private var variationTendencyByTypeBean = mutableListOf<VariationTendencyByTypeBean>()
+    private val adapter by lazy { BrainAbilityTypeAdapter() }
+
     override fun initViews() {
     override fun initViews() {
+        binding {
+            val layoutManager = LinearLayoutManager(mContext, RecyclerView.HORIZONTAL, false)
+            abilityType.layoutManager = layoutManager
+            abilityType.adapter = adapter
+            adapter.setData(variationTendencyByTypeBean)
+        }
         initLineChart()
         initLineChart()
     }
     }
 
 
@@ -41,17 +55,21 @@ class BrainAbilityFragment :
         viewModel.getVariationTendencyByType(fail = {
         viewModel.getVariationTendencyByType(fail = {
             it.toast()
             it.toast()
         }, success = {
         }, success = {
+            variationTendencyByTypeBean.clear()
             if (it.isNullOrEmpty().not()) {
             if (it.isNullOrEmpty().not()) {
+                variationTendencyByTypeBean.addAll(it!!)
                 val lineData = LineData()
                 val lineData = LineData()
-                it?.forEach {
+                it.forEach {
+                    xType.clear()
                     if (it.value.isNullOrEmpty().not()) {
                     if (it.value.isNullOrEmpty().not()) {
                         val list = ArrayList<Entry>()
                         val list = ArrayList<Entry>()
                         for (i in it.value.indices) {
                         for (i in it.value.indices) {
+                            xType.add(it.value[i].time)
                             val entry = Entry(i.toFloat(), it.value[i].mentalEnergyVal)
                             val entry = Entry(i.toFloat(), it.value[i].mentalEnergyVal)
                             list.add(entry)
                             list.add(entry)
                         }
                         }
                         //两个参数
                         //两个参数
-                        val lineDataSet = LineDataSet(list, it.name)
+                        val lineDataSet = LineDataSet(list, "")
                         if (TextUtils.equals("定向力", it.name)) {
                         if (TextUtils.equals("定向力", it.name)) {
                             lineDataSet.color = Color.RED
                             lineDataSet.color = Color.RED
                         } else {
                         } else {
@@ -68,6 +86,7 @@ class BrainAbilityFragment :
                 binding.lineChart.data = lineData
                 binding.lineChart.data = lineData
                 binding.lineChart.invalidate()
                 binding.lineChart.invalidate()
             }
             }
+            adapter.setData(variationTendencyByTypeBean)
         })
         })
     }
     }
 
 
@@ -102,13 +121,6 @@ class BrainAbilityFragment :
         axis.setDrawGridLines(false)
         axis.setDrawGridLines(false)
         //设置X轴显示
         //设置X轴显示
         axis.isEnabled = true
         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)
         axis.setLabelCount(7, true)
         //y轴0刻度
         //y轴0刻度
         axisLeft.axisMinimum = 30f
         axisLeft.axisMinimum = 30f
@@ -116,7 +128,7 @@ class BrainAbilityFragment :
         axisLeft.setDrawGridLines(false)
         axisLeft.setDrawGridLines(false)
         axisLeft.axisLineColor = Color.BLACK
         axisLeft.axisLineColor = Color.BLACK
         //显示Y轴轴线
         //显示Y轴轴线
-        axisLeft.setDrawAxisLine(true)
+        axisLeft.setDrawAxisLine(false)
         axisLeft.axisLineWidth = 1f
         axisLeft.axisLineWidth = 1f
         axisLeft.isEnabled = true
         axisLeft.isEnabled = true
         axisLeft.setDrawLabels(true)
         axisLeft.setDrawLabels(true)

+ 7 - 0
workbenches/src/main/res/drawable/bg_brain_ability_type_five.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    tools:ignore="ResourceName">
+    <corners android:radius="@dimen/divider_21px" />
+    <solid android:color="@color/color_FFD70CFF" />
+</shape>

+ 7 - 0
workbenches/src/main/res/drawable/bg_brain_ability_type_four.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    tools:ignore="ResourceName">
+    <corners android:radius="@dimen/divider_21px" />
+    <solid android:color="@color/color_FF1BB639" />
+</shape>

+ 7 - 0
workbenches/src/main/res/drawable/bg_brain_ability_type_one.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    tools:ignore="ResourceName">
+    <corners android:radius="@dimen/divider_21px" />
+    <solid android:color="@color/color_FFFF710C" />
+</shape>

+ 7 - 0
workbenches/src/main/res/drawable/bg_brain_ability_type_seven.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    tools:ignore="ResourceName">
+    <corners android:radius="@dimen/divider_21px" />
+    <solid android:color="@color/color_FF821EFF" />
+</shape>

+ 7 - 0
workbenches/src/main/res/drawable/bg_brain_ability_type_six.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    tools:ignore="ResourceName">
+    <corners android:radius="@dimen/divider_21px" />
+    <solid android:color="@color/color_FFFF2B2B" />
+</shape>

+ 7 - 0
workbenches/src/main/res/drawable/bg_brain_ability_type_three.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    tools:ignore="ResourceName">
+    <corners android:radius="@dimen/divider_21px" />
+    <solid android:color="@color/color_FF22C0D5" />
+</shape>

+ 7 - 0
workbenches/src/main/res/drawable/bg_brain_ability_type_two.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    tools:ignore="ResourceName">
+    <corners android:radius="@dimen/divider_21px" />
+    <solid android:color="@color/color_FF0CABFF" />
+</shape>

+ 31 - 2
workbenches/src/main/res/layout/fragment_brain_ability.xml

@@ -12,14 +12,43 @@
         android:layout_width="match_parent"
         android:layout_width="match_parent"
         android:layout_height="match_parent">
         android:layout_height="match_parent">
 
 
+        <androidx.appcompat.widget.AppCompatTextView
+            android:id="@+id/tvTitle"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="@dimen/divider_32px"
+            android:gravity="center"
+            android:text="@string/trends_changes_primary_brain_abilities"
+            android:textColor="@color/color_FF4A76FF"
+            android:textSize="@dimen/divider_42px"
+            android:textStyle="bold"
+            app:layout_constraintEnd_toEndOf="parent"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintTop_toTopOf="parent" />
+
+        <androidx.recyclerview.widget.RecyclerView
+            android:id="@+id/abilityType"
+            android:layout_width="match_parent"
+            android:layout_height="@dimen/divider_42px"
+            android:layout_marginStart="@dimen/divider_26px"
+            android:layout_marginTop="@dimen/divider_36px"
+            android:layout_marginEnd="@dimen/divider_46px"
+            app:layout_constraintEnd_toEndOf="parent"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintTop_toBottomOf="@+id/tvTitle" />
+
         <com.github.mikephil.charting.charts.LineChart
         <com.github.mikephil.charting.charts.LineChart
             android:id="@+id/lineChart"
             android:id="@+id/lineChart"
             android:layout_width="match_parent"
             android:layout_width="match_parent"
-            android:layout_height="match_parent"
+            android:layout_height="0dp"
+            android:layout_marginStart="@dimen/divider_46px"
+            android:layout_marginTop="@dimen/divider_45px"
+            android:layout_marginEnd="@dimen/divider_46px"
+            android:layout_marginBottom="@dimen/divider_171px"
             app:layout_constraintBottom_toBottomOf="parent"
             app:layout_constraintBottom_toBottomOf="parent"
             app:layout_constraintEnd_toEndOf="parent"
             app:layout_constraintEnd_toEndOf="parent"
             app:layout_constraintStart_toStartOf="parent"
             app:layout_constraintStart_toStartOf="parent"
-            app:layout_constraintTop_toTopOf="parent" />
+            app:layout_constraintTop_toBottomOf="@+id/abilityType" />
 
 
     </androidx.constraintlayout.widget.ConstraintLayout>
     </androidx.constraintlayout.widget.ConstraintLayout>
 </layout>
 </layout>

+ 34 - 0
workbenches/src/main/res/layout/item_brain_ability_type.xml

@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    tools:ignore="ResourceName">
+
+    <data>
+
+        <variable
+            name="data"
+            type="com.yingyang.workbenches.entity.VariationTendencyByTypeBean" />
+    </data>
+
+    <LinearLayout
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content">
+
+        <androidx.appcompat.widget.AppCompatTextView
+            android:id="@+id/tvType"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center"
+            android:layout_marginStart="@dimen/divider_20px"
+            android:paddingStart="@dimen/divider_29px"
+            android:paddingTop="@dimen/divider_4px"
+            android:paddingEnd="@dimen/divider_24px"
+            android:paddingBottom="@dimen/divider_5px"
+            android:text="@{data.name}"
+            android:textColor="@android:color/white"
+            android:textSize="@dimen/divider_24px"
+            android:textStyle="bold" />
+
+    </LinearLayout>
+
+</layout>

+ 5 - 0
workbenches/src/main/res/values/colors.xml

@@ -65,4 +65,9 @@
     <color name="color_0a374a" tools:ignore="ResourceName">#0a374a</color>
     <color name="color_0a374a" tools:ignore="ResourceName">#0a374a</color>
     <color name="color_ccffffff" tools:ignore="ResourceName">#ccffffff</color>
     <color name="color_ccffffff" tools:ignore="ResourceName">#ccffffff</color>
     <color name="color_4A76FF" tools:ignore="ResourceName">#4A76FF</color>
     <color name="color_4A76FF" tools:ignore="ResourceName">#4A76FF</color>
+    <color name="color_FFFF710C" tools:ignore="ResourceName">#FFFF710C</color>
+    <color name="color_FF0CABFF" tools:ignore="ResourceName">#FF0CABFF</color>
+    <color name="color_FF22C0D5" tools:ignore="ResourceName">#FF22C0D5</color>
+    <color name="color_FF1BB639" tools:ignore="ResourceName">#FF1BB639</color>
+    <color name="color_FFD70CFF" tools:ignore="ResourceName">#FFD70CFF</color>
 </resources>
 </resources>

+ 1 - 0
workbenches/src/main/res/values/dimens.xml

@@ -53,6 +53,7 @@
     <dimen name="divider_184px" tools:ignore="ResourceName">184px</dimen>
     <dimen name="divider_184px" tools:ignore="ResourceName">184px</dimen>
     <dimen name="divider_180px" tools:ignore="ResourceName">180px</dimen>
     <dimen name="divider_180px" tools:ignore="ResourceName">180px</dimen>
     <dimen name="divider_176px" tools:ignore="ResourceName">176px</dimen>
     <dimen name="divider_176px" tools:ignore="ResourceName">176px</dimen>
+    <dimen name="divider_171px" tools:ignore="ResourceName">171px</dimen>
     <dimen name="divider_140px" tools:ignore="ResourceName">140px</dimen>
     <dimen name="divider_140px" tools:ignore="ResourceName">140px</dimen>
     <dimen name="divider_135px" tools:ignore="ResourceName">135px</dimen>
     <dimen name="divider_135px" tools:ignore="ResourceName">135px</dimen>
     <dimen name="divider_133px" tools:ignore="ResourceName">133px</dimen>
     <dimen name="divider_133px" tools:ignore="ResourceName">133px</dimen>

+ 1 - 0
workbenches/src/main/res/values/strings.xml

@@ -56,4 +56,5 @@
     <string name="game_level" tools:ignore="ResourceName">游戏级别</string>
     <string name="game_level" tools:ignore="ResourceName">游戏级别</string>
     <string name="status" tools:ignore="ResourceName">状态</string>
     <string name="status" tools:ignore="ResourceName">状态</string>
     <string name="exclusive_training" tools:ignore="ResourceName">专属训练</string>
     <string name="exclusive_training" tools:ignore="ResourceName">专属训练</string>
+    <string name="trends_changes_primary_brain_abilities" tools:ignore="ResourceName">一级脑能力变化趋势</string>
 </resources>
 </resources>