|
@@ -1,10 +1,15 @@
|
|
|
package com.yingyang.workbenches.datamonitor
|
|
|
|
|
|
+import androidx.recyclerview.widget.GridLayoutManager
|
|
|
+import com.yingyang.workbenches.adapter.DateAdapter
|
|
|
import com.yingyang.workbenches.databinding.FragmentDataMonitorBinding
|
|
|
+import com.yingyang.workbenches.entity.DayBean
|
|
|
import com.yingyangfly.baselib.base.BaseFragment
|
|
|
import com.yingyangfly.baselib.utils.RxBusCodes
|
|
|
+import com.yingyangfly.baselib.utils.User
|
|
|
import gorden.rxbus2.Subscribe
|
|
|
import gorden.rxbus2.ThreadMode
|
|
|
+import java.text.SimpleDateFormat
|
|
|
import java.util.*
|
|
|
|
|
|
/**
|
|
@@ -13,10 +18,15 @@ import java.util.*
|
|
|
class DataMonitorFragment : BaseFragment<FragmentDataMonitorBinding>() {
|
|
|
|
|
|
private var calendar: Calendar? = null
|
|
|
-
|
|
|
+ private var dataList = mutableListOf<DayBean>()
|
|
|
+ private val dateAdapter by lazy { DateAdapter() }
|
|
|
|
|
|
override fun initViews() {
|
|
|
-
|
|
|
+ binding {
|
|
|
+ rvDate.layoutManager = GridLayoutManager(mContext, 7)
|
|
|
+ rvDate.adapter = dateAdapter
|
|
|
+ dateAdapter.setData(dataList)
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
override fun initListener() {
|
|
@@ -25,6 +35,8 @@ class DataMonitorFragment : BaseFragment<FragmentDataMonitorBinding>() {
|
|
|
|
|
|
override fun initData() {
|
|
|
calendar = Calendar.getInstance()
|
|
|
+ binding.tvDate.text = User.getNowDay()
|
|
|
+ setNowDate()
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -35,8 +47,95 @@ class DataMonitorFragment : BaseFragment<FragmentDataMonitorBinding>() {
|
|
|
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 设置日历数据
|
|
|
+ */
|
|
|
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 = getMonth(
|
|
|
+ calendar!![Calendar.MONTH] + 1,
|
|
|
+ calendar!![Calendar.YEAR]
|
|
|
+ )
|
|
|
+ // 拿到上一个月的最后几天的天数
|
|
|
+ for (i in 0 until weekIndex) {
|
|
|
+ val bean = DayBean()
|
|
|
+ bean.year = calendar!![Calendar.YEAR]
|
|
|
+ bean.month = calendar!![Calendar.MONTH] + 1
|
|
|
+ bean.day = preMonthDays - weekIndex + i + 1
|
|
|
+ bean.isCurrentDay = false
|
|
|
+ bean.isCurrentMonth = false
|
|
|
+ dataList.add(bean)
|
|
|
+ }
|
|
|
+ // 将日期设为当月
|
|
|
+ calendar!![Calendar.MONTH] = calendar!![Calendar.MONTH] + 1
|
|
|
+ val currentDays = getMonth(
|
|
|
+ calendar!![Calendar.MONTH] + 1,
|
|
|
+ calendar!![Calendar.YEAR]
|
|
|
+ )
|
|
|
+ // 拿到当月的天数
|
|
|
+ for (i in 0 until currentDays) {
|
|
|
+ val bean = DayBean()
|
|
|
+ bean.year = calendar!![Calendar.YEAR]
|
|
|
+ bean.month = calendar!![Calendar.MONTH] + 1
|
|
|
+ bean.day = i + 1
|
|
|
+ // 当前日期
|
|
|
+ val nowDate: String =
|
|
|
+ getFormatTime("yyyy-M-d", Calendar.getInstance().time)
|
|
|
+ // 选择的日期
|
|
|
+ val selectDate: String =
|
|
|
+ getFormatTime("yyyy-M-", calendar!!.time) + (i + 1)
|
|
|
+ // 假如相等的话,那么就是今天的日期了
|
|
|
+ if (nowDate.contentEquals(selectDate)) {
|
|
|
+ bean.isCurrentDay = true
|
|
|
+ } else {
|
|
|
+ bean.isCurrentDay = false
|
|
|
+ }
|
|
|
+ bean.isCurrentMonth = true
|
|
|
+ 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()
|
|
|
+ bean.year = calendar!![Calendar.YEAR]
|
|
|
+ bean.month = calendar!![Calendar.MONTH] + 1
|
|
|
+ bean.day = i + 1
|
|
|
+ bean.isCurrentDay = false
|
|
|
+ bean.isCurrentMonth = false
|
|
|
+ dataList.add(bean)
|
|
|
+ }
|
|
|
+ dateAdapter.setData(dataList)
|
|
|
+ // 最后将日期设为当月
|
|
|
+ calendar!![Calendar.MONTH] = calendar!![Calendar.MONTH] - 1
|
|
|
+ }
|
|
|
+
|
|
|
+ // 传入年和月得出当月的天数
|
|
|
+ fun getMonth(m: Int, y: Int): Int {
|
|
|
+ return when (m) {
|
|
|
+ 2 -> if (isRunYear(y)) 29 else 28
|
|
|
+ 4, 6, 9, 11 -> 30
|
|
|
+ else -> 31
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 判断是否为闰年
|
|
|
+ fun isRunYear(y: Int): Boolean {
|
|
|
+ return y % 4 == 0 && y % 100 != 0 || y % 400 == 0
|
|
|
+ }
|
|
|
|
|
|
+ // 格式化时间,设置时间很方便,也比较简单,学的很快
|
|
|
+ fun getFormatTime(p: String, t: Date?): String {
|
|
|
+ return SimpleDateFormat(p, Locale.CHINESE).format(t)
|
|
|
}
|
|
|
|
|
|
}
|