浏览代码

1.修改数据监控页面UI

王鹏鹏 2 年之前
父节点
当前提交
d05f551ea5

+ 122 - 5
workbenches/src/main/java/com/yingyang/workbenches/datamonitor/DataMonitorFragment.kt

@@ -1,22 +1,30 @@
 package com.yingyang.workbenches.datamonitor
 
 import android.text.Html
+import android.text.TextUtils
+import androidx.recyclerview.widget.GridLayoutManager
 import com.yingyang.workbenches.adapter.DataMonitorAdapter
+import com.yingyang.workbenches.adapter.DateAdapter
 import com.yingyang.workbenches.databinding.FragmentDataMonitorBinding
+import com.yingyang.workbenches.entity.DayBean
 import com.yingyang.workbenches.entity.MonthRecordBean
 import com.yingyangfly.baselib.mvvm.BaseMVVMFragment
 import com.yingyangfly.baselib.utils.RxBusCodes
+import com.yingyangfly.baselib.utils.StringUtil
 import com.yingyangfly.baselib.utils.User
 import gorden.rxbus2.Subscribe
 import gorden.rxbus2.ThreadMode
-
+import java.util.*
 
 /**
  * 数据监控
  */
 class DataMonitorFragment : BaseMVVMFragment<FragmentDataMonitorBinding, DataMonitorViewModel>() {
 
+    private val calendar by lazy { Calendar.getInstance() }
     private var monthRecordList = mutableListOf<MonthRecordBean>()
+    private var dataList = mutableListOf<DayBean>()
+    private val dateAdapter by lazy { DateAdapter() }
 
     /**
      * 数据监控adapter
@@ -26,7 +34,11 @@ class DataMonitorFragment : BaseMVVMFragment<FragmentDataMonitorBinding, DataMon
 
     override fun initViews() {
         binding {
-            val summarize = "您已开通居家训练<font color='#FF0000'>10</font>天,共累计完成了专属专属训练<font color='#FF0000'>5</font>次"
+            rvDate.layoutManager = GridLayoutManager(mContext, 7)
+            rvDate.adapter = dateAdapter
+            dateAdapter.setData(dataList)
+            val summarize =
+                "您已开通专属训练<font color='#FF0000'>10</font>天,共累计完成了专属训练<font color='#FF0000'>5</font>次"
             tvSummarize.setText(Html.fromHtml(summarize))
             val trainingTime = "累计训练时长(含自由训练)<font color='#FF0000'>300</font>分钟"
             tvTrainingTime.setText(Html.fromHtml(trainingTime))
@@ -39,15 +51,24 @@ class DataMonitorFragment : BaseMVVMFragment<FragmentDataMonitorBinding, DataMon
 
     override fun initData() {
         binding.tvDate.text = User.getNowDay()
-
+        //年
+        val year = calendar[Calendar.YEAR]
+        //月
+        val month = calendar[Calendar.MONTH] + 1
+        val time = if (month < 10) {
+            year.toString() + "0" + month
+        } else {
+            year.toString() + month
+        }
+        loadData(time)
     }
 
     /**
      * 加载数据监控
      */
     @Subscribe(code = RxBusCodes.GetDataMonitor, threadMode = ThreadMode.MAIN)
-    fun loadData() {
-        viewModel.getMonthRecord(User.getNowMonth(), fail = {
+    fun loadData(time: String) {
+        viewModel.getMonthRecord(time, fail = {
             setNowDate()
         }, success = {
             monthRecordList.clear()
@@ -62,7 +83,103 @@ class DataMonitorFragment : BaseMVVMFragment<FragmentDataMonitorBinding, DataMon
      * 设置日历数据
      */
     private fun setNowDate() {
+        dataList.clear()
+        // 得到本月一号的星期索引
+        // 索引从 1 开始,第一个为星期日,减1是为了与星期对齐,如星期一对应索引1,星期二对应索引二
+        calendar[Calendar.DAY_OF_MONTH] = 1
+        var weekIndex = calendar[Calendar.DAY_OF_WEEK] - 1
+        // 将日期设为上个月
+        calendar[Calendar.MONTH] = calendar[Calendar.MONTH] - 1
+        val preMonthDays: Int = StringUtil.getMonth(
+            calendar[Calendar.MONTH] + 1,
+            calendar[Calendar.YEAR]
+        )
+        // 拿到上一个月的最后几天的天数
+        for (i in 0 until weekIndex) {
+            val bean = DayBean()
+            val month = calendar[Calendar.MONTH] + 1
+            bean.year = calendar[Calendar.YEAR].toString()
+            bean.month = if (month < 10) {
+                "0$month"
+            } else {
+                month.toString()
+            }
+            val day = preMonthDays - weekIndex + i + 1
+            bean.day = if (day < 10) {
+                "0$day"
+            } else {
+                day.toString()
+            }
+            bean.status = ""
+            bean.isCurrentDay = false
+            bean.isCurrentMonth = false
+            dataList.add(bean)
+        }
+        // 将日期设为当月
+        calendar[Calendar.MONTH] = calendar[Calendar.MONTH] + 1
+        val currentDays = StringUtil.getMonth(calendar[Calendar.MONTH] + 1, calendar[Calendar.YEAR])
+        // 拿到当月的天数
+        for (i in 0 until currentDays) {
+            val bean = DayBean()
+            val month = calendar[Calendar.MONTH] + 1
+            bean.year = calendar[Calendar.YEAR].toString()
+            bean.month = if (month < 10) {
+                "0$month"
+            } else {
+                month.toString()
+            }
+            val day = i + 1
+            bean.day = if (day < 10) {
+                "0$day"
+            } else {
+                day.toString()
+            }
+            // 当前日期
+            val nowDate: String = StringUtil.getFormatTime("yyyy-M-d", Calendar.getInstance().time)
+            // 选择的日期
+            val selectDate: String = StringUtil.getFormatTime("yyyy-M-", calendar.time) + (i + 1)
+            // 假如相等的话,那么就是今天的日期了
+            bean.isCurrentDay = nowDate.contentEquals(selectDate)
+            bean.isCurrentMonth = true
+            bean.status = ""
+            if (monthRecordList.isNullOrEmpty().not()) {
+                monthRecordList.forEach {
+                    if (TextUtils.equals(it.time, bean.time)) {
+                        bean.status = it.status
+                    }
+                }
+            }
+            dataList.add(bean)
+        }
 
+        // 拿到下个月第一周的天数
+        // 先拿到下个月第一天的星期索引
+        // 之前设为了1号,所以将日历对象的月数加 1 就行了
+        calendar[Calendar.MONTH] = calendar[Calendar.MONTH] + 1
+        weekIndex = calendar[Calendar.DAY_OF_WEEK] - 1
+        for (i in 0 until 7 - weekIndex) {
+            val bean = DayBean()
+            val month = calendar[Calendar.MONTH] + 1
+            bean.year = calendar[Calendar.YEAR].toString()
+            bean.month = if (month < 10) {
+                "0$month"
+            } else {
+                month.toString()
+            }
+            val day = i + 1
+            bean.day = if (day < 10) {
+                "0$day"
+            } else {
+                day.toString()
+            }
+            bean.status = ""
+            bean.isCurrentDay = false
+            bean.isCurrentMonth = false
+            dataList.add(bean)
+        }
+        dateAdapter.setData(dataList)
+        // 最后将日期设为当月
+        calendar[Calendar.MONTH] = calendar[Calendar.MONTH] - 1
     }
 
 }

+ 9 - 9
workbenches/src/main/java/com/yingyang/workbenches/entity/DayBean.java

@@ -6,36 +6,36 @@ package com.yingyang.workbenches.entity;
  * @author 王鹏鹏
  */
 public class DayBean {
-    private int day;
-    private int month;
-    private int year;
+    private String day;
+    private String month;
+    private String year;
     // 是否为当前月
     private boolean currentMonth;
     // 是否为今天
     private boolean currentDay;
     private String status;
 
-    public int getDay() {
+    public String getDay() {
         return day;
     }
 
-    public void setDay(int day) {
+    public void setDay(String day) {
         this.day = day;
     }
 
-    public int getMonth() {
+    public String getMonth() {
         return month;
     }
 
-    public void setMonth(int month) {
+    public void setMonth(String month) {
         this.month = month;
     }
 
-    public int getYear() {
+    public String getYear() {
         return year;
     }
 
-    public void setYear(int year) {
+    public void setYear(String year) {
         this.year = year;
     }
 

+ 8 - 28
workbenches/src/main/java/com/yingyang/workbenches/traindata/TrainDataActivity.kt

@@ -25,34 +25,13 @@ class TrainDataActivity : BaseFragmentActivity<ActivityTrainDataBinding>() {
 
     private var tabFragments = mutableListOf<Fragment>()
 
-    /**
-     * 数据监控
-     */
-    private val dataMonitorFragment by lazy { DataMonitorFragment() }
-
-    /**
-     * 脑能力值
-     */
-    private val brainAbilityFragment by lazy { BrainAbilityFragment() }
-
-    /**
-     * 训练内容
-     */
-    private val trainContentFragment by lazy { TrainContentFragment() }
-
-    /**
-     * 训练报告
-     */
-    private val trainReportFragment by lazy { TrainReportFragment() }
-
     override fun initViews() {
         tabFragments.clear()
-        tabFragments.add(dataMonitorFragment)
-        tabFragments.add(brainAbilityFragment)
-        tabFragments.add(trainContentFragment)
-        tabFragments.add(trainReportFragment)
-        val tabAdapter =
-            FragmentTabAdapter(this, tabFragments, R.id.layoutOperate, binding.radioOperate)
+        tabFragments.add(DataMonitorFragment())
+        tabFragments.add(BrainAbilityFragment())
+        tabFragments.add(TrainContentFragment())
+        tabFragments.add(TrainReportFragment())
+        val tabAdapter = FragmentTabAdapter(this, tabFragments, R.id.layoutOperate, binding.radioOperate)
         tabAdapter.onRgsExtraCheckedChangedListener =
             FragmentTabAdapter.OnRgsExtraCheckedChangedListener { checkedId, index ->
                 when (index) {
@@ -61,7 +40,7 @@ class TrainDataActivity : BaseFragmentActivity<ActivityTrainDataBinding>() {
                     }
 
                     1 -> {
-                        brainAbilityFragment.logCate()
+
                     }
 
                     2 -> {
@@ -69,7 +48,7 @@ class TrainDataActivity : BaseFragmentActivity<ActivityTrainDataBinding>() {
                     }
 
                     3 -> {
-                        trainReportFragment.loadData()
+
                     }
                 }
             }
@@ -85,6 +64,7 @@ class TrainDataActivity : BaseFragmentActivity<ActivityTrainDataBinding>() {
     }
 
     override fun initData() {
+
     }
 
 }

+ 0 - 2
workbenches/src/main/java/com/yingyang/workbenches/widget/CalendarCard.java

@@ -149,8 +149,6 @@ public class CalendarCard extends View {
     @Override
     protected void onSizeChanged(int w, int h, int oldw, int oldh) {
         super.onSizeChanged(w, h, oldw, oldh);
-        Log.e("wpp", "w---------------->"+w);
-        Log.e("wpp", "h---------------->"+h);
         mViewWidth = w;
         mViewHeight = h;
         mCellSpace = Math.min(mViewHeight / TOTAL_ROW, mViewWidth / TOTAL_COL);

+ 9 - 8
workbenches/src/main/res/layout/fragment_data_monitor.xml

@@ -21,8 +21,8 @@
             android:textColor="@color/color_FF4A76FF"
             android:textSize="@dimen/divider_42px"
             android:textStyle="bold"
-            app:layout_constraintStart_toStartOf="parent"
             app:layout_constraintEnd_toEndOf="parent"
+            app:layout_constraintStart_toStartOf="parent"
             app:layout_constraintTop_toTopOf="parent" />
 
         <androidx.constraintlayout.widget.ConstraintLayout
@@ -32,9 +32,9 @@
             android:layout_marginStart="@dimen/divider_40px"
             android:layout_marginTop="@dimen/divider_32px"
             android:background="@drawable/bg_calendar"
+            app:layout_constraintEnd_toStartOf="@id/weekLayout"
             app:layout_constraintHorizontal_weight="1.5"
             app:layout_constraintStart_toStartOf="parent"
-            app:layout_constraintEnd_toStartOf="@id/weekLayout"
             app:layout_constraintTop_toBottomOf="@+id/tvTitle">
 
             <androidx.appcompat.widget.AppCompatImageView
@@ -53,8 +53,8 @@
                 android:layout_marginTop="@dimen/divider_31px"
                 android:textColor="@color/color_FF333333"
                 android:textSize="@dimen/divider_32px"
-                app:layout_constraintStart_toStartOf="parent"
                 app:layout_constraintEnd_toEndOf="parent"
+                app:layout_constraintStart_toStartOf="parent"
                 app:layout_constraintTop_toTopOf="parent" />
 
             <androidx.appcompat.widget.AppCompatImageView
@@ -72,8 +72,8 @@
                 android:layout_height="wrap_content"
                 android:layout_marginTop="@dimen/divider_26px"
                 android:orientation="horizontal"
-                app:layout_constraintStart_toStartOf="parent"
                 app:layout_constraintEnd_toEndOf="parent"
+                app:layout_constraintStart_toStartOf="parent"
                 app:layout_constraintTop_toBottomOf="@+id/tvDate">
 
                 <androidx.appcompat.widget.AppCompatTextView
@@ -111,8 +111,9 @@
                 android:layout_width="match_parent"
                 android:layout_height="0dp"
                 android:layout_marginTop="@dimen/divider_20px"
-                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintBottom_toBottomOf="parent"
                 app:layout_constraintEnd_toEndOf="parent"
+                app:layout_constraintStart_toStartOf="parent"
                 app:layout_constraintTop_toBottomOf="@+id/weekLayoutLeft" />
 
         </androidx.constraintlayout.widget.ConstraintLayout>
@@ -126,9 +127,9 @@
             android:layout_marginEnd="@dimen/divider_40px"
             android:background="@drawable/bg_calendar"
             app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
+            app:layout_constraintEnd_toEndOf="parent"
             app:layout_constraintHorizontal_weight="1"
             app:layout_constraintStart_toEndOf="@id/calendarLayout"
-            app:layout_constraintEnd_toEndOf="parent"
             app:layout_constraintTop_toBottomOf="@+id/tvTitle" />
 
         <androidx.appcompat.widget.AppCompatTextView
@@ -141,8 +142,8 @@
             android:gravity="center"
             android:textColor="@color/color_FF333333"
             android:textSize="@dimen/divider_32px"
-            app:layout_constraintStart_toStartOf="parent"
             app:layout_constraintEnd_toEndOf="parent"
+            app:layout_constraintStart_toStartOf="parent"
             app:layout_constraintTop_toBottomOf="@+id/calendarLayout" />
 
         <androidx.appcompat.widget.AppCompatTextView
@@ -155,8 +156,8 @@
             android:textColor="@color/color_FF333333"
             android:textSize="@dimen/divider_32px"
             app:layout_constraintBottom_toBottomOf="parent"
-            app:layout_constraintStart_toStartOf="parent"
             app:layout_constraintEnd_toEndOf="parent"
+            app:layout_constraintStart_toStartOf="parent"
             app:layout_constraintTop_toBottomOf="@+id/tvSummarize" />