酒吧 定时器。

This commit is contained in:
2026-01-07 18:03:16 +08:00
parent 5f7bac8a12
commit 1c4384f5d5
4 changed files with 106 additions and 3 deletions

View File

@@ -1,6 +1,8 @@
package com.xscm.modulemain.activity.room.fragment
import android.os.Bundle
import android.text.TextUtils
import android.view.View
import com.blankj.utilcode.util.ActivityUtils
import com.blankj.utilcode.util.LogUtils
import com.xscm.modulemain.R
@@ -15,6 +17,7 @@ import com.xscm.modulemain.dialog.barRoom.RoomAboutDialog
import com.xscm.modulemain.dialog.barRoom.RoomDurationDialog
import com.xscm.modulemain.dialog.barRoom.SetupCustomGiftDialog
import com.xscm.modulemain.dialog.barRoom.WishGiftDialog
import com.xscm.modulemain.utils.CountdownTimer
import com.xscm.modulemain.widget.RoomPubWheatView
import com.xscm.moduleutil.base.BaseMvpFragment
import com.xscm.moduleutil.base.CommonAppContext
@@ -24,6 +27,11 @@ import com.xscm.moduleutil.bean.room.RoomInfoResp
import com.xscm.moduleutil.bean.room.RoomUserBean
import com.xscm.moduleutil.utils.ClickUtils
import com.xscm.moduleutil.utils.SpUtil
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.SupervisorJob
import kotlinx.coroutines.cancel
import kotlinx.coroutines.launch
/**
* @Author
@@ -58,6 +66,41 @@ class RoomPubFragment(var mRoomInfoResp: RoomInfoResp?) :
private val indexList: MutableList<String> =
mutableListOf("9", "10", "1", "2", "3", "4", "5", "6")
private val timer = CountdownTimer()
private val scope = CoroutineScope(Dispatchers.Main + SupervisorJob())
// 在需要开始计时的地方调用
private fun startTimer(milliseconds: Long) {
LogUtils.e("startTimer: $milliseconds")
// 启动计时器
timer.startCountdown(milliseconds, scope)
// 观察时间变化
scope.launch {
timer.timeLeft.collect { time ->
viewList.forEach { it ->
if (it.pitNumber != "9" && it.pitNumber != "10") {
if (!TextUtils.isEmpty(it.pitBean.user_id) && !it.pitBean.user_id.equals("0")) {
val time =
it.pitBean.end_time.toLong() * 1000 - System.currentTimeMillis()
if (time <= 0) {
it.setTime("00:00")
} else {
it.setTime(timer.formatTime2(time))
}
}
}
}
}
}
}
private fun stopTimer() {
timer.stop()
}
override fun initData() {
}
@@ -80,6 +123,12 @@ class RoomPubFragment(var mRoomInfoResp: RoomInfoResp?) :
val bean = mRoomInfoResp?.room_info?.pit_list!![indexList[idx].toInt() - 1]
view.setData(bean)
if (idx != 0 && idx != 1) {
if (!TextUtils.isEmpty(bean.user_id) && !bean.user_id.equals("0")) {
startTimer(bean.end_time.toLong())
}
}
view.iv_custom_gift?.setOnClickListener {
GiftGivingDialog(
ActivityUtils.getTopActivity(),
@@ -145,7 +194,7 @@ class RoomPubFragment(var mRoomInfoResp: RoomInfoResp?) :
} else {
if (view.pitBean.user_id == "0" || view.pitBean.user_id.isEmpty()) {
// TODO: 这是展示设置心愿礼物的,这里有个点,要考虑,当前用户在麦位上,点击的时候,直接走上麦按钮,如果不在麦上,就直接选择心愿礼物
WishGiftDialog(ActivityUtils.getTopActivity(),mRoomId).show()
WishGiftDialog(ActivityUtils.getTopActivity(), mRoomId).show()
// MvpPre!!.applyPit(mRoomInfoResp?.room_info?.room_id!!, view.pitNumber)
} else {
RoomUserInfoFragment.show(
@@ -223,8 +272,10 @@ class RoomPubFragment(var mRoomInfoResp: RoomInfoResp?) :
if (indexList.contains(pitNumber)) {
val viewPos = indexList.indexOf(pitNumber)
val pitBean = mRoomInfoResp?.room_info?.pit_list!![pitNumber.toInt() - 1]
pitBean.end_time = messageEvent.text.end_time
viewList[viewPos].setData(pitBean)
}
startTimer(messageEvent.text.end_time.toLong())
}
fun event1004(messageEvent: RoomMessageEvent) {
@@ -234,6 +285,17 @@ class RoomPubFragment(var mRoomInfoResp: RoomInfoResp?) :
val pitBean = mRoomInfoResp?.room_info?.pit_list!![pitNumber.toInt() - 1]
viewList[viewPos].setData(pitBean)
}
var isMaiPit = false
viewList.forEach { it ->
if (it.pitNumber != "9" && it.pitNumber != "10") {
if (!TextUtils.isEmpty(it.pitBean.user_id) && !it.pitBean.user_id.equals("0")) {
isMaiPit = true
}
}
}
if (!isMaiPit) {
stopTimer()
}
}
fun event1035(messageEvent: RoomMessageEvent) {
@@ -320,4 +382,16 @@ class RoomPubFragment(var mRoomInfoResp: RoomInfoResp?) :
}
}
override fun onDestroyView() {
super.onDestroyView()
viewList.clear()
}
// 在Fragment销毁时记得清理资源
override fun onDestroy() {
super.onDestroy()
timer.stop()
scope.cancel()
}
}