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

View File

@ -177,7 +177,7 @@ class TaskManager private constructor() {
fun executeDailySign(dayIndex: Int, isDoubleReward: Boolean, isByAd: Boolean) : Boolean {
val daySignState = mDailySignData.signStateList[dayIndex]
if (!daySignState.hasSigned) {
if (!daySignState.hasSigned || (dayIndex == mCurDayIndexDailySign && !daySignState.hasWatchedAd)) {
val dayReward = getDailyCheckInTask()?.reward_details?.get(dayIndex)?.value ?: 0
daySignState.hasRewardedNum += if (isDoubleReward) 2*dayReward else dayReward
daySignState.hasSigned = true
@ -219,6 +219,16 @@ class TaskManager private constructor() {
return forgotSignDays
}
fun getSignDaysTotal(): Int {
var signDays = 0
mDailySignData.signStateList.forEachIndexed { index, item->
if (item.hasSigned) {
signDays++
}
}
return signDays
}
fun getForgotSignFirstDayIndex(): Int {
val curDayIndex = getCurDayIndexOfDailyCheckIn()
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.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
@ -41,8 +40,7 @@ class DailySignItemView @JvmOverloads constructor(
mBinding.tvGoldNum.text = "" + mConfigData.value
mBinding.tvDayNum.text = context.getString(R.string.day) + " "+ mConfigData.day
mBinding.ivDone.isVisible = mStateData.hasSigned
mBinding.tvDayNum.isVisible = !mStateData.hasSigned
updateUI()
}
fun setLargeWidthMode() {
@ -52,15 +50,24 @@ class DailySignItemView @JvmOverloads constructor(
fun setSelectState(isSelect: Boolean) {
mIsSelected = isSelect
updateUI()
}
fun getStateBean(): DailySignDayInfoBean {
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
}
}
fun getStateBean(): DailySignDayInfoBean {
return mStateData
mBinding.rlRoot.alpha = if (mStateData.hasSigned) 0.3F else 1F
}

View File

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

View File

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

View File

@ -13,7 +13,7 @@
<string name="task_act_convi">Convidar</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_times">Logins realizados: 0/7</string>
<string name="daily_sign_times">Logins realizados: </string>
<string name="resgatar">Resgatar</string>
<string name="assistir">Assistir</string>
<string name="day">Dia</string>