bug修复- 福利界面标题未居中,倒计时未加进去

This commit is contained in:
renhaoting 2025-12-23 11:21:31 +08:00
parent 64aa22a0de
commit 03b5f0fba1
7 changed files with 156 additions and 4 deletions

View File

@ -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

View File

@ -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()
}
}
}

View File

@ -148,6 +148,18 @@ class BoxTaskHelper: BaseTaskHelper<TaskStateBoxRoot, BoxTaskRoot>() {
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

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<shape android:shape="rectangle"
xmlns:android="http://schemas.android.com/apk/res/android">
<stroke android:width="2dp" android:color="#ffffffff" />
<solid android:color="#ffffd3d3" />
<corners android:topLeftRadius="5dp" android:topRightRadius="5dp" android:bottomLeftRadius="5dp" android:bottomRightRadius="5dp" />
</shape>

View File

@ -60,11 +60,17 @@
</FrameLayout>
<com.gamedog.vididin.features.benefit.widget.CounterDownTimerView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
/>
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content">
android:layout_height="wrap_content"
android:layout_marginTop="10dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"

View File

@ -0,0 +1,59 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center_vertical"
android:layout_centerInParent="true">
<TextView
android:id="@+id/tv_hour"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:text="hour"
android:background="@drawable/bg_benefit_timer_item"
android:textSize="15sp"
android:textStyle="bold"
android:textColor="@color/red_28"
/>
<TextView
android:id="@+id/tv_min"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:layout_marginHorizontal="@dimen/dp20"
android:text="min"
android:background="@drawable/bg_benefit_timer_item"
android:textSize="15sp"
android:textStyle="bold"
android:textColor="@color/red_28"
/>
<TextView
android:id="@+id/tv_second"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:text="sec"
android:background="@drawable/bg_benefit_timer_item"
android:textSize="15sp"
android:textStyle="bold"
android:textColor="@color/red_28"
/>
</LinearLayout>
</RelativeLayout>

View File

@ -215,6 +215,18 @@ class DateUtil private constructor() {
return ((calendarCurrent.timeInMillis - calendarStart.timeInMillis) / MS_NUM_ONE_DAY).toInt()
}
fun formatMs2HMS(msNum: Long): List<Long> {
val resultList = mutableListOf<Long>()
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
}
}