From 100b5f7d6133de057dce9e01ad0484729da4e989 Mon Sep 17 00:00:00 2001 From: renhaoting <370797079@qq.com> Date: Wed, 26 Nov 2025 16:40:28 +0800 Subject: [PATCH] =?UTF-8?q?=E7=8A=B6=E6=80=81=E5=8F=98=E5=8C=96=E8=B7=9F?= =?UTF-8?q?=E9=9A=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/fragments/task/DailySignDialog.kt | 44 ++++- .../gamedog/vididin/manager/TaskManager.kt | 4 + .../vididin/widget/DailySignItemView.kt | 37 +++- app/src/main/res/layout/daily_sign_item.xml | 31 ++- app/src/main/res/layout/dialog_daily_sign.xml | 177 +++++++++++++----- app/src/main/res/values/strings.xml | 1 + 6 files changed, 227 insertions(+), 67 deletions(-) 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 5ff0370..b10ecba 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 @@ -1,9 +1,11 @@ package com.gamedog.vididin.main.fragments.task import android.content.Context +import androidx.core.view.isVisible import com.ama.core.architecture.util.setOnClickBatch import com.ama.core.architecture.widget.BindingDialog import com.gamedog.vididin.databinding.DialogDailySignBinding +import com.gamedog.vididin.manager.DailySignBean import com.gamedog.vididin.manager.TaskManager import com.gamedog.vididin.widget.DailySignItemView @@ -13,7 +15,6 @@ class DailySignDialog(context: Context) : BindingDialog( private var mSelectedDayIndex: Int = 0 private var mRewardDetailList: List? = emptyList() private var mSignItemViewList: MutableList = mutableListOf() - private var mSignStateList: MutableList = mutableListOf() init { @@ -71,9 +72,11 @@ class DailySignDialog(context: Context) : BindingDialog( mRewardDetailList?.let { mSignItemViewList.forEachIndexed { index, itemView-> - itemView.setData(mRewardDetailList!![index], { isSelected -> - handleItemSelectStateChanged(index, isSelected) - }) + itemView.setData(mRewardDetailList!![index], + TaskManager.instance().getDailySignStateBean(index), + { isSelected -> + handleItemSelectStateChanged(index, isSelected) + }) } } } @@ -83,6 +86,8 @@ class DailySignDialog(context: Context) : BindingDialog( mCurDayIndex = TaskManager.instance().getCurDayIndexOfDailyCheckIn() mSelectedDayIndex = mCurDayIndex mSignItemViewList[mCurDayIndex].setSelectState(true) + + updateBottomButtons(mSelectedDayIndex) } private fun handleItemSelectStateChanged(itemIndex: Int, selected: Boolean) { @@ -92,6 +97,37 @@ class DailySignDialog(context: Context) : BindingDialog( 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 -> { + 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 + } + } } 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 87a274d..7fc0ea2 100644 --- a/app/src/main/java/com/gamedog/vididin/manager/TaskManager.kt +++ b/app/src/main/java/com/gamedog/vididin/manager/TaskManager.kt @@ -157,6 +157,10 @@ class TaskManager private constructor() { return dayIndexOfPeriod } + fun getDailySignStateBean(dayIndex: Int): DailySignDayInfoBean { + return mDailySignData.signStateList[dayIndex] + } + fun executeDailySign(dayIndex: Int, rewardNum: Int) : Boolean { val daySignState = mDailySignData.signStateList[dayIndex] if ((dayIndex == mCurDayIndexDailySign && daySignState.signState == DailySignBean.SIGN_STATE_ENABLE) 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 3c8057d..69f774d 100644 --- a/app/src/main/java/com/gamedog/vididin/widget/DailySignItemView.kt +++ b/app/src/main/java/com/gamedog/vididin/widget/DailySignItemView.kt @@ -5,11 +5,14 @@ import android.content.Context import android.util.AttributeSet 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 +import com.gamedog.vididin.manager.DailySignBean +import com.gamedog.vididin.manager.DailySignDayInfoBean import kotlin.run class DailySignItemView @JvmOverloads constructor( @@ -18,7 +21,8 @@ class DailySignItemView @JvmOverloads constructor( defStyleAttr: Int = 0 ) : LinearLayout(context, attrs, defStyleAttr) { - private lateinit var mData: RewardDetail + private lateinit var mConfigData: RewardDetail + private lateinit var mStateData: DailySignDayInfoBean private var mBinding: DailySignItemBinding private var mIsSelected = false private var mSelectStateCallback: ((isSelected: Boolean)->Unit)? = null @@ -42,11 +46,31 @@ class DailySignItemView @JvmOverloads constructor( - fun setData(data: RewardDetail, selectStateCallback: (isSelected: Boolean)->Unit) { - mData = data + fun setData(data: RewardDetail, stateData: DailySignDayInfoBean, selectStateCallback: (isSelected: Boolean)->Unit) { + mConfigData = data + mStateData = stateData mSelectStateCallback = selectStateCallback - mBinding.tvGoldNum.text = "" + mData.value - mBinding.tvDayNum.text = context.getString(R.string.day) + " "+ mData.day + 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 + } + } } fun setLargeWidthMode() { @@ -63,6 +87,9 @@ class DailySignItemView @JvmOverloads constructor( } } + fun getStateBean(): DailySignDayInfoBean { + return mStateData + } } diff --git a/app/src/main/res/layout/daily_sign_item.xml b/app/src/main/res/layout/daily_sign_item.xml index 600caac..ebee031 100644 --- a/app/src/main/res/layout/daily_sign_item.xml +++ b/app/src/main/res/layout/daily_sign_item.xml @@ -48,14 +48,31 @@ - + android:layout_marginTop="1dp"> + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_daily_sign.xml b/app/src/main/res/layout/dialog_daily_sign.xml index d8f7835..a45e6ca 100644 --- a/app/src/main/res/layout/dialog_daily_sign.xml +++ b/app/src/main/res/layout/dialog_daily_sign.xml @@ -27,11 +27,11 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" - android:gravity="center" + android:gravity="center_horizontal" android:layout_marginHorizontal="30dp" android:clipChildren="false" + android:layout_marginTop="45dp" app:layout_constraintTop_toTopOf="parent" - app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent" > @@ -143,76 +143,151 @@ - + android:clipChildren="false" > - - - - + + android:clipChildren="false" + android:orientation="horizontal" + android:gravity="center" + > - + - + android:layout_marginStart="10dp" + android:layout_weight="1"> + + + + + + + + + + android:layout_marginLeft="8dp" + android:layout_gravity="top|right" + android:layout_marginTop="-20dp" + android:layout_marginRight="3dp" + android:src="@mipmap/icon_x2"/> + + + + + + + + - - + + + + + - + android:layout_weight="1" + android:textSize="18sp" + android:textColor="@color/white" + android:text="@string/complement_hint" + android:gravity="center" + android:layout_gravity="center" + android:drawableStart="@mipmap/task_video" + android:drawablePadding="5dp" + /> - + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 2a8712e..aae70d1 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -64,6 +64,7 @@ Version\n Dinheiro Você ganhou uma recompensa! + Recuperar 1 dia de login \ No newline at end of file