From 3bcd4383e02c0a65dca0211d2dee4c8eb9c50a4f Mon Sep 17 00:00:00 2001 From: renhaoting <370797079@qq.com> Date: Wed, 26 Nov 2025 17:58:57 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A0=B9=E6=8D=AE=E4=BA=A7=E5=93=81=E8=A6=81?= =?UTF-8?q?=E6=B1=82=E7=AD=BE=E5=88=B0sub=20item=E4=B8=8D=E5=8F=AF?= =?UTF-8?q?=E4=BB=A5=E7=82=B9=E5=87=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/fragments/task/DailySignDialog.kt | 66 ++++++++----------- .../gamedog/vididin/manager/TaskManager.kt | 34 ++++++---- .../gamedog/vididin/manager/TaskStateBean.kt | 10 ++- .../vididin/widget/DailySignItemView.kt | 36 ++-------- .../main/res/drawable/bg_sign_done_but.xml | 6 ++ app/src/main/res/layout/dialog_daily_sign.xml | 20 ++++++ app/src/main/res/values/strings.xml | 1 + 7 files changed, 85 insertions(+), 88 deletions(-) create mode 100644 app/src/main/res/drawable/bg_sign_done_but.xml diff --git a/app/src/main/java/com/gamedog/vididin/main/fragments/task/DailySignDialog.kt b/app/src/main/java/com/gamedog/vididin/main/fragments/task/DailySignDialog.kt index b10ecba..1455dff 100644 --- a/app/src/main/java/com/gamedog/vididin/main/fragments/task/DailySignDialog.kt +++ b/app/src/main/java/com/gamedog/vididin/main/fragments/task/DailySignDialog.kt @@ -73,10 +73,7 @@ class DailySignDialog(context: Context) : BindingDialog( 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( 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 -> { - mBinding.actionNormalTwoButs.isVisible = true - mBinding.actionComplement.isVisible = false - mBinding.actionWatchAd.isVisible = false - } - DailySignBean.SIGN_STATE_DISABLE -> { + private fun updateUI() { + val curDayView = mSignItemViewList[mCurDayIndex] + val curDayStateBean = curDayView.getStateBean() + + if (!curDayStateBean.hasSigned) { + mBinding.actionNormalTwoButs.isVisible = true + mBinding.actionWatchAd.isVisible = false + mBinding.actionComplement.isVisible = false + mBinding.actionTomorrowSign.isVisible = false + } else { + if (!curDayStateBean.hasWatchedAd) { mBinding.actionNormalTwoButs.isVisible = false - mBinding.actionComplement.isVisible = false - mBinding.actionWatchAd.isVisible = false - } - - DailySignBean.SIGN_STATE_DONE -> { - mBinding.actionNormalTwoButs.isVisible = false - mBinding.actionComplement.isVisible = false mBinding.actionWatchAd.isVisible = true - } - - DailySignBean.SIGN_STATE_FORGOT -> { - mBinding.actionNormalTwoButs.isVisible = false - mBinding.actionComplement.isVisible = true - mBinding.actionWatchAd.isVisible = false + mBinding.actionComplement.isVisible = false + mBinding.actionTomorrowSign.isVisible = false + } else { + val forgotSignDays = TaskManager.instance().getForgotSignDays() + if (forgotSignDays > 0) { + mBinding.actionNormalTwoButs.isVisible = false + 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 + } } } } diff --git a/app/src/main/java/com/gamedog/vididin/manager/TaskManager.kt b/app/src/main/java/com/gamedog/vididin/manager/TaskManager.kt index 9e172c2..b71c547 100644 --- a/app/src/main/java/com/gamedog/vididin/manager/TaskManager.kt +++ b/app/src/main/java/com/gamedog/vididin/manager/TaskManager.kt @@ -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 + } + } diff --git a/app/src/main/java/com/gamedog/vididin/manager/TaskStateBean.kt b/app/src/main/java/com/gamedog/vididin/manager/TaskStateBean.kt index a521c08..4375da0 100644 --- a/app/src/main/java/com/gamedog/vididin/manager/TaskStateBean.kt +++ b/app/src/main/java/com/gamedog/vididin/manager/TaskStateBean.kt @@ -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 diff --git a/app/src/main/java/com/gamedog/vididin/widget/DailySignItemView.kt b/app/src/main/java/com/gamedog/vididin/widget/DailySignItemView.kt index 69f774d..3b9e211 100644 --- a/app/src/main/java/com/gamedog/vididin/widget/DailySignItemView.kt +++ b/app/src/main/java/com/gamedog/vididin/widget/DailySignItemView.kt @@ -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() { diff --git a/app/src/main/res/drawable/bg_sign_done_but.xml b/app/src/main/res/drawable/bg_sign_done_but.xml new file mode 100644 index 0000000..6f29a2f --- /dev/null +++ b/app/src/main/res/drawable/bg_sign_done_but.xml @@ -0,0 +1,6 @@ + + + + + diff --git a/app/src/main/res/layout/dialog_daily_sign.xml b/app/src/main/res/layout/dialog_daily_sign.xml index e28832c..88da288 100644 --- a/app/src/main/res/layout/dialog_daily_sign.xml +++ b/app/src/main/res/layout/dialog_daily_sign.xml @@ -287,6 +287,26 @@ /> + + + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index aae70d1..e336646 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -65,6 +65,7 @@ Dinheiro Você ganhou uma recompensa! Recuperar 1 dia de login + Volte amanhã para fazer login \ No newline at end of file