根据产品要求签到sub item不可以点击

This commit is contained in:
renhaoting 2025-11-26 17:58:57 +08:00
parent 9ab738e07c
commit 3bcd4383e0
7 changed files with 85 additions and 88 deletions

View File

@ -73,10 +73,7 @@ class DailySignDialog(context: Context) : BindingDialog<DialogDailySignBinding>(
mRewardDetailList?.let {
mSignItemViewList.forEachIndexed { index, itemView->
itemView.setData(mRewardDetailList!![index],
TaskManager.instance().getDailySignStateBean(index),
{ isSelected ->
handleItemSelectStateChanged(index, isSelected)
})
TaskManager.instance().getDailySignStateBean(index))
}
}
}
@ -86,46 +83,39 @@ class DailySignDialog(context: Context) : BindingDialog<DialogDailySignBinding>(
mCurDayIndex = TaskManager.instance().getCurDayIndexOfDailyCheckIn()
mSelectedDayIndex = mCurDayIndex
mSignItemViewList[mCurDayIndex].setSelectState(true)
updateBottomButtons(mSelectedDayIndex)
updateUI()
}
private fun handleItemSelectStateChanged(itemIndex: Int, selected: Boolean) {
mSelectedDayIndex = itemIndex
mSignItemViewList.forEachIndexed { index, itemView ->
if (itemIndex != index) {
itemView.setSelectState(false)
}
}
updateBottomButtons(mSelectedDayIndex)
}
private fun updateBottomButtons(selectedIndex: Int) {
val itemView = mSignItemViewList.get(selectedIndex)
val stateBean = itemView.getStateBean()
when (stateBean.signState) {
DailySignBean.SIGN_STATE_ENABLE -> {
private fun updateUI() {
val curDayView = mSignItemViewList[mCurDayIndex]
val curDayStateBean = curDayView.getStateBean()
if (!curDayStateBean.hasSigned) {
mBinding.actionNormalTwoButs.isVisible = true
mBinding.actionComplement.isVisible = false
mBinding.actionWatchAd.isVisible = false
}
DailySignBean.SIGN_STATE_DISABLE -> {
mBinding.actionNormalTwoButs.isVisible = false
mBinding.actionComplement.isVisible = false
mBinding.actionWatchAd.isVisible = false
}
DailySignBean.SIGN_STATE_DONE -> {
mBinding.actionTomorrowSign.isVisible = false
} else {
if (!curDayStateBean.hasWatchedAd) {
mBinding.actionNormalTwoButs.isVisible = false
mBinding.actionComplement.isVisible = false
mBinding.actionWatchAd.isVisible = true
}
DailySignBean.SIGN_STATE_FORGOT -> {
mBinding.actionComplement.isVisible = false
mBinding.actionTomorrowSign.isVisible = false
} else {
val forgotSignDays = TaskManager.instance().getForgotSignDays()
if (forgotSignDays > 0) {
mBinding.actionNormalTwoButs.isVisible = false
mBinding.actionComplement.isVisible = true
mBinding.actionWatchAd.isVisible = false
mBinding.actionComplement.isVisible = true
mBinding.actionTomorrowSign.isVisible = false
} else {
mBinding.actionNormalTwoButs.isVisible = false
mBinding.actionWatchAd.isVisible = false
mBinding.actionComplement.isVisible = false
mBinding.actionTomorrowSign.isVisible = true
}
}
}
}

View File

@ -168,10 +168,10 @@ class TaskManager private constructor() {
fun executeDailySign(dayIndex: Int, rewardNum: Int) : Boolean {
val daySignState = mDailySignData.signStateList[dayIndex]
if ((dayIndex == mCurDayIndexDailySign && daySignState.signState == DailySignBean.SIGN_STATE_ENABLE)
|| (daySignState.isComplementEnable)) {
daySignState.signState = DailySignBean.SIGN_STATE_DONE
daySignState.rewardNum += rewardNum
if (!daySignState.hasSigned) {
daySignState.hasSigned = true
daySignState.hasRewardedNum += rewardNum
saveDailySignInfo()
return true
}
@ -184,20 +184,30 @@ class TaskManager private constructor() {
private fun generateTestDailySignTestBean() {
mDailySignData = DailySignBean().apply {
startMs = DateUtil.getCurTimeMs() - 3 * DateUtil.MS_NUM_ONE_DAY
startMs = DateUtil.getCurTimeMs() - 4 * DateUtil.MS_NUM_ONE_DAY
signStateList.clear()
signStateList.add(DailySignDayInfoBean(signState = DailySignBean.SIGN_STATE_DONE, finishExtraAd = true, isComplementEnable = false))
signStateList.add(DailySignDayInfoBean(signState = DailySignBean.SIGN_STATE_ENABLE, finishExtraAd = false, isComplementEnable = true))
signStateList.add(DailySignDayInfoBean(signState = DailySignBean.SIGN_STATE_DISABLE, finishExtraAd = false, isComplementEnable = false))
signStateList.add(DailySignDayInfoBean(signState = DailySignBean.SIGN_STATE_ENABLE, finishExtraAd = false, isComplementEnable = false))
signStateList.add(DailySignDayInfoBean(signState = DailySignBean.SIGN_STATE_DISABLE, finishExtraAd = false, isComplementEnable = false))
signStateList.add(DailySignDayInfoBean(signState = DailySignBean.SIGN_STATE_DISABLE, finishExtraAd = false, isComplementEnable = false))
signStateList.add(DailySignDayInfoBean(signState = DailySignBean.SIGN_STATE_DISABLE, finishExtraAd = false, isComplementEnable = false))
signStateList.add(DailySignDayInfoBean(hasSigned = true, hasWatchedAd = true))
signStateList.add(DailySignDayInfoBean(hasSigned = false, hasWatchedAd = false))
signStateList.add(DailySignDayInfoBean(hasSigned = true, hasWatchedAd = false))
signStateList.add(DailySignDayInfoBean(hasSigned = false, hasWatchedAd = false))
signStateList.add(DailySignDayInfoBean(hasSigned = false, hasWatchedAd = false))
signStateList.add(DailySignDayInfoBean(hasSigned = false, hasWatchedAd = false))
signStateList.add(DailySignDayInfoBean(hasSigned = false, hasWatchedAd = false))
}
SpUtil.instance().putObject(SpUtil.KEY_TASK_BEAN, mDailySignData)
}
fun getForgotSignDays(): Int {
var forgotSignDays = 0
mDailySignData.signStateList.forEach { item->
if (!item.hasSigned) {
forgotSignDays++
}
}
return forgotSignDays
}
}

View File

@ -1,6 +1,5 @@
package com.gamedog.vididin.manager
import com.gamedog.vididin.manager.DailySignBean.Companion.SIGN_STATE_DISABLE
import java.io.Serializable
@ -19,7 +18,7 @@ data class DailySignBean(
}
init {
signStateList.add(DailySignDayInfoBean(signState = SIGN_STATE_ENABLE))
signStateList.add(DailySignDayInfoBean())
signStateList.add(DailySignDayInfoBean())
signStateList.add(DailySignDayInfoBean())
signStateList.add(DailySignDayInfoBean())
@ -31,10 +30,9 @@ data class DailySignBean(
data class DailySignDayInfoBean(
var signState: Int = SIGN_STATE_DISABLE,
var rewardNum: Int = 0,
var finishExtraAd: Boolean = false,
var isComplementEnable: Boolean = false, // 补签
var hasSigned: Boolean = false,
var hasWatchedAd: Boolean = false,
var hasRewardedNum: Int = 0,
): Serializable

View File

@ -7,7 +7,6 @@ import android.view.LayoutInflater
import android.widget.LinearLayout
import androidx.core.view.isVisible
import com.ama.core.architecture.util.ResUtil
import com.ama.core.architecture.util.setOnClickBatch
import com.gamedog.vididin.R
import com.gamedog.vididin.databinding.DailySignItemBinding
import com.gamedog.vididin.main.fragments.task.RewardDetail
@ -25,52 +24,25 @@ class DailySignItemView @JvmOverloads constructor(
private lateinit var mStateData: DailySignDayInfoBean
private var mBinding: DailySignItemBinding
private var mIsSelected = false
private var mSelectStateCallback: ((isSelected: Boolean)->Unit)? = null
init {
mBinding = DailySignItemBinding.inflate(LayoutInflater.from(context), this, true)
mBinding.run {
setOnClickBatch(contentRoot, ) {
when(this) {
contentRoot -> {
if (!mIsSelected) {
setSelectState(true)
mSelectStateCallback?.invoke(mIsSelected)
}
}
}
}
}
}
fun setData(data: RewardDetail, stateData: DailySignDayInfoBean, selectStateCallback: (isSelected: Boolean)->Unit) {
fun setData(data: RewardDetail, stateData: DailySignDayInfoBean) {
mConfigData = data
mStateData = stateData
mSelectStateCallback = selectStateCallback
mBinding.tvGoldNum.text = "" + mConfigData.value
mBinding.tvDayNum.text = context.getString(R.string.day) + " "+ mConfigData.day
when(mStateData.signState) {
DailySignBean.SIGN_STATE_ENABLE -> {
mBinding.ivDone.isVisible = false
}
DailySignBean.SIGN_STATE_DISABLE -> {
mBinding.ivDone.isVisible = false
}
DailySignBean.SIGN_STATE_DONE -> {
mBinding.ivDone.isVisible = true
mBinding.tvDayNum.isVisible = false
}
DailySignBean.SIGN_STATE_FORGOT -> {
mBinding.ivDone.isVisible = false
}
}
mBinding.ivDone.isVisible = mStateData.hasSigned
mBinding.tvDayNum.isVisible = !mStateData.hasSigned
}
fun setLargeWidthMode() {

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape android:shape="rectangle"
xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#ff938a84" />
<corners android:topLeftRadius="42dp" android:topRightRadius="42dp" android:bottomLeftRadius="42dp" android:bottomRightRadius="42dp" />
</shape>

View File

@ -287,6 +287,26 @@
/>
</FrameLayout>
<!--明日再来-->
<FrameLayout
android:id="@+id/action_tomorrow_sign"
android:layout_width="wrap_content"
android:layout_height="50dp"
android:layout_gravity="center"
android:paddingHorizontal="30dp"
android:background="@drawable/bg_sign_done_but"
android:visibility="gone">
<androidx.appcompat.widget.AppCompatTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="18sp"
android:textColor="@color/white"
android:text="@string/tomorrow_sign"
android:gravity="center"
android:layout_gravity="center"
/>
</FrameLayout>
</FrameLayout>
</LinearLayout>

View File

@ -65,6 +65,7 @@
<string name="title_cash_record">Dinheiro</string>
<string name="sign_success_desc">Você ganhou uma recompensa!</string>
<string name="complement_hint">Recuperar 1 dia de login</string>
<string name="tomorrow_sign">Volte amanhã para fazer login</string>
</resources>