fix bugs.

This commit is contained in:
2025-12-12 23:15:30 +08:00
parent dce92eb61a
commit c200c6c307
3 changed files with 121 additions and 144 deletions

View File

@@ -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();
// 直接播放缓存文件
}
});
}
}

View File

@@ -495,18 +495,18 @@ public class RoomFragment extends BaseMvpFragment<RoomPresenter, FragmentRoomBin
isLoadSuccess = false;
errorMsg = "Fragment未进入Resumed状态";
}
LogUtils.e("switchFragment :"+errorMsg +",isLoadSuccess:"+isLoadSuccess);
LogUtils.e("switchFragment :" + errorMsg + ",isLoadSuccess:" + isLoadSuccess);
// 处理失败情况
if (!isLoadSuccess) {
Log.e("FragmentCheck", errorMsg);
if (retryCount == MAX_COUNT){
if (retryCount == MAX_COUNT) {
LogUtils.e("switchFragment retryCount == MAX_COUNT");
return;
}
// 可以考虑自动恢复或通知用户
Observable.timer(1000, TimeUnit.MILLISECONDS).observeOn(AndroidSchedulers.mainThread()).subscribe(
aLong ->{
aLong -> {
retryCount++;
LogUtils.e("switchFragment retry");
switchFragment(newFragment, containerId, true);
@@ -569,8 +569,9 @@ public class RoomFragment extends BaseMvpFragment<RoomPresenter, FragmentRoomBin
currentFragment = newFragment;
Observable.timer(1000, TimeUnit.MILLISECONDS).observeOn(AndroidSchedulers.mainThread()).subscribe(
aLong ->{
startActivity(new Intent(ActivityUtils.getTopActivity(), TransparentActivity.class));
aLong -> {
if (ActivityUtils.getTopActivity() instanceof RoomActivity)
startActivity(new Intent(ActivityUtils.getTopActivity(), TransparentActivity.class));
}
);
}

View File

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