From c200c6c30795063c07870bdc91a5237d779872cc Mon Sep 17 00:00:00 2001 From: lzl <1239365383@qq.com> Date: Fri, 12 Dec 2025 23:15:30 +0800 Subject: [PATCH] fix bugs. --- .../xscm/moduleutil/widget/GiftAnimView.java | 89 +++++----- .../activity/room/fragment/RoomFragment.java | 11 +- .../room/fragment/RoomMentorShipFragment.kt | 165 ++++++++---------- 3 files changed, 121 insertions(+), 144 deletions(-) diff --git a/BaseModule/src/main/java/com/xscm/moduleutil/widget/GiftAnimView.java b/BaseModule/src/main/java/com/xscm/moduleutil/widget/GiftAnimView.java index 5b2542cc..b4ab4536 100644 --- a/BaseModule/src/main/java/com/xscm/moduleutil/widget/GiftAnimView.java +++ b/BaseModule/src/main/java/com/xscm/moduleutil/widget/GiftAnimView.java @@ -267,55 +267,52 @@ public class GiftAnimView extends FrameLayout implements GiftSvgaView.OnAnimatio if (isLoadEffect && giftModel != null && !TextUtils.isEmpty(giftModel)) { String finalGiftModel = giftModel; - post(new Runnable() { - @Override - public void run() { - String playImage = finalGiftModel; - if (playImage.endsWith("mp4")) { - downloadAndPlay(getContext(), playImage, new DownloadCallback() { - @Override - public void onSuccess(File file) { - post(() -> { - playerMp4View.setVisibility(View.VISIBLE); - svgaView.setVisibility(View.GONE); - playerMp4View.startPlay(file); - }); - } - - @Override - public void onFailure(Exception e) { - LogUtils.e("MP4下载或播放失败: " + e.getMessage()); - // 处理失败情况,继续播放下一个 - post(() -> { - lock.lock(); - try { - isLoadEffect = false; - } finally { - lock.unlock(); - } - loadStartSVGAPlayer(); - }); - } - }); - } else if (playImage.endsWith("svga")) { -// File file = downloadAndPlay(getContext(), playImage); - post(() -> { - playerMp4View.setVisibility(View.GONE); - svgaView.setVisibility(View.VISIBLE); - svgaView.loadSVGAPlayerWith(finalGiftModel, false); - }); - } else { - lock.lock(); - try { - isLoadEffect = false; - } finally { - lock.unlock(); + post(() -> { + String playImage = finalGiftModel; + if (playImage.endsWith("mp4")) { + downloadAndPlay(getContext(), playImage, new DownloadCallback() { + @Override + public void onSuccess(File file) { + post(() -> { + playerMp4View.setVisibility(View.VISIBLE); + svgaView.setVisibility(View.GONE); + playerMp4View.startPlay(file); + }); } - loadStartSVGAPlayer(); - // 直接播放缓存文件 - } + @Override + public void onFailure(Exception e) { + LogUtils.e("MP4下载或播放失败: " + e.getMessage()); + // 处理失败情况,继续播放下一个 + post(() -> { + lock.lock(); + try { + isLoadEffect = false; + } finally { + lock.unlock(); + } + loadStartSVGAPlayer(); + }); + } + }); + } else if (playImage.endsWith("svga")) { +// File file = downloadAndPlay(getContext(), playImage); + post(() -> { + playerMp4View.setVisibility(View.GONE); + svgaView.setVisibility(View.VISIBLE); + svgaView.loadSVGAPlayerWith(finalGiftModel, false); + }); + } else { + lock.lock(); + try { + isLoadEffect = false; + } finally { + lock.unlock(); + } + loadStartSVGAPlayer(); + // 直接播放缓存文件 } + }); } } diff --git a/MainModule/src/main/java/com/xscm/modulemain/activity/room/fragment/RoomFragment.java b/MainModule/src/main/java/com/xscm/modulemain/activity/room/fragment/RoomFragment.java index 7ff5e555..76feeb60 100644 --- a/MainModule/src/main/java/com/xscm/modulemain/activity/room/fragment/RoomFragment.java +++ b/MainModule/src/main/java/com/xscm/modulemain/activity/room/fragment/RoomFragment.java @@ -495,18 +495,18 @@ public class RoomFragment extends BaseMvpFragment{ + aLong -> { retryCount++; LogUtils.e("switchFragment retry"); switchFragment(newFragment, containerId, true); @@ -569,8 +569,9 @@ public class RoomFragment extends BaseMvpFragment{ - startActivity(new Intent(ActivityUtils.getTopActivity(), TransparentActivity.class)); + aLong -> { + if (ActivityUtils.getTopActivity() instanceof RoomActivity) + startActivity(new Intent(ActivityUtils.getTopActivity(), TransparentActivity.class)); } ); } diff --git a/MainModule/src/main/java/com/xscm/modulemain/activity/room/fragment/RoomMentorShipFragment.kt b/MainModule/src/main/java/com/xscm/modulemain/activity/room/fragment/RoomMentorShipFragment.kt index a4fd352b..f5c4bc54 100644 --- a/MainModule/src/main/java/com/xscm/modulemain/activity/room/fragment/RoomMentorShipFragment.kt +++ b/MainModule/src/main/java/com/xscm/modulemain/activity/room/fragment/RoomMentorShipFragment.kt @@ -1,7 +1,6 @@ package com.xscm.modulemain.activity.room.fragment import android.annotation.SuppressLint -import android.content.Intent import android.os.Bundle import android.view.Gravity import android.view.LayoutInflater @@ -12,8 +11,6 @@ import android.widget.TextView import com.blankj.utilcode.util.ActivityUtils import com.blankj.utilcode.util.LogUtils import com.xscm.modulemain.R -import com.xscm.modulemain.TransparentActivity -import com.xscm.modulemain.activity.room.activity.RoomActivity import com.xscm.modulemain.activity.room.contacts.MentorShipContacts import com.xscm.modulemain.activity.room.presenter.MentorShipPresenter import com.xscm.modulemain.databinding.FragmentMentorShipBinding @@ -35,8 +32,6 @@ import com.xscm.moduleutil.bean.room.RoomPitBean import com.xscm.moduleutil.bean.room.RoomUserBean import com.xscm.moduleutil.dialog.ConfirmDialog import com.xscm.moduleutil.utils.ClickUtils -import io.reactivex.Observable -import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.disposables.Disposable import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers @@ -44,13 +39,12 @@ import kotlinx.coroutines.SupervisorJob import kotlinx.coroutines.cancel import kotlinx.coroutines.delay import kotlinx.coroutines.launch -import java.util.concurrent.TimeUnit /** * 签约房 * 1234 5 9 */ -class RoomMentorShipFragment(var mRoomInfo: RoomInfoResp?) : +class RoomMentorShipFragment(var mRoomInfoResp: RoomInfoResp?) : BaseMvpFragment(), MentorShipContacts.View, View.OnClickListener { @@ -70,7 +64,7 @@ class RoomMentorShipFragment(var mRoomInfo: RoomInfoResp?) : private var popupWindow: PopupWindow? = null private var mPitBean: RoomPitBean? = null - private var mRoomId: String = mRoomInfo?.room_info?.room_id!! + private var mRoomId: String = mRoomInfoResp?.room_info?.room_id!! private var mSignPitBean: RoomPitBean? = null private var mSignId: String? = null @@ -80,7 +74,7 @@ class RoomMentorShipFragment(var mRoomInfo: RoomInfoResp?) : private val startOrDelay = arrayOf("开始", "延时") - private var mUserInfo: RoomUserBean? = mRoomInfo?.user_info + private var mUserInfo: RoomUserBean? = mRoomInfoResp?.user_info private var dialogMentorShip: DialogMentorShip? = null @@ -124,9 +118,9 @@ class RoomMentorShipFragment(var mRoomInfo: RoomInfoResp?) : mBinding.tvTimeLeft.visibility = View.GONE for ((idx, view) in viewList.withIndex()) { - if (mRoomInfo?.room_info?.pit_list!!.size > indexList[idx].toInt() - 1) { + if (mRoomInfoResp?.room_info?.pit_list!!.size > indexList[idx].toInt() - 1) { view.setRoomWheatNumber(indexList[idx]) - val bean = mRoomInfo?.room_info?.pit_list!![indexList[idx].toInt() - 1] + val bean = mRoomInfoResp?.room_info?.pit_list!![indexList[idx].toInt() - 1] if (idx == 0) { view.setHostTv(mBinding.tvHostName) } else if (idx == 1) { @@ -147,7 +141,7 @@ class RoomMentorShipFragment(var mRoomInfo: RoomInfoResp?) : if (!view.getUserId().equals("") && !view.getUserId().equals("0")) { RoomUserInfoFragment.show( - mRoomInfo?.room_info?.room_id, + mRoomInfoResp?.room_info?.room_id, view.getUserId(), view.pitNumber, getHostUser(), @@ -162,7 +156,7 @@ class RoomMentorShipFragment(var mRoomInfo: RoomInfoResp?) : } else { when (indexList[idx]) { "9" -> { - MvpPre.applyPit(mRoomInfo?.room_info?.room_id!!, "9") + MvpPre.applyPit(mRoomInfoResp?.room_info?.room_id!!, "9") } "2" -> { @@ -171,14 +165,14 @@ class RoomMentorShipFragment(var mRoomInfo: RoomInfoResp?) : "1", "3", "4", "5" -> { mPitBean = - mRoomInfo?.room_info?.pit_list!![indexList[idx].toInt() - 1] + mRoomInfoResp?.room_info?.pit_list!![indexList[idx].toInt() - 1] // 处理抱麦逻辑 RoomOnlineDialogFragment.show( mRoomId, mPitBean?.pit_number, - mRoomInfo?.user_info, - mRoomInfo, + mRoomInfoResp?.user_info, + mRoomInfoResp, childFragmentManager ) } @@ -194,10 +188,10 @@ class RoomMentorShipFragment(var mRoomInfo: RoomInfoResp?) : mBinding.tvTimeRight.setOnClickListener(this) mBinding.ivHelp.setOnClickListener(this) - if (mRoomInfo?.sign_info?.sign_id != "-1") { - mSignId = mRoomInfo?.sign_info?.sign_id - if (mRoomInfo?.sign_info?.sign_status == 1) { - startTimer(mRoomInfo?.sign_info?.end_time!!) + if (mRoomInfoResp?.sign_info?.sign_id != "-1") { + mSignId = mRoomInfoResp?.sign_info?.sign_id + if (mRoomInfoResp?.sign_info?.sign_status == 1) { + startTimer(mRoomInfoResp?.sign_info?.end_time!!) if (mUserInfo?.user_id?.toString().equals(mSignPitBean?.user_id)) { setIvForMai(1) } else if (!mSignPitBean?.user_id.equals("0")) { @@ -209,9 +203,9 @@ class RoomMentorShipFragment(var mRoomInfo: RoomInfoResp?) : setIvForMai(0) } mBinding.tvSignDay.visibility = View.VISIBLE - mBinding.tvLeftPrice.text = mRoomInfo?.sign_info?.current_body_value.toString() + mBinding.tvLeftPrice.text = mRoomInfoResp?.sign_info?.current_body_value.toString() - mBinding.tvSignDay.text = "签约${mRoomInfo?.sign_info?.sign_day}天" + mBinding.tvSignDay.text = "签约${mRoomInfoResp?.sign_info?.sign_day}天" } else { setIvForMai(0) } @@ -224,7 +218,7 @@ class RoomMentorShipFragment(var mRoomInfo: RoomInfoResp?) : when (mBinding.ivApplyForMai.tag) { ivForMai[0] -> { mBinding.ivApplyForMai.isClickable = false - MvpPre!!.applyPit(mRoomInfo?.room_info?.room_id!!, "") + MvpPre!!.applyPit(mRoomInfoResp?.room_info?.room_id!!, "") } ivForMai[1] -> { @@ -276,66 +270,51 @@ class RoomMentorShipFragment(var mRoomInfo: RoomInfoResp?) : @SuppressLint("CheckResult") private fun showBtn(isSignUser: Boolean = false) { - if (isStart) { - mBinding.tvTimeLeft.text = startOrDelay[1] - mBinding.tvTime.visibility = View.VISIBLE - mBinding.groupLeftPrice.visibility = View.VISIBLE - if (getHostUser() < 4) { - mBinding.tvTimeRight.visibility = View.VISIBLE + activity?.runOnUiThread { + if (isStart) { + mBinding.tvTimeLeft.text = startOrDelay[1] + mBinding.tvTime.visibility = View.VISIBLE + mBinding.groupLeftPrice.visibility = View.VISIBLE + if (getHostUser() < 4) { + mBinding.tvTimeRight.visibility = View.VISIBLE + } else { + mBinding.tvTimeRight.visibility = View.GONE + } } else { - mBinding.tvTimeRight.visibility = View.GONE - } - } else { - mBinding.tvTimeLeft.text = startOrDelay[0] + mBinding.tvTimeLeft.text = startOrDelay[0] - mBinding.tvTimeRight.visibility = View.GONE - mBinding.tvTime.visibility = View.GONE + mBinding.tvTimeRight.visibility = View.GONE + mBinding.tvTime.visibility = View.GONE mBinding.tvJsq.visibility= View.GONE - mBinding.tvTimeLeft.visibility = View.GONE + mBinding.tvTimeLeft.visibility = View.GONE - mBinding.groupLeftPrice.visibility = View.GONE - if (!isSignUser) { - mBinding.tvLeftPrice.text = "0" - mBinding.tvSignDay.visibility = View.GONE - } - - mBinding.tvTime.text = "倒计时 00:00:00" - setIvForMai(0) - } - - if (viewList[0].pitBean.user_id.equals(mUserInfo?.user_id.toString()) && !mSignPitBean?.user_id.equals( - "0" - ) - ) { - mBinding.tvTimeLeft.visibility = View.VISIBLE - } else { - mBinding.tvTimeLeft.visibility = View.GONE - } - - if (ActivityUtils.getTopActivity() is RoomActivity) { - if (disposable != null && disposable?.isDisposed == false) { - disposable?.dispose() - } - - disposable = Observable.timer(20, TimeUnit.MILLISECONDS).observeOn(AndroidSchedulers.mainThread()) - .subscribe { aLong: Long? -> - if (checkFragmentAttached()) { - startActivity( - Intent( - ActivityUtils.getTopActivity(), - TransparentActivity::class.java - ) - ) - } + mBinding.groupLeftPrice.visibility = View.GONE + if (!isSignUser) { + mBinding.tvLeftPrice.text = "0" + mBinding.tvSignDay.visibility = View.GONE } + + mBinding.tvTime.text = "倒计时 00:00:00" + setIvForMai(0) + } + + if (viewList[0].pitBean.user_id.equals(mUserInfo?.user_id.toString()) && !mSignPitBean?.user_id.equals("0")) { + mBinding.tvTimeLeft.visibility = View.VISIBLE + } else { + mBinding.tvTimeLeft.visibility = View.GONE + } } + + LogUtils.e( - "showBtn", - "showBtn: $isSignUser isStart: $isStart \n viewList[0].pitBean.user_id: ${viewList[0].pitBean.user_id} " + + "showBtn ${Thread.currentThread()}", + "showBtn: isSignUser: $isSignUser " + + "\nisStart: $isStart " + + "\n viewList[0].pitBean.user_id: ${viewList[0].pitBean.user_id} " + "\n mSignPitBean?.user_id: ${mSignPitBean?.user_id} " + - "\n mRoomInfo?.user_info?.user_id: ${mRoomInfo?.user_info?.user_id} " + + "\n mRoomInfo?.user_info?.user_id: ${mRoomInfoResp?.user_info?.user_id} " + "\n mUserInfo?.user_id: ${mUserInfo?.user_id}" + "\n mBinding.tvTimeRight: ${mBinding.tvTimeRight.visibility == View.VISIBLE}" + "\n mBinding.tvTime: ${mBinding.tvTime.visibility == View.VISIBLE}" + @@ -348,17 +327,17 @@ class RoomMentorShipFragment(var mRoomInfo: RoomInfoResp?) : return isAdded && !isDetached && !requireActivity().isFinishing && !requireActivity().isDestroyed } - fun roomInfoUpdate(mRoomInfoResp: RoomInfoResp) { - mRoomInfo = mRoomInfoResp - mUserInfo = mRoomInfo?.user_info - mRoomId = mRoomInfo?.room_id!! + fun roomInfoUpdate(roomInfoResp: RoomInfoResp) { + this.mRoomInfoResp = roomInfoResp + mUserInfo = this.mRoomInfoResp?.user_info + mRoomId = this.mRoomInfoResp?.room_info?.room_id!! showBtn() } - fun roomTypeSwitch(mRoomInfoResp: RoomInfoResp) { - mRoomInfo = mRoomInfoResp - mUserInfo = mRoomInfo?.user_info - mRoomId = mRoomInfo?.room_id!! + fun roomTypeSwitch(roomInfoResp: RoomInfoResp) { + this.mRoomInfoResp = roomInfoResp + mUserInfo = this.mRoomInfoResp?.user_info + mRoomId = this.mRoomInfoResp?.room_info?.room_id!! initView() } @@ -366,7 +345,7 @@ class RoomMentorShipFragment(var mRoomInfo: RoomInfoResp?) : val pitNumber = messageEvent.text.pit_number if (indexList.contains(pitNumber)) { val viewPos = indexList.indexOf(pitNumber) - val pitBean = mRoomInfo?.room_info?.pit_list!![pitNumber.toInt() - 1] + val pitBean = mRoomInfoResp?.room_info?.pit_list!![pitNumber.toInt() - 1] viewList[viewPos].setData(pitBean) if (pitNumber == "1") { mSignPitBean = pitBean @@ -379,7 +358,7 @@ class RoomMentorShipFragment(var mRoomInfo: RoomInfoResp?) : val pitNumber = messageEvent.text.pit_number if (indexList.contains(pitNumber)) { val viewPos = indexList.indexOf(pitNumber) - val pitBean = mRoomInfo?.room_info?.pit_list!![pitNumber.toInt() - 1] + val pitBean = mRoomInfoResp?.room_info?.pit_list!![pitNumber.toInt() - 1] viewList[viewPos].setData(pitBean) if (pitNumber == "1") { mSignPitBean = pitBean @@ -550,7 +529,7 @@ class RoomMentorShipFragment(var mRoomInfo: RoomInfoResp?) : val fromUserId = messageEvent.text.fromUserInfo.user_id for (i in 0 until viewList.size) { if (viewList[i].pitBean?.user_id == fromUserId.toString()) { - val pitBean = mRoomInfo?.room_info?.pit_list!![indexList[i].toInt() - 1] + val pitBean = mRoomInfoResp?.room_info?.pit_list!![indexList[i].toInt() - 1] viewList[i].setData(pitBean) break } @@ -562,7 +541,7 @@ class RoomMentorShipFragment(var mRoomInfo: RoomInfoResp?) : val toId = messageEvent.text.to_pit_number if (indexList.contains(fromId)) { val viewPos = indexList.indexOf(fromId) - val pitBean = mRoomInfo?.room_info?.pit_list!![fromId.toInt() - 1] + val pitBean = mRoomInfoResp?.room_info?.pit_list!![fromId.toInt() - 1] viewList[viewPos].setData(pitBean) if (fromId == "1") { mSignPitBean = pitBean @@ -571,7 +550,7 @@ class RoomMentorShipFragment(var mRoomInfo: RoomInfoResp?) : if (indexList.contains(toId)) { val viewPos = indexList.indexOf(toId) - val pitBean = mRoomInfo?.room_info?.pit_list!![toId.toInt() - 1] + val pitBean = mRoomInfoResp?.room_info?.pit_list!![toId.toInt() - 1] viewList[viewPos].setData(pitBean) if (toId == "1") { mSignPitBean = pitBean @@ -667,7 +646,7 @@ class RoomMentorShipFragment(var mRoomInfo: RoomInfoResp?) : tvHugMic.setOnClickListener { v: View? -> // 处理抱麦逻辑 RoomOnlineDialogFragment.show( - mRoomId, mPitBean?.pit_number, mRoomInfo?.user_info, mRoomInfo, + mRoomId, mPitBean?.pit_number, mRoomInfoResp?.user_info, mRoomInfoResp, childFragmentManager ) popupWindow!!.dismiss() @@ -676,11 +655,11 @@ class RoomMentorShipFragment(var mRoomInfo: RoomInfoResp?) : private fun getHostUser(): Int { - return if (mRoomInfo?.user_info?.is_room_owner == 1) { + return if (mRoomInfoResp?.user_info?.is_room_owner == 1) { 1 - } else if (mRoomInfo?.user_info?.is_management == 1) { + } else if (mRoomInfoResp?.user_info?.is_management == 1) { 2 - } else if (mRoomInfo?.user_info?.is_host == 1) { + } else if (mRoomInfoResp?.user_info?.is_host == 1) { 3 } else { 4 @@ -688,7 +667,7 @@ class RoomMentorShipFragment(var mRoomInfo: RoomInfoResp?) : } private fun isNumberWhether(): Int { - if (mRoomInfo?.user_info?.pit_number == 9) { + if (mRoomInfoResp?.user_info?.pit_number == 9) { return 1 } return 0 @@ -762,10 +741,10 @@ class RoomMentorShipFragment(var mRoomInfo: RoomInfoResp?) : "确认", "拒绝", { v: View? -> - MvpPre.applyPit(mRoomInfo?.room_info?.room_id!!, "1") + MvpPre.applyPit(mRoomInfoResp?.room_info?.room_id!!, "1") }, { v: View? -> - MvpPre.signRefuse(mRoomInfo?.room_info?.room_id!!) + MvpPre.signRefuse(mRoomInfoResp?.room_info?.room_id!!) }, true, 5 ).show() }