Compare commits

...

2 Commits

8 changed files with 81 additions and 16 deletions

View File

@ -9,6 +9,7 @@ import com.gamedog.vididin.widget.DailySignItemView
class DailySignDialog(context: Context) : BindingDialog<DialogDailySignBinding>(context, DialogDailySignBinding::inflate) { class DailySignDialog(context: Context) : BindingDialog<DialogDailySignBinding>(context, DialogDailySignBinding::inflate) {
private var mCurDayIndex: Int = 0
private var mDataList: List<RewardDetail>? = emptyList() private var mDataList: List<RewardDetail>? = emptyList()
private var mSignItemList: MutableList<DailySignItemView> = mutableListOf() private var mSignItemList: MutableList<DailySignItemView> = mutableListOf()
@ -67,7 +68,8 @@ class DailySignDialog(context: Context) : BindingDialog<DialogDailySignBinding>(
} }
private fun initSignState() { private fun initSignState() {
val todayIndex = TaskManager.instance().getCurDayIndexOfDailyCheckIn() mCurDayIndex = TaskManager.instance().getCurDayIndexOfDailyCheckIn()
mSignItemList[mCurDayIndex].setSelectState(true)
} }
private fun handleItemSelectStateChanged(itemIndex: Int, selected: Boolean) { private fun handleItemSelectStateChanged(itemIndex: Int, selected: Boolean) {

View File

@ -1,5 +1,6 @@
package com.gamedog.vididin.manager package com.gamedog.vididin.manager
import com.ama.core.architecture.util.DateUtil
import com.ama.core.architecture.util.FileUtil import com.ama.core.architecture.util.FileUtil
import com.ama.core.architecture.util.SpUtil import com.ama.core.architecture.util.SpUtil
import com.gamedog.vididin.main.fragments.task.Task import com.gamedog.vididin.main.fragments.task.Task
@ -39,11 +40,13 @@ class TaskManager private constructor() {
} }
} }
private val mutex = Mutex() private val mutex = Mutex()
@Volatile @Volatile
private var initialized = false private var initialized = false
private var mTaskConfig: TaskBean? = null private var mTaskConfig: TaskBean? = null
private var mTaskBean: TaskStateBean = TaskStateBean(DailySignBean())
private val mGson = GsonBuilder().create() private val mGson = GsonBuilder().create()
@ -81,7 +84,12 @@ class TaskManager private constructor() {
private suspend fun loadTaskStateFromSp() { private suspend fun loadTaskStateFromSp() {
return withContext(Dispatchers.IO) { return withContext(Dispatchers.IO) {
// TODO ------------ val taskStateBeanInSp = SpUtil.instance().getObject<TaskStateBean>(SpUtil.KEY_TASK_BEAN)
if (taskStateBeanInSp == null) {
SpUtil.instance().putObject(SpUtil.KEY_TASK_BEAN, mTaskBean)
} else {
mTaskBean = taskStateBeanInSp
}
} }
} }
@ -129,8 +137,21 @@ class TaskManager private constructor() {
} }
fun getCurDayIndexOfDailyCheckIn() { fun getCurDayIndexOfDailyCheckIn() : Int {
//... val periodStartMs = mTaskBean.dailySignBean.startMs
if (periodStartMs > 0) {
val dayIndexOfPeriod = DateUtil.getPassedDayNum(periodStartMs, DateUtil.getCurTimeMs())
if (dayIndexOfPeriod > 6) {
mTaskBean.dailySignBean.startMs = DateUtil.getCurTimeMs()
SpUtil.instance().putObject(SpUtil.KEY_TASK_BEAN, mTaskBean)
}
return dayIndexOfPeriod
} else {
mTaskBean.dailySignBean.startMs = DateUtil.getCurTimeMs()
SpUtil.instance().putObject(SpUtil.KEY_TASK_BEAN, mTaskBean)
return 0
}
} }

View File

@ -1,5 +1,6 @@
package com.gamedog.vididin.manager package com.gamedog.vididin.manager
import com.ama.core.architecture.util.DateUtil
import java.io.Serializable import java.io.Serializable
@ -9,8 +10,9 @@ data class TaskStateBean(
data class DailySignBean( data class DailySignBean(
val startMs: Long = 0L, var startMs: Long = 0,
val signStateList: MutableList<Int> = mutableListOf() val signStateList: MutableList<Int> = mutableListOf()
): Serializable { ): Serializable {
companion object{ companion object{
const val SIGN_STATE_ENABLE = 1 const val SIGN_STATE_ENABLE = 1
@ -19,7 +21,7 @@ data class DailySignBean(
} }
init { init {
signStateList.add(SIGN_STATE_WAIT) signStateList.add(SIGN_STATE_ENABLE)
signStateList.add(SIGN_STATE_WAIT) signStateList.add(SIGN_STATE_WAIT)
signStateList.add(SIGN_STATE_WAIT) signStateList.add(SIGN_STATE_WAIT)
signStateList.add(SIGN_STATE_WAIT) signStateList.add(SIGN_STATE_WAIT)

View File

@ -5,6 +5,7 @@ import android.content.Context
import android.util.AttributeSet import android.util.AttributeSet
import android.view.LayoutInflater import android.view.LayoutInflater
import android.widget.LinearLayout import android.widget.LinearLayout
import com.ama.core.architecture.util.ResUtil
import com.ama.core.architecture.util.setOnClickBatch import com.ama.core.architecture.util.setOnClickBatch
import com.gamedog.vididin.R import com.gamedog.vididin.R
import com.gamedog.vididin.databinding.DailySignItemBinding import com.gamedog.vididin.databinding.DailySignItemBinding
@ -56,9 +57,9 @@ class DailySignItemView @JvmOverloads constructor(
fun setSelectState(isSelect: Boolean) { fun setSelectState(isSelect: Boolean) {
mIsSelected = isSelect mIsSelected = isSelect
if (mIsSelected) { if (mIsSelected) {
mBinding.rlRoot.setBackgroundResource(R.drawable.bg_daily_sign_day_item) mBinding.rlRoot.foreground = ResUtil.getDrawable(R.drawable.bg_daily_sign_day_item)
} else { } else {
mBinding.rlRoot.background = null mBinding.rlRoot.foreground = null
} }
} }

View File

@ -11,8 +11,7 @@
<RelativeLayout <RelativeLayout
android:id="@+id/rl_root" android:id="@+id/rl_root"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content">
android:padding="2dp">
<androidx.appcompat.widget.AppCompatImageView <androidx.appcompat.widget.AppCompatImageView
android:id="@+id/iv_bg" android:id="@+id/iv_bg"

View File

@ -4,12 +4,14 @@ package com.ama.core.architecture.util
import java.text.SimpleDateFormat import java.text.SimpleDateFormat
import java.util.* import java.util.*
import java.util.concurrent.TimeUnit import java.util.concurrent.TimeUnit
import java.util.Calendar
import java.util.TimeZone
class DateUtil private constructor() { class DateUtil private constructor() {
companion object { companion object {
private const val MS_NUM_ONE_DAY = (24 * 60 * 60 * 1000)
private const val FORMAT_DATE = "yyyy-MM-dd" private const val FORMAT_DATE = "yyyy-MM-dd"
private const val FORMAT_DATETIME = "yyyy-MM-dd HH:mm:ss" private const val FORMAT_DATETIME = "yyyy-MM-dd HH:mm:ss"
@ -84,9 +86,7 @@ class DateUtil private constructor() {
return TimeUnit.MILLISECONDS.toDays(diffMillis) return TimeUnit.MILLISECONDS.toDays(diffMillis)
} }
fun getCurTimeMs(): Long {
return System.currentTimeMillis()
}
/** /**
* 两个时间点之间的天数差 * 两个时间点之间的天数差
@ -164,6 +164,41 @@ class DateUtil private constructor() {
else -> 0L else -> 0L
} }
} }
//--------------------------- New added methods ----------------------------//
fun getCurTimeMs(): Long {
return System.currentTimeMillis()
}
fun getPassedDayNum(periodStartMs: Long, currentMs: Long): Int {
val utcTimeZone = TimeZone.getTimeZone("UTC") // 使用UTC时区
val calendarStart = Calendar.getInstance(utcTimeZone).apply {
timeInMillis = periodStartMs
}
val calendarCurrent = Calendar.getInstance(utcTimeZone).apply {
timeInMillis = currentMs
}
// 清除时分秒毫秒信息
fun Calendar.clearTime() {
set(Calendar.HOUR_OF_DAY, 0)
set(Calendar.MINUTE, 0)
set(Calendar.SECOND, 0)
set(Calendar.MILLISECOND, 0)
}
calendarStart.clearTime()
calendarCurrent.clearTime()
return ((calendarCurrent.timeInMillis - calendarStart.timeInMillis) / MS_NUM_ONE_DAY).toInt()
}
} }
} }

View File

@ -1,10 +1,12 @@
package com.ama.core.architecture.util package com.ama.core.architecture.util
import android.graphics.Color import android.graphics.Color
import android.graphics.drawable.Drawable
import android.util.TypedValue import android.util.TypedValue
import androidx.annotation.AttrRes import androidx.annotation.AttrRes
import androidx.annotation.ColorRes import androidx.annotation.ColorRes
import androidx.annotation.DimenRes import androidx.annotation.DimenRes
import androidx.annotation.DrawableRes
import androidx.annotation.StringRes import androidx.annotation.StringRes
import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat
import com.ama.core.architecture.BaseApp import com.ama.core.architecture.BaseApp
@ -111,6 +113,10 @@ object ResUtil {
return typedValue.data return typedValue.data
} }
fun getDrawable(@DrawableRes iconRes: Int): Drawable? {
return ContextCompat.getDrawable(appContext, iconRes)
}
//==================== 扩展函数 ==================== //==================== 扩展函数 ====================

View File

@ -14,8 +14,7 @@ class SpUtil private constructor(spFileName: String) {
companion object { companion object {
const val KEY_ACCOUNT = "KEY_ACCOUNT" const val KEY_ACCOUNT = "KEY_ACCOUNT"
const val KEY_ACCOUNT_TOKEN = "KEY_ACCOUNT_TOKEN" const val KEY_ACCOUNT_TOKEN = "KEY_ACCOUNT_TOKEN"
const val KEY_TASK_BEAN = "KEY_TASK_BEAN"
const val KEY_X2 = "22222"
private const val DEFAULT_SP_NAME = "enhanced_prefs" private const val DEFAULT_SP_NAME = "enhanced_prefs"
@Volatile @Volatile