阶梯广告 UI 及时更新

This commit is contained in:
renhaoting 2025-12-02 16:04:08 +08:00
parent 62db69b1d4
commit 16efb504e3
6 changed files with 58 additions and 23 deletions

View File

@ -11,8 +11,8 @@ object VididinEvents {
const val Event_Finish_One_Video = 701
const val Event_Finish_One_Ad = 702
const val Event_Toady_Watched_Video_Total = 703
const val Event_Toady_Watched_Ad_Total = 704
const val EVENT_DAILY_WATCHED_VIDEO_NUM_CHANGED = 703
const val EVENT_DAILY_WATCHED_AD_NUM_CHANGED = 704

View File

@ -24,10 +24,13 @@ import com.gamedog.vididin.VididinEvents
import com.gamedog.vididin.core.login.login.AccountManager
import com.gamedog.vididin.main.WatchAdDialog
import com.gamedog.vididin.main.fragments.task.DailySignDialog
import com.gamedog.vididin.main.fragments.task.DailySignSuccessDialog
import com.gamedog.vididin.main.fragments.task.TaskBean
import com.gamedog.vididin.main.fragments.task.widget.DailyTaskItemView
import com.gamedog.vididin.main.interfaces.OnTabClickAgainListener
import com.gamedog.vididin.manager.TaskManager
import com.gamedog.vididin.manager.taskbeans.BaseTaskState.Companion.STATE_FINISH
import com.gamedog.vididin.manager.taskbeans.BaseTaskState.Companion.STATE_ONGOING
import com.gamedog.vididin.router.Router
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.launch
@ -46,8 +49,8 @@ class TasksFragment : AppViewsFragment<ViewBinding, UiState, ViewModel>(), OnTab
override val mViewModel: ViewModel by viewModels()
override var isBackgroundBright: Boolean = true
private val mDailyWatchVideoTaskViewList = mutableListOf<DailyTaskItemView>()
private val mDailyWatchVideoAdViewList = mutableListOf<DailyTaskItemView>()
private val mDailyWatchVideoViewList = mutableListOf<DailyTaskItemView>()
private val mDailyWatchAdViewList = mutableListOf<DailyTaskItemView>()
override fun inflateViewBinding(
@ -151,9 +154,9 @@ class TasksFragment : AppViewsFragment<ViewBinding, UiState, ViewModel>(), OnTab
dailyWatchAdTask.reward_details.forEachIndexed { index, detail ->
val watchTaskItemView = DailyTaskItemView(requireActivity())
watchTaskItemView.setActionFun {
gotoDailyWatchAd()
handleDailyAdButClicked(index)
}
mDailyWatchVideoAdViewList.add(watchTaskItemView)
mDailyWatchAdViewList.add(watchTaskItemView)
binding?.dailyTasksContainer!!.run {
watchTaskItemView.initUI(R.mipmap.icon_ad, R.string.daily_ad_task_title,
@ -177,9 +180,9 @@ class TasksFragment : AppViewsFragment<ViewBinding, UiState, ViewModel>(), OnTab
dailyWatchVideoTask.reward_details.forEachIndexed {index, detail ->
val watchTaskItemView = DailyTaskItemView(requireActivity())
watchTaskItemView.setActionFun {
gotoWatchVideo()
handleDailyVideoButClicked(index)
}
mDailyWatchVideoTaskViewList.add(watchTaskItemView)
mDailyWatchVideoViewList.add(watchTaskItemView)
binding?.dailyTasksContainer!!.run {
watchTaskItemView.initUI(R.mipmap.icon_video_task, R.string.daily_video_task_title,
@ -207,7 +210,7 @@ class TasksFragment : AppViewsFragment<ViewBinding, UiState, ViewModel>(), OnTab
private fun updateDailyWatchVideoUI() {
val statusBean = TaskManager.instance().dailyWatchVideoStatus().getStatusBean()
val subTaskStatusList = statusBean.getSubTaskRewardState()
mDailyWatchVideoTaskViewList.forEachIndexed { index, view ->
mDailyWatchVideoViewList.forEachIndexed { index, view ->
view.updateProgress(statusBean.getTodayWatchedCount(), subTaskStatusList[index].state)
}
}
@ -215,7 +218,7 @@ class TasksFragment : AppViewsFragment<ViewBinding, UiState, ViewModel>(), OnTab
private fun updateDailyWatchAdUI() {
val statusBean = TaskManager.instance().dailyWatchAdStatus().getStatusBean()
val subTaskStatusList = statusBean.getSubTaskRewardState()
mDailyWatchVideoAdViewList.forEachIndexed { index, view ->
mDailyWatchAdViewList.forEachIndexed { index, view ->
view.updateProgress(statusBean.getTodayWatchedAdCount(), subTaskStatusList[index].state)
}
}
@ -239,17 +242,17 @@ class TasksFragment : AppViewsFragment<ViewBinding, UiState, ViewModel>(), OnTab
updateUICashTotal()
}
VididinEvents.Event_Toady_Watched_Video_Total -> {
VididinEvents.EVENT_DAILY_WATCHED_VIDEO_NUM_CHANGED -> {
updateDailyWatchVideoUI()
}
VididinEvents.Event_Toady_Watched_Ad_Total -> {
VididinEvents.EVENT_DAILY_WATCHED_AD_NUM_CHANGED -> {
updateDailyWatchAdUI()
}
}
}, VididinEvents.Event_Sign_State_Changed, VididinEvents.Event_Account_Cash_Changed,
VididinEvents.Event_Account_Gold_Changed, VididinEvents.Event_Toady_Watched_Video_Total,
VididinEvents.Event_Toady_Watched_Ad_Total)
VididinEvents.Event_Account_Gold_Changed, VididinEvents.EVENT_DAILY_WATCHED_VIDEO_NUM_CHANGED,
VididinEvents.EVENT_DAILY_WATCHED_AD_NUM_CHANGED)
}
private fun updateDailySignButUI() {
@ -308,12 +311,38 @@ class TasksFragment : AppViewsFragment<ViewBinding, UiState, ViewModel>(), OnTab
})
}
private fun gotoWatchVideo() {
Router.Mine.createMineFragment()
private fun handleDailyVideoButClicked(itemIndex: Int) {
val subTaskList = TaskManager.instance().dailyWatchVideoStatus().getStatusBean().getSubTaskRewardState()
if (itemIndex >= 0 && itemIndex < subTaskList.size) {
val subTaskState = subTaskList[itemIndex]
when (subTaskState.state) {
STATE_ONGOING -> {
Router.Home.createHomeFragment() // TODO - jump not create
}
STATE_FINISH -> {
if (TaskManager.instance().dailyWatchVideoStatus().claimSubTaskReward(itemIndex)) {
DailySignSuccessDialog(requireActivity()).initData(subTaskState.mRewardNum, false).show()
}
}
}
}
}
private fun gotoDailyWatchAd() {
WatchAdDialog(requireActivity(), VididinEvents.Event_AD_TASK_TYPE_Watch_Ad_Daily, null).show()
private fun handleDailyAdButClicked(itemIndex: Int) {
val subTaskList = TaskManager.instance().dailyWatchAdStatus().getStatusBean().getSubTaskRewardState()
if (itemIndex >= 0 && itemIndex < subTaskList.size) {
val subTaskState = subTaskList[itemIndex]
when (subTaskState.state) {
STATE_ONGOING -> {
WatchAdDialog(requireActivity(), VididinEvents.Event_AD_TASK_TYPE_Watch_Ad_Daily, null).show()
}
STATE_FINISH -> {
if (TaskManager.instance().dailyWatchAdStatus().claimSubTaskReward(itemIndex)) {
DailySignSuccessDialog(requireActivity()).initData(subTaskState.mRewardNum, false).show()
}
}
}
}
}

View File

@ -70,7 +70,7 @@ class DailyTaskItemView @JvmOverloads constructor(
STATE_CLAIMED -> {
setText(R.string.Resgatado)
setBackgroundResource(R.drawable.bg_sub_task_normal)
setBackgroundResource(R.drawable.bg_sub_task_disable)
isClickable = false
alpha = 0.4F
}

View File

@ -3,7 +3,6 @@ package com.gamedog.vididin.manager.helpers
import com.ama.core.architecture.util.DateUtil
import com.ama.core.architecture.util.SpUtil
import com.ama.core.architecture.util.eventbus.NotifyMan
import com.gamedog.vididin.R
import com.gamedog.vididin.VididinEvents
import com.gamedog.vididin.core.login.login.AccountManager
import com.gamedog.vididin.manager.taskbeans.BaseTaskState.Companion.STATE_CLAIMED
@ -36,7 +35,7 @@ class DailyWatchAdTaskHelper : BaseTaskHelper<TaskStateWatchAd>() {
}
private fun notifyEvents() {
NotifyMan.instance().sendEvent(VididinEvents.Event_Toady_Watched_Ad_Total, null)
NotifyMan.instance().sendEvent(VididinEvents.EVENT_DAILY_WATCHED_AD_NUM_CHANGED, null)
}
@ -86,6 +85,9 @@ class DailyWatchAdTaskHelper : BaseTaskHelper<TaskStateWatchAd>() {
val subTask = mStateBean.getSubTaskRewardState()[subTaskIndex]
if (subTask.state == STATE_FINISH) {
AccountManager.addGold(subTask.mRewardNum)
subTask.state = STATE_CLAIMED
saveState2Sp()
notifyEvents()
return true
}
} catch (e: Exception) {

View File

@ -5,6 +5,7 @@ import com.ama.core.architecture.util.SpUtil
import com.ama.core.architecture.util.eventbus.NotifyMan
import com.gamedog.vididin.VididinEvents
import com.gamedog.vididin.core.login.login.AccountManager
import com.gamedog.vididin.manager.taskbeans.BaseTaskState.Companion.STATE_CLAIMED
import com.gamedog.vididin.manager.taskbeans.BaseTaskState.Companion.STATE_FINISH
import com.gamedog.vididin.manager.taskbeans.BaseTaskState.Companion.STATE_ONGOING
import com.gamedog.vididin.manager.taskbeans.DailyStateWatchVideoBean
@ -34,7 +35,7 @@ class DailyWatchVideoTaskHelper : BaseTaskHelper<DailyStateWatchVideoBean>() {
}
private fun notifyEvents() {
NotifyMan.instance().sendEvent(VididinEvents.Event_Toady_Watched_Video_Total, null)
NotifyMan.instance().sendEvent(VididinEvents.EVENT_DAILY_WATCHED_VIDEO_NUM_CHANGED, null)
}
@ -82,6 +83,9 @@ class DailyWatchVideoTaskHelper : BaseTaskHelper<DailyStateWatchVideoBean>() {
val subTask = mStateBean.getSubTaskRewardState()[subTaskIndex]
if (subTask.state == STATE_FINISH) {
AccountManager.addGold(subTask.mRewardNum)
subTask.state = STATE_CLAIMED
saveState2Sp()
notifyEvents()
return true
}
} catch (e: Exception) {

View File

@ -21,7 +21,7 @@ data class TaskStateWatchAd(
}
fun isAllTaskFinish(): Boolean {
return mSubTaskRewardState.all { it.state > STATE_ONGOING }
return mSubTaskRewardState.all { it.state >= STATE_CLAIMED }
}
fun initSubTaskRewardList(subTasks: List<RewardDetail>) {