签到后UI刷新

This commit is contained in:
renhaoting 2025-11-26 19:21:37 +08:00
parent 6edf63abf5
commit 38ea782dc1
6 changed files with 64 additions and 25 deletions

View File

@ -58,6 +58,7 @@ class DailySignDialog(context: Context) : BindingDialog<DialogDailySignBinding>(
private fun clickedNormalSign() { private fun clickedNormalSign() {
if (TaskManager.instance().executeDailySign(mCurDayIndex, false, false)) { if (TaskManager.instance().executeDailySign(mCurDayIndex, false, false)) {
DailySignSuccessDialog(context).initData(mConfigList?.get(mCurDayIndex)?.value, true).show() DailySignSuccessDialog(context).initData(mConfigList?.get(mCurDayIndex)?.value, true).show()
updateUI(mCurDayIndex)
} }
} }
@ -65,6 +66,7 @@ class DailySignDialog(context: Context) : BindingDialog<DialogDailySignBinding>(
startAdTask("signalAd", { startAdTask("signalAd", {
if (TaskManager.instance().executeDailySign(mCurDayIndex, false, true)) { if (TaskManager.instance().executeDailySign(mCurDayIndex, false, true)) {
DailySignSuccessDialog(context).initData(mConfigList?.get(mCurDayIndex)?.value, false).show() DailySignSuccessDialog(context).initData(mConfigList?.get(mCurDayIndex)?.value, false).show()
updateUI(mCurDayIndex)
} }
}) })
} }
@ -73,6 +75,7 @@ class DailySignDialog(context: Context) : BindingDialog<DialogDailySignBinding>(
startAdTask("doubleAd", { startAdTask("doubleAd", {
if (TaskManager.instance().executeDailySign(mCurDayIndex, true, true)) { if (TaskManager.instance().executeDailySign(mCurDayIndex, true, true)) {
DailySignSuccessDialog(context).initData(mConfigList?.get(mCurDayIndex)?.value, false).show() DailySignSuccessDialog(context).initData(mConfigList?.get(mCurDayIndex)?.value, false).show()
updateUI(mCurDayIndex)
} }
}) })
} }
@ -83,11 +86,11 @@ class DailySignDialog(context: Context) : BindingDialog<DialogDailySignBinding>(
startAdTask("complementAd", { startAdTask("complementAd", {
if (TaskManager.instance().executeDailySign(firstForgotSignDayIndex, false, false)){ if (TaskManager.instance().executeDailySign(firstForgotSignDayIndex, false, false)){
DailySignSuccessDialog(context).initData(mConfigList?.get(mCurDayIndex)?.value, false).show() DailySignSuccessDialog(context).initData(mConfigList?.get(mCurDayIndex)?.value, false).show()
updateUI(firstForgotSignDayIndex)
} }
}) })
} else { } else {
updateUI() updateUI(firstForgotSignDayIndex)
} }
} }
@ -124,15 +127,21 @@ class DailySignDialog(context: Context) : BindingDialog<DialogDailySignBinding>(
private fun initSignState() { private fun initSignState() {
mCurDayIndex = TaskManager.instance().getCurDayIndexOfDailyCheckIn() mCurDayIndex = TaskManager.instance().getCurDayIndexOfDailyCheckIn()
mSignItemViewList[mCurDayIndex].setSelectState(true) mSignItemViewList[mCurDayIndex].setSelectState(true)
updateUI() updateUI(mCurDayIndex)
} }
private fun updateUI() { private fun updateUI(signedDayIndex: Int) {
val curDayView = mSignItemViewList[mCurDayIndex] val curDayView = mSignItemViewList[mCurDayIndex]
val curDayStateBean = curDayView.getStateBean() val curDayStateBean = curDayView.getStateBean()
mBinding.tvSignedTotal.text = buildString {
append(TaskManager.instance().getSignDaysTotal())
append("/7")
}
mSignItemViewList[signedDayIndex].updateUI()
if (!curDayStateBean.hasSigned) { if (!curDayStateBean.hasSigned) {
mBinding.actionNormalTwoButs.isVisible = true mBinding.actionNormalTwoButs.isVisible = true
mBinding.actionWatchAd.isVisible = false mBinding.actionWatchAd.isVisible = false

View File

@ -177,7 +177,7 @@ class TaskManager private constructor() {
fun executeDailySign(dayIndex: Int, isDoubleReward: Boolean, isByAd: Boolean) : Boolean { fun executeDailySign(dayIndex: Int, isDoubleReward: Boolean, isByAd: Boolean) : Boolean {
val daySignState = mDailySignData.signStateList[dayIndex] val daySignState = mDailySignData.signStateList[dayIndex]
if (!daySignState.hasSigned) { if (!daySignState.hasSigned || (dayIndex == mCurDayIndexDailySign && !daySignState.hasWatchedAd)) {
val dayReward = getDailyCheckInTask()?.reward_details?.get(dayIndex)?.value ?: 0 val dayReward = getDailyCheckInTask()?.reward_details?.get(dayIndex)?.value ?: 0
daySignState.hasRewardedNum += if (isDoubleReward) 2*dayReward else dayReward daySignState.hasRewardedNum += if (isDoubleReward) 2*dayReward else dayReward
daySignState.hasSigned = true daySignState.hasSigned = true
@ -219,6 +219,16 @@ class TaskManager private constructor() {
return forgotSignDays return forgotSignDays
} }
fun getSignDaysTotal(): Int {
var signDays = 0
mDailySignData.signStateList.forEachIndexed { index, item->
if (item.hasSigned) {
signDays++
}
}
return signDays
}
fun getForgotSignFirstDayIndex(): Int { fun getForgotSignFirstDayIndex(): Int {
val curDayIndex = getCurDayIndexOfDailyCheckIn() val curDayIndex = getCurDayIndexOfDailyCheckIn()
mDailySignData.signStateList.forEachIndexed { index, item-> mDailySignData.signStateList.forEachIndexed { index, item->

View File

@ -10,7 +10,6 @@ import com.ama.core.architecture.util.ResUtil
import com.gamedog.vididin.R import com.gamedog.vididin.R
import com.gamedog.vididin.databinding.DailySignItemBinding import com.gamedog.vididin.databinding.DailySignItemBinding
import com.gamedog.vididin.main.fragments.task.RewardDetail import com.gamedog.vididin.main.fragments.task.RewardDetail
import com.gamedog.vididin.manager.DailySignBean
import com.gamedog.vididin.manager.DailySignDayInfoBean import com.gamedog.vididin.manager.DailySignDayInfoBean
import kotlin.run import kotlin.run
@ -41,8 +40,7 @@ class DailySignItemView @JvmOverloads constructor(
mBinding.tvGoldNum.text = "" + mConfigData.value mBinding.tvGoldNum.text = "" + mConfigData.value
mBinding.tvDayNum.text = context.getString(R.string.day) + " "+ mConfigData.day mBinding.tvDayNum.text = context.getString(R.string.day) + " "+ mConfigData.day
mBinding.ivDone.isVisible = mStateData.hasSigned updateUI()
mBinding.tvDayNum.isVisible = !mStateData.hasSigned
} }
fun setLargeWidthMode() { fun setLargeWidthMode() {
@ -52,17 +50,26 @@ class DailySignItemView @JvmOverloads constructor(
fun setSelectState(isSelect: Boolean) { fun setSelectState(isSelect: Boolean) {
mIsSelected = isSelect mIsSelected = isSelect
if (mIsSelected) { updateUI()
mBinding.rlRoot.foreground = ResUtil.getDrawable(R.drawable.bg_daily_sign_day_item)
} else {
mBinding.rlRoot.foreground = null
}
} }
fun getStateBean(): DailySignDayInfoBean { fun getStateBean(): DailySignDayInfoBean {
return mStateData return mStateData
} }
fun updateUI() {
mBinding.ivDone.isVisible = mStateData.hasSigned
mBinding.tvDayNum.isVisible = !mStateData.hasSigned
if (mIsSelected) {
mBinding.rlRoot.foreground = ResUtil.getDrawable(R.drawable.bg_daily_sign_day_item)
} else {
mBinding.rlRoot.foreground = null
}
mBinding.rlRoot.alpha = if (mStateData.hasSigned) 0.3F else 1F
}
} }

View File

@ -2,7 +2,7 @@
<LinearLayout <LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/content_root" android:id="@+id/content_root"
android:layout_width="match_parent" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="vertical" android:orientation="vertical"
android:gravity="center_horizontal" android:gravity="center_horizontal"
@ -45,7 +45,6 @@
android:text="100" android:text="100"
/> />
</LinearLayout> </LinearLayout>
</RelativeLayout> </RelativeLayout>
@ -67,7 +66,7 @@
android:id="@+id/iv_done" android:id="@+id/iv_done"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="0dp" android:layout_marginTop="2dp"
android:tint="@color/green_39" android:tint="@color/green_39"
android:src="@mipmap/icon_check_mark" android:src="@mipmap/icon_check_mark"
android:layout_gravity="center" android:layout_gravity="center"

View File

@ -66,19 +66,32 @@
android:text="@string/daily_sign_desc" android:text="@string/daily_sign_desc"
/> />
<androidx.appcompat.widget.AppCompatTextView <LinearLayout
android:id="@+id/tv_times"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="5dp" android:orientation="horizontal"
android:layout_marginTop="5dp" >
<androidx.appcompat.widget.AppCompatTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="14sp" android:textSize="14sp"
android:textColor="@color/gray9" android:textColor="@color/gray9"
android:text="@string/daily_sign_times" android:text="@string/daily_sign_times"
/> />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_signed_total"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="14sp"
android:layout_marginLeft="3dp"
android:textColor="@color/gray9"
/>
</LinearLayout>
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:orientation="vertical"> android:orientation="vertical">
<LinearLayout <LinearLayout
@ -290,16 +303,17 @@
<!--明日再来--> <!--明日再来-->
<FrameLayout <FrameLayout
android:id="@+id/action_tomorrow_sign" android:id="@+id/action_tomorrow_sign"
android:layout_width="wrap_content" android:layout_width="match_parent"
android:layout_height="50dp" android:layout_height="50dp"
android:layout_gravity="center" android:layout_gravity="center"
android:paddingHorizontal="30dp" android:paddingHorizontal="20dp"
android:background="@drawable/bg_sign_done_but" android:background="@drawable/bg_sign_done_but"
android:visibility="gone"> android:visibility="visible">
<androidx.appcompat.widget.AppCompatTextView <androidx.appcompat.widget.AppCompatTextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:textSize="18sp" android:textSize="18sp"
android:singleLine="true"
android:textColor="@color/white" android:textColor="@color/white"
android:text="@string/tomorrow_sign" android:text="@string/tomorrow_sign"
android:gravity="center" android:gravity="center"

View File

@ -13,7 +13,7 @@
<string name="task_act_convi">Convidar</string> <string name="task_act_convi">Convidar</string>
<string name="task_act_game">Game Center</string> <string name="task_act_game">Game Center</string>
<string name="daily_sign_desc">Conclua o login de hoje e pode ganhar até 666 moedas!</string> <string name="daily_sign_desc">Conclua o login de hoje e pode ganhar até 666 moedas!</string>
<string name="daily_sign_times">Logins realizados: 0/7</string> <string name="daily_sign_times">Logins realizados: </string>
<string name="resgatar">Resgatar</string> <string name="resgatar">Resgatar</string>
<string name="assistir">Assistir</string> <string name="assistir">Assistir</string>
<string name="day">Dia</string> <string name="day">Dia</string>