From 03b5f0fba11f55846137fe4dfe4b940f837482ae Mon Sep 17 00:00:00 2001 From: renhaoting <370797079@qq.com> Date: Tue, 23 Dec 2025 11:21:31 +0800 Subject: [PATCH] =?UTF-8?q?bug=E4=BF=AE=E5=A4=8D-=20=E7=A6=8F=E5=88=A9?= =?UTF-8?q?=E7=95=8C=E9=9D=A2=E6=A0=87=E9=A2=98=E6=9C=AA=E5=B1=85=E4=B8=AD?= =?UTF-8?q?=EF=BC=8C=E5=80=92=E8=AE=A1=E6=97=B6=E6=9C=AA=E5=8A=A0=E8=BF=9B?= =?UTF-8?q?=E5=8E=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../features/benefit/BenefitActivity.kt | 3 - .../benefit/widget/CounterDownTimerView.kt | 58 ++++++++++++++++++ .../vididin/manager/helpers/BoxTaskHelper.kt | 12 ++++ .../res/drawable/bg_benefit_timer_item.xml | 8 +++ app/src/main/res/layout/activity_benefit.xml | 8 ++- .../layout/benefit_countdown_timer_view.xml | 59 +++++++++++++++++++ .../ama/core/architecture/util/DateUtil.kt | 12 ++++ 7 files changed, 156 insertions(+), 4 deletions(-) create mode 100644 app/src/main/java/com/gamedog/vididin/features/benefit/widget/CounterDownTimerView.kt create mode 100644 app/src/main/res/drawable/bg_benefit_timer_item.xml create mode 100644 app/src/main/res/layout/benefit_countdown_timer_view.xml diff --git a/app/src/main/java/com/gamedog/vididin/features/benefit/BenefitActivity.kt b/app/src/main/java/com/gamedog/vididin/features/benefit/BenefitActivity.kt index 336a296..8d288eb 100644 --- a/app/src/main/java/com/gamedog/vididin/features/benefit/BenefitActivity.kt +++ b/app/src/main/java/com/gamedog/vididin/features/benefit/BenefitActivity.kt @@ -8,15 +8,12 @@ import android.view.ViewGroup import android.widget.LinearLayout import androidx.activity.viewModels import com.ama.core.architecture.appBase.AppViewsActivity -import com.ama.core.architecture.ext.toast import com.ama.core.architecture.util.AndroidUtil import com.ama.core.architecture.util.ResUtil import com.ama.core.architecture.util.eventbus.NotifyMan -import com.ama.core.architecture.util.setOnClickBatch import com.gamedog.vididin.VidiConst import com.vididin.real.money.game.R import com.gamedog.vididin.VididinEvents -import com.gamedog.vididin.core.login.login.AccountManager import com.gamedog.vididin.features.benefit.widget.BenefitTaskItemView import com.gamedog.vididin.main.fragments.task.DailySignDialog import com.gamedog.vididin.main.interfaces.OnTabStyleListener diff --git a/app/src/main/java/com/gamedog/vididin/features/benefit/widget/CounterDownTimerView.kt b/app/src/main/java/com/gamedog/vididin/features/benefit/widget/CounterDownTimerView.kt new file mode 100644 index 0000000..9b29c63 --- /dev/null +++ b/app/src/main/java/com/gamedog/vididin/features/benefit/widget/CounterDownTimerView.kt @@ -0,0 +1,58 @@ +package com.gamedog.vididin.features.benefit.widget + +import android.content.Context +import android.os.CountDownTimer +import android.util.AttributeSet +import android.view.LayoutInflater +import android.widget.LinearLayout +import com.ama.core.architecture.util.DateUtil +import com.gamedog.vididin.manager.TaskManager +import com.vididin.real.money.game.databinding.BenefitCountdownTimerViewBinding + + +class CounterDownTimerView @JvmOverloads constructor( + context: Context, + attrs: AttributeSet? = null, + defStyleAttr: Int = 0 +) : LinearLayout(context, attrs, defStyleAttr) { + private lateinit var mTimer: CountDownTimer + private var mBinding: BenefitCountdownTimerViewBinding + + + init { + mBinding = BenefitCountdownTimerViewBinding.inflate(LayoutInflater.from(context), this, true) + } + + override fun onAttachedToWindow() { + super.onAttachedToWindow() + startTimer() + } + + private fun startTimer() { + val startMs = TaskManager.instance().boxTaskStatus().getAllBoxStartTimeMs() + val totalMs = TaskManager.instance().boxTaskStatus().getAllBoxTotalDurationMs() + + val restMs = startMs + totalMs - System.currentTimeMillis() + + mTimer = object : CountDownTimer(restMs, 1000) { + override fun onTick(millisUntilFinished: Long) { + val resultList = DateUtil.formatMs2HMS(millisUntilFinished) + mBinding.tvHour.text = resultList[0].toString() + mBinding.tvMin.text = resultList[1].toString() + mBinding.tvSecond.text = resultList[2].toString() + } + + override fun onFinish() { + } + }.start() + } + + override fun onDetachedFromWindow() { + super.onDetachedFromWindow() + if (mTimer != null) { + mTimer.cancel() + } + + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/gamedog/vididin/manager/helpers/BoxTaskHelper.kt b/app/src/main/java/com/gamedog/vididin/manager/helpers/BoxTaskHelper.kt index 4e224a7..3e263e2 100644 --- a/app/src/main/java/com/gamedog/vididin/manager/helpers/BoxTaskHelper.kt +++ b/app/src/main/java/com/gamedog/vididin/manager/helpers/BoxTaskHelper.kt @@ -148,6 +148,18 @@ class BoxTaskHelper: BaseTaskHelper() { return null } + fun getAllBoxTotalDurationMs(): Long { + var totalDays = 0L + mStateBean.tasks.forEach { + totalDays += it.duration_days + } + return totalDays * 24 * 3600000 + } + + fun getAllBoxStartTimeMs(): Long { + return mStateBean.startMs + } + fun isBoxAllFinished(boxIndex: Int) : Boolean { val stateEnum = getBoxStateEnum(boxIndex) return stateEnum == STATE_FINISH || stateEnum == STATE_CLAIMED diff --git a/app/src/main/res/drawable/bg_benefit_timer_item.xml b/app/src/main/res/drawable/bg_benefit_timer_item.xml new file mode 100644 index 0000000..8a19cd9 --- /dev/null +++ b/app/src/main/res/drawable/bg_benefit_timer_item.xml @@ -0,0 +1,8 @@ + + + + + + + diff --git a/app/src/main/res/layout/activity_benefit.xml b/app/src/main/res/layout/activity_benefit.xml index 1402611..b51a4b9 100644 --- a/app/src/main/res/layout/activity_benefit.xml +++ b/app/src/main/res/layout/activity_benefit.xml @@ -60,11 +60,17 @@ + + android:layout_height="wrap_content" + android:layout_marginTop="10dp"> + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/core/architecture/src/main/java/com/ama/core/architecture/util/DateUtil.kt b/core/architecture/src/main/java/com/ama/core/architecture/util/DateUtil.kt index b038d91..c2812b8 100644 --- a/core/architecture/src/main/java/com/ama/core/architecture/util/DateUtil.kt +++ b/core/architecture/src/main/java/com/ama/core/architecture/util/DateUtil.kt @@ -215,6 +215,18 @@ class DateUtil private constructor() { return ((calendarCurrent.timeInMillis - calendarStart.timeInMillis) / MS_NUM_ONE_DAY).toInt() } + fun formatMs2HMS(msNum: Long): List { + val resultList = mutableListOf() + val hours = msNum / (3600000) + val minute = (msNum - hours * 3600000) / (60000) + val second = (msNum - hours * 3600000 - minute * 60000) / (1000) + + resultList.add(hours) + resultList.add(minute) + resultList.add(second) + return resultList + } + }