diff --git a/app/src/main/java/com/xscm/midi/LaunchPageActivity.java b/app/src/main/java/com/xscm/midi/LaunchPageActivity.java index 42de609..2c4042b 100644 --- a/app/src/main/java/com/xscm/midi/LaunchPageActivity.java +++ b/app/src/main/java/com/xscm/midi/LaunchPageActivity.java @@ -8,10 +8,12 @@ import android.os.PersistableBundle; import androidx.annotation.Nullable; +import com.alibaba.android.arouter.launcher.ARouter; import com.xscm.modulelogin.activity.ImproveInfoActivity; import com.xscm.moduleutil.activity.BaseAppCompatActivity; import com.xscm.moduleutil.base.CommonAppContext; import com.xscm.moduleutil.dialog.PolicyDialog; +import com.xscm.moduleutil.utils.ARouteConstants; import com.xscm.moduleutil.utils.SpUtil; import com.xscm.midi.databinding.ActivityLaunchPageBinding; @@ -27,7 +29,15 @@ public class LaunchPageActivity extends BaseAppCompatActivity implements GiftLotteryContacts.View { private String roomId; private List giftLists = new ArrayList<>(); @@ -94,8 +98,8 @@ public class TourClubDialogFragment extends BaseMvpDialogFragment data) { if (data != null) { + showResultDialog(data); + // 取消之前可能存在的任务 - clearPendingTasks(); - // 抽奖完成后执行动画滚动 - pendingLotteryRunnable = new Runnable() { - @Override - public void run() { - // 清理之前的状态 - if (giftXlhChouAdapter != null) { - giftXlhChouAdapter.clearSelection(); - } - int winningPosition = findHighestValueWinningPosition(data);//这是获取到的中奖位置下标 - if (winningPosition != -1) { - if (scrollHelper == null) { - scrollHelper = new CenterScrollHelper(mBinding.recycleView); - } - - // 计算在循环列表中的目标位置(滚动几圈后停在目标位置) - int loopCount = 4; // 滚动4圈 - int originalSize = giftLists.size();///这是列表的总大小 - // 计算目标在循环列表中的位置(确保在中间区域) - ///这是计算总圈数的大小 - int middleBaseIndex = (loopCount * originalSize); - ///这里是展示在中奖的位置,加上总圈数的大小, - int targetLoopIndex = middleBaseIndex + (winningPosition % originalSize); - - // 使用scrollWithCircles方法执行带动画的滚动(带完成回调) - scrollHelper.scrollWithCircles( - targetLoopIndex, // 在循环列表中的位置 - loopCount, // 滚动圈数 - 200, // 每个item滚动时间200ms(控制速度) - originalSize, // 原始数据大小 - () -> { // 滚动完成回调 - // 滚动完成后更新选中状态(使用原始位置) - if (giftXlhChouAdapter != null) { - giftXlhChouAdapter.setSelectedPosition(winningPosition); - } - // 滚动完成后延迟一小段时间再居中,确保UI更新完成 - pendingCenteringRunnable = new Runnable() { - @Override - public void run() { - // 手动将选中项居中 - centerSelectedItem(winningPosition, originalSize); - - // 显示结果对话框 - getActivity().runOnUiThread(() -> { - scrollHelper = null; - showResultDialog(data); - }); - } - }; - mBinding.recycleView.postDelayed(pendingCenteringRunnable, 100); - } - ); - - } else { - // 如果没有找到中奖位置,直接显示对话框 - showResultDialog(data); - } - } - }; - mBinding.recycleView.postDelayed(pendingLotteryRunnable, 300); +// clearPendingTasks(); +// // 抽奖完成后执行动画滚动 +// pendingLotteryRunnable = new Runnable() { +// @Override +// public void run() { +// // 清理之前的状态 +// if (giftXlhChouAdapter != null) { +// giftXlhChouAdapter.clearSelection(); +// } +// int winningPosition = findHighestValueWinningPosition(data);//这是获取到的中奖位置下标 +// if (winningPosition != -1) { +// if (scrollHelper == null) { +// scrollHelper = new CenterScrollHelper(mBinding.recycleView); +// } +// +// // 计算在循环列表中的目标位置(滚动几圈后停在目标位置) +// int loopCount = 4; // 滚动4圈 +// int originalSize = giftLists.size();///这是列表的总大小 +// // 计算目标在循环列表中的位置(确保在中间区域) +// ///这是计算总圈数的大小 +// int middleBaseIndex = (loopCount * originalSize); +// ///这里是展示在中奖的位置,加上总圈数的大小, +// int targetLoopIndex = middleBaseIndex + (winningPosition % originalSize); +// +// // 使用scrollWithCircles方法执行带动画的滚动(带完成回调) +// scrollHelper.scrollWithCircles( +// targetLoopIndex, // 在循环列表中的位置 +// loopCount, // 滚动圈数 +// 200, // 每个item滚动时间200ms(控制速度) +// originalSize, // 原始数据大小 +// () -> { // 滚动完成回调 +// // 滚动完成后更新选中状态(使用原始位置) +// if (giftXlhChouAdapter != null) { +// giftXlhChouAdapter.setSelectedPosition(winningPosition); +// } +// // 滚动完成后延迟一小段时间再居中,确保UI更新完成 +// pendingCenteringRunnable = new Runnable() { +// @Override +// public void run() { +// // 手动将选中项居中 +// centerSelectedItem(winningPosition, originalSize); +// +// // 显示结果对话框 +// getActivity().runOnUiThread(() -> { +// scrollHelper = null; +// showResultDialog(data); +// }); +// } +// }; +// mBinding.recycleView.postDelayed(pendingCenteringRunnable, 100); +// } +// ); +// +// } else { +// // 如果没有找到中奖位置,直接显示对话框 +// showResultDialog(data); +// } +// } +// }; +// mBinding.recycleView.postDelayed(pendingLotteryRunnable, 300); } diff --git a/moduleUtil/src/main/java/com/xscm/moduleutil/event/QXRoomSeatViewType.java b/moduleUtil/src/main/java/com/xscm/moduleutil/event/QXRoomSeatViewType.java new file mode 100644 index 0000000..376f4c7 --- /dev/null +++ b/moduleUtil/src/main/java/com/xscm/moduleutil/event/QXRoomSeatViewType.java @@ -0,0 +1,76 @@ +package com.xscm.moduleutil.event; + +public enum QXRoomSeatViewType { + /** + * 无类型 + */ + NONE(0, "无类型"), + + /** + * 普通麦位(二卡八麦) + */ + NORMAL(1, "点唱"), + + KTV(3,"K歌"), + + /** + * 拍卖麦位 + */ + AUCTION(2, "拍卖麦位"), + + + + /** + * 小黑屋麦位 + */ + CABIN(6, "小黑屋麦位"), + + /** + * 交友房麦位 + */ + FRIEND(7, "交友房麦位"); + + private final int value; + private final String description; + + QXRoomSeatViewType(int value, String description) { + this.value = value; + this.description = description; + } + + public int getValue() { + return value; + } + + public String getDescription() { + return description; + } + public static QXRoomSeatViewType fromLotteryEvent(int value) { + if (value==1) { + return NORMAL; + } + if (value==2) { + return AUCTION; + } + if (value==3) { + return KTV; + } + + if (value==6){ + return CABIN; + } + if (value==7){ + return FRIEND; + } + return NONE; + } + + @Override + public String toString() { + return "QXRoomSeatViewType{" + + "value=" + value + + ", description='" + description + '\'' + + '}'; + } + +} diff --git a/moduleUtil/src/main/java/com/xscm/moduleutil/utils/config/EnvironmentEnum.java b/moduleUtil/src/main/java/com/xscm/moduleutil/utils/config/EnvironmentEnum.java index 273117c..cf08e3d 100644 --- a/moduleUtil/src/main/java/com/xscm/moduleutil/utils/config/EnvironmentEnum.java +++ b/moduleUtil/src/main/java/com/xscm/moduleutil/utils/config/EnvironmentEnum.java @@ -13,7 +13,7 @@ public enum EnvironmentEnum { 1600101474, "a3f0f0c78307434fa1c697c3429fbdcf", "tcp://81.70.45.221", - "https://mdh.xscmmidi.site"), + "https://md.xscmmidi.site/h5"), TEST(//测试环境 "http://md.qxmier.com/", "6rdWuz058oq5OahdbFiGEybUcdahd12J83L34Uc7MrPIrxtFG+rXiwDvRcqNvjwbClbbmvMrmxKVkIysFByBsl0Qe9kqd2w8T/nhK5G6eXXlk2V9AjYCieIU+jRnjZBB+Cfechr6rCGJ2aeBARIsXcRPW7wm9WFK9euh5T+v6Pyte68yNaNdcYCll3+U4/uCEog7HygCnMIbAU+kqoPdmn2H+51YOHW+VsnsHd4w1+I3f8Tt0xLIXGM4GWnQueZ5GR46GTWiSYMy8dCIh9SPIMRyC91GosVcfGPMJSdcXqc=", diff --git a/moduleUtil/src/main/java/com/xscm/moduleutil/widget/AvatarFrameView.java b/moduleUtil/src/main/java/com/xscm/moduleutil/widget/AvatarFrameView.java index 2c7fe97..3f1918e 100644 --- a/moduleUtil/src/main/java/com/xscm/moduleutil/widget/AvatarFrameView.java +++ b/moduleUtil/src/main/java/com/xscm/moduleutil/widget/AvatarFrameView.java @@ -589,8 +589,8 @@ public class AvatarFrameView extends FrameLayout { if (file != null && file.exists()) { // 设置循环次数(根据mType决定) - if (mType == 1) { - mBinding.playView.setLoop(0); // 无限循环 + if (mType == 1 || mType == 3) { + mBinding.playView.setLoop(Integer.max(1, 999999999)); // 无限循环 } else { mBinding.playView.setLoop(1); // 播放一次 } @@ -767,7 +767,9 @@ public class AvatarFrameView extends FrameLayout { public void onRepeat() { // 循环播放处理 if (mType != 1) { // 非循环播放 - svgaSurface.stopAnimation(true); + svgaSurface.stopAnimation(); + svgaSurface.clearAnimation(); + svgaSurface.setImageDrawable(null); onPlaybackComplete(); } } @@ -811,6 +813,22 @@ public class AvatarFrameView extends FrameLayout { } } + public void stopAll(){ + if (svgaSurface != null){ + svgaSurface.stopAnimation(); + svgaSurface.clearAnimation(); + svgaSurface.setImageDrawable( null); + } + if (svgaSurface2 != null){ + svgaSurface2.stopAnimation(); + svgaSurface2.clearAnimation(); + svgaSurface.setImageDrawable( null); + } + if (mBinding.playView!=null){ + mBinding.playView.stopPlay(); + } + } + private void playCachedSVGA(SVGAVideoEntity videoItem) { // if (isDestroyed || svgaSurface == null) return; @@ -1196,6 +1214,8 @@ public class AvatarFrameView extends FrameLayout { // svgaSurface.setImageDrawable(null); svgaSurface.stopAnimation(true); svgaSurface.clear(); + svgaSurface.clearAnimation(); + svgaSurface.setImageDrawable( null); } catch (Exception e) { Logger.e(TAG, "Error releasing SVGA resources: " + e.getMessage()); } diff --git a/moduleUtil/src/main/java/com/xscm/moduleutil/widget/GiftAnimView.java b/moduleUtil/src/main/java/com/xscm/moduleutil/widget/GiftAnimView.java index 4749660..4408395 100644 --- a/moduleUtil/src/main/java/com/xscm/moduleutil/widget/GiftAnimView.java +++ b/moduleUtil/src/main/java/com/xscm/moduleutil/widget/GiftAnimView.java @@ -91,7 +91,7 @@ public class GiftAnimView extends FrameLayout implements GiftSvgaView.OnAnimatio @Override public void onVideoRender(int i, @Nullable AnimConfig animConfig) { - LogUtils.e("onVideoRender", i, animConfig); +// LogUtils.e("onVideoRender", i, animConfig); } @Override diff --git a/moduleUtil/src/main/java/com/xscm/moduleutil/widget/GiftSvgaView.java b/moduleUtil/src/main/java/com/xscm/moduleutil/widget/GiftSvgaView.java index 78d3637..ab99975 100644 --- a/moduleUtil/src/main/java/com/xscm/moduleutil/widget/GiftSvgaView.java +++ b/moduleUtil/src/main/java/com/xscm/moduleutil/widget/GiftSvgaView.java @@ -218,6 +218,8 @@ public class GiftSvgaView extends FrameLayout implements SVGACallback { public void stopEffectSvgaPlay() { if (player != null) { player.stopAnimation(); + player.clearAnimation(); + player.setImageDrawable( null); } } diff --git a/moduleUtil/src/main/java/com/xscm/moduleutil/widget/RoomFriendshipWheatView.java b/moduleUtil/src/main/java/com/xscm/moduleutil/widget/RoomFriendshipWheatView.java index bae5877..cedd0ec 100644 --- a/moduleUtil/src/main/java/com/xscm/moduleutil/widget/RoomFriendshipWheatView.java +++ b/moduleUtil/src/main/java/com/xscm/moduleutil/widget/RoomFriendshipWheatView.java @@ -95,9 +95,11 @@ public class RoomFriendshipWheatView extends BaseWheatView { mTvName.setText(bean.getNickname()); ImageUtils.loadCenterCrop(bean.getAvatar(), mRiv); if (TextUtils.isEmpty(pitBean.getDress())) { + mIvFrame.stopAll(); mIvFrame.setVisibility(INVISIBLE); } else { mIvFrame.setVisibility(VISIBLE); + mIvFrame.stopAll(); mIvFrame.setSource(pitBean.getDress(), 3); } if (showBoss && WHEAT_BOSS.equals(pitNumber)) { @@ -121,7 +123,7 @@ public class RoomFriendshipWheatView extends BaseWheatView { if (isMute()) { ImageUtils.loadRes(R.mipmap.room_microphone_off, mIvSex); } - mIvFrame.stopSvga(); + mIvFrame.stopAll(); mIvFrame.setVisibility(INVISIBLE); mIvFace.remove(); //停止声浪 diff --git a/moduleUtil/src/main/java/com/xscm/moduleutil/widget/RoomKtvWheatView.java b/moduleUtil/src/main/java/com/xscm/moduleutil/widget/RoomKtvWheatView.java index 3a9a56d..459f8c2 100644 --- a/moduleUtil/src/main/java/com/xscm/moduleutil/widget/RoomKtvWheatView.java +++ b/moduleUtil/src/main/java/com/xscm/moduleutil/widget/RoomKtvWheatView.java @@ -79,6 +79,7 @@ public class RoomKtvWheatView extends BaseWheatView { mTvName.setText(bean.getNickname()); ImageUtils.loadHeadCC(bean.getAvatar(), mRiv); if (TextUtils.isEmpty(pitBean.getDress())) { + mIvFrame.stopAll(); mIvFrame.setVisibility(INVISIBLE); } else { mIvFrame.setVisibility(VISIBLE); @@ -110,6 +111,7 @@ public class RoomKtvWheatView extends BaseWheatView { if (isMute()) { ImageUtils.loadRes(R.mipmap.room_microphone_off, mIvSex); } + mIvFrame.stopAll(); mIvFrame.setVisibility(INVISIBLE); mIvFace.remove(); //停止声浪 diff --git a/moduleUtil/src/main/java/com/xscm/moduleutil/widget/RoomMakeWheatView.java b/moduleUtil/src/main/java/com/xscm/moduleutil/widget/RoomMakeWheatView.java index d271cbc..19cd32b 100644 --- a/moduleUtil/src/main/java/com/xscm/moduleutil/widget/RoomMakeWheatView.java +++ b/moduleUtil/src/main/java/com/xscm/moduleutil/widget/RoomMakeWheatView.java @@ -103,6 +103,7 @@ public class RoomMakeWheatView extends BaseWheatView { mTvName.setText(bean.getNickname()); ImageUtils.loadHeadCC(bean.getAvatar(), mRiv); if (TextUtils.isEmpty(pitBean.getDress())) { + mIvFrame.stopAll(); mIvFrame.setVisibility(INVISIBLE); } else { mIvFrame.setVisibility(VISIBLE); @@ -124,7 +125,7 @@ public class RoomMakeWheatView extends BaseWheatView { if (isMute()){ ImageUtils.loadRes(R.mipmap.room_microphone_off, mIvSex); } - mIvFrame.stopSvga(); + mIvFrame.stopAll(); mIvFrame.setVisibility(INVISIBLE); mIvFace.remove(); //停止声浪 diff --git a/moduleUtil/src/main/java/com/xscm/moduleutil/widget/RoomSingSongWheatView.java b/moduleUtil/src/main/java/com/xscm/moduleutil/widget/RoomSingSongWheatView.java index f29c4af..74de874 100644 --- a/moduleUtil/src/main/java/com/xscm/moduleutil/widget/RoomSingSongWheatView.java +++ b/moduleUtil/src/main/java/com/xscm/moduleutil/widget/RoomSingSongWheatView.java @@ -84,6 +84,7 @@ public class RoomSingSongWheatView extends BaseWheatView { ImageUtils.loadHeadCC(bean.getAvatar(), mRiv); if (TextUtils.isEmpty(bean.getDress())) { + mIvFrame.stopAll(); mIvFrame.setVisibility(INVISIBLE); } else { mIvFrame.setVisibility(VISIBLE); @@ -109,7 +110,7 @@ public class RoomSingSongWheatView extends BaseWheatView { if (isMute()) { ImageUtils.loadRes(R.mipmap.room_microphone_off, mIvSex); } - mIvFrame.stopSvga(); + mIvFrame.stopAll(); mIvFrame.setVisibility(INVISIBLE); mIvFace.remove(); mIvRipple.setVisibility(GONE); diff --git a/moduleUtil/src/main/res/layout/room_view_friendship_wheat.xml b/moduleUtil/src/main/res/layout/room_view_friendship_wheat.xml index 049deca..2d3f286 100644 --- a/moduleUtil/src/main/res/layout/room_view_friendship_wheat.xml +++ b/moduleUtil/src/main/res/layout/room_view_friendship_wheat.xml @@ -31,16 +31,14 @@ android:id="@+id/iv_frame" android:layout_width="0dp" android:layout_height="0dp" - android:adjustViewBounds="true" - android:scaleType="fitCenter" - android:visibility="gone" - tools:visibility="visible" - app:layout_constraintHeight_percent="1" - app:layout_constraintWidth_percent="1.05" - app:layout_constraintBottom_toBottomOf="@id/riv" - app:layout_constraintEnd_toEndOf="@id/riv" + android:layout_marginStart="-2dp" + android:layout_marginEnd="-2dp" + android:layout_marginTop="-2dp" + android:layout_marginBottom="-2dp" app:layout_constraintStart_toStartOf="@id/riv" - app:layout_constraintTop_toTopOf="@id/riv" /> + app:layout_constraintEnd_toEndOf="@id/riv" + app:layout_constraintTop_toTopOf="@id/riv" + app:layout_constraintBottom_toBottomOf="@id/riv"/> + app:layout_constraintTop_toTopOf="parent" + /> \ No newline at end of file diff --git a/moduleUtil/src/main/res/layout/rv_item_balance_recharge.xml b/moduleUtil/src/main/res/layout/rv_item_balance_recharge.xml index 81b052f..37bb79c 100644 --- a/moduleUtil/src/main/res/layout/rv_item_balance_recharge.xml +++ b/moduleUtil/src/main/res/layout/rv_item_balance_recharge.xml @@ -3,36 +3,37 @@ xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/cl_item" - android:layout_width="@dimen/dp_106" - android:layout_height="@dimen/dp_66" - android:layout_marginTop="@dimen/dp_5" - android:layout_marginEnd="@dimen/dp_12" - android:layout_marginStart="@dimen/dp_12" + android:layout_width="match_parent" + android:layout_height="@dimen/dp_76" android:layout_gravity="center" + android:layout_marginEnd="@dimen/dp_12" + android:layout_marginTop="@dimen/dp_12" android:background="@drawable/bg_r10_white"> - + + + + + + + + + + - - \ No newline at end of file diff --git a/modulemain/src/main/AndroidManifest.xml b/modulemain/src/main/AndroidManifest.xml index d741110..e949ea7 100644 --- a/modulemain/src/main/AndroidManifest.xml +++ b/modulemain/src/main/AndroidManifest.xml @@ -10,7 +10,8 @@ diff --git a/modulemain/src/main/java/com/xscm/modulemain/activity/MainActivity.java b/modulemain/src/main/java/com/xscm/modulemain/activity/MainActivity.java index e57ad9e..813f8eb 100644 --- a/modulemain/src/main/java/com/xscm/modulemain/activity/MainActivity.java +++ b/modulemain/src/main/java/com/xscm/modulemain/activity/MainActivity.java @@ -17,6 +17,7 @@ import android.view.View; import android.view.animation.Animation; import android.view.animation.AnimationUtils; +import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.fragment.app.Fragment; @@ -95,6 +96,13 @@ public class MainActivity extends BaseMvpActivity { + // 点击“确认”按钮时执行删除操作 + MvpPre.auctionEnd(SpUtil.getauctionId(), roomId); + }, + v -> { + // 点击“取消”按钮时什么都不做 + }, false, 0).show(); + } + + public void upVisibility(boolean visible) { + mBinding.roomTop.imActionJs.setVisibility(visible ? VISIBLE : INVISIBLE); + mBinding.roomTop.imActionYs.setVisibility(visible ? VISIBLE : INVISIBLE); + } + + public void upJs(boolean visible) { + mBinding.roomTop.imActionJs.setVisibility(visible ? VISIBLE : INVISIBLE); + } + + public void upYs(boolean visible) { + mBinding.roomTop.imActionYs.setVisibility(visible ? VISIBLE : INVISIBLE); + } + /// 最小化 private void showExitRoomDialog() { ExitRoomBottomSheet bottomSheet = ExitRoomBottomSheet.newInstance(); @@ -496,47 +560,10 @@ public class RoomActivity extends BaseMvpActivity EventBus.getDefault().post(new ShowOnWheatDialogEvent()), -// 10000); isSave = false; sDestroied = false; isMinimized = false; -// ThreadUtils.executeBySingleAtFixRate(new ThreadUtils.Task() { -// -// @Override -// public String doInBackground() throws Throwable { -// if (mBinding.svgaGift.isPlaying()){ -// Thread.sleep(100); // 短暂等待 -// return ""; -// } -// if(!roomMessageEventQueue.isEmpty()){ -// Thread.sleep(100); // 短暂等待 -// return roomMessageEventQueue.poll(); -// } -// return ""; -// } -// -// @Override -// public void onSuccess(String result) { -// LogUtils.e("@@@@" + "onSuccess"+"playQueue.size()===="+roomMessageEventQueue.size()); -// if(!TextUtils.isEmpty(result)){ -//// mBinding.svgaGift.setSource(result, 2); -// mBinding.svgaGift.downloadAndPlayMp4(result); -// } -// } -// -// @Override -// public void onCancel() { -// -// } -// -// @Override -// public void onFail(Throwable t) { -// -// } -// },2, TimeUnit.SECONDS); overridePendingTransition(0, 0); // 关闭转场动画 @@ -552,6 +579,12 @@ public class RoomActivity extends BaseMvpActivity roomMessageEventQueue = new LinkedBlockingQueue<>(); int i = 0; -// @Subscribe(threadMode = ThreadMode.MAIN) + // @Subscribe(threadMode = ThreadMode.MAIN) public void roomInfoEvent(RoomMessageEvent messageEvent) { if (messageEvent == null) return; @@ -978,7 +1011,7 @@ public class RoomActivity extends BaseMvpActivity pitMap = new HashMap<>(); public void handleMsgType1039(RoomMessageEvent messageEvent, RoomMessageEvent.T text) { - if (text == null || mRoomInfoResp == null || mRoomInfoResp.getRoom_info() == null) return; + if (mRoomInfoResp == null || mRoomInfoResp.getRoom_info() == null) { + return; + } - pitMap.clear(); - if (mRoomInfoResp.getRoom_info().getPit_list() != null && !mRoomInfoResp.getRoom_info().getPit_list().isEmpty()) { - for (RoomPitBean roomPitBean : mRoomInfoResp.getRoom_info().getPit_list()) { + List pitList = mRoomInfoResp.getRoom_info().getPit_list(); + if (pitList != null && !pitList.isEmpty()) { + pitMap.clear(); // 避免数据累积 + for (RoomPitBean roomPitBean : pitList) { pitMap.put(roomPitBean.getPit_number(), roomPitBean); } + if (text == null) { + return; + } + String fromPitNumber = text.getFrom_pit_number(); String toPitNumber = text.getTo_pit_number(); if (!TextUtils.isEmpty(fromPitNumber) && !TextUtils.isEmpty(toPitNumber)) { - performSwitchMic(fromPitNumber, toPitNumber); + performSwitchMic(fromPitNumber, toPitNumber, messageEvent); } // 执行换麦逻辑 - } + } - private void performSwitchMic(String fromPitNumber, String toPitNumber) { + private void performSwitchMic(String fromPitNumber, String toPitNumber, RoomMessageEvent messageEvent) { if (TextUtils.isEmpty(fromPitNumber) || TextUtils.isEmpty(toPitNumber)) { return; } - // 获取房间信息中的 pit_list - List pitList = mRoomInfoResp.getRoom_info().getPit_list(); + if (mRoomInfoResp == null || mRoomInfoResp.getRoom_info() == null) { + LogUtils.e("Room info is null"); + return; + } + List pitList = mRoomInfoResp.getRoom_info().getPit_list(); if (pitList == null || pitList.isEmpty()) { LogUtils.e("pit_list is null or empty"); return; } - // 查找两个麦位对应的 RoomPitBean RoomPitBean fromBean = null; RoomPitBean toBean = null; List pitListCopy = new ArrayList<>(); + for (RoomPitBean bean : pitList) { - if (bean.getPit_number().equals(fromPitNumber)) { + if (bean == null) continue; + if (fromPitNumber.equals(bean.getPit_number())) { fromBean = bean; pitListCopy.add(bean); - } else if (bean.getPit_number().equals(toPitNumber)) { + } else if (toPitNumber.equals(bean.getPit_number())) { toBean = bean; pitListCopy.add(bean); } } - pitList.removeAll(pitListCopy); - // 如果没有找到任一麦位,则不执行操作 if (fromBean == null || toBean == null) { LogUtils.e("Cannot find pit number: from=" + fromPitNumber + ", to=" + toPitNumber); return; @@ -1143,32 +1192,72 @@ public class RoomActivity extends BaseMvpActivity { + + // 构造新的 pitList + List newPitList = new ArrayList<>(); + for (RoomPitBean bean : pitList) { + if (!pitListCopy.contains(bean)) { + newPitList.add(bean); + } + } + newPitList.add(fromBean); + newPitList.add(toBean); + + // 排序 + newPitList.sort((a, b) -> { try { return Integer.compare(Integer.parseInt(a.getPit_number()), Integer.parseInt(b.getPit_number())); } catch (NumberFormatException e) { - return a.getPit_number().compareTo(b.getPit_number()); // 字符串比较作为备选 + return a.getPit_number().compareTo(b.getPit_number()); } }); - mRoomInfoResp.getRoom_info().setPit_list(pitList); + mRoomInfoResp.getRoom_info().setPit_list(newPitList); - // 更新当前用户的 pit_number(如果当前用户参与了换麦) + // 更新当前用户 pit_number if (mRoomInfoResp.getUser_info() != null) { String currentUserId = String.valueOf(SpUtil.getUserId()); - if (fromBean.getUser_id().equals(currentUserId)) { - // 当前用户原来在 fromBean 位置,现在换到了 toBean 位置 - mRoomInfoResp.getUser_info().setPit_number(Integer.parseInt(toBean.getPit_number())); - } else if (toBean.getUser_id().equals(currentUserId)) { - // 当前用户原来在 toBean 位置,现在换到了 fromBean 位置 - mRoomInfoResp.getUser_info().setPit_number(Integer.parseInt(fromBean.getPit_number())); + String fromUserId = fromBean.getUser_id(); + String toUserId = toBean.getUser_id(); + + if (fromUserId != null && fromUserId.equals(currentUserId)) { + try { + mRoomInfoResp.getUser_info().setPit_number(Integer.parseInt(toBean.getPit_number())); + } catch (NumberFormatException e) { + LogUtils.e("Invalid pit number: " + toBean.getPit_number()); + } + } else if (toUserId != null && toUserId.equals(currentUserId)) { + try { + mRoomInfoResp.getUser_info().setPit_number(Integer.parseInt(fromBean.getPit_number())); + } catch (NumberFormatException e) { + LogUtils.e("Invalid pit number: " + fromBean.getPit_number()); + } } } - roomFragment.updateSeatViewExchangedWithPitArray(mRoomInfoResp); + + dispatchRoomEvent(messageEvent); } + private void dispatchRoomEvent(RoomMessageEvent messageEvent) { + if (mRoomInfoResp == null || mRoomInfoResp.getRoom_info() == null) return; + + String typeId = mRoomInfoResp.getRoom_info().getType_id(); + if ("2".equals(typeId)) { + roomFragment.upRoomInfoData(mRoomInfoResp); + roomFragment.handleAuctionMessageEvent(messageEvent); + } else if ("3".equals(typeId) || "4".equals(typeId) || "1".equals(typeId)) { + String labelId = mRoomInfoResp.getRoom_info().getLabel_id(); + if ("2".equals(labelId)) { + roomFragment.KtvFragmentEvent(messageEvent); + } else if ("1".equals(labelId)) { + roomFragment.SingSongEvent(messageEvent); + } + } else if ("7".equals(typeId)) { + roomFragment.friendshipRoomFragmentEvent(messageEvent); + } + } + + private static volatile MP4PlaybackCallback sInstance; public static class MP4PlaybackCallback implements IAnimListener { @@ -1367,6 +1456,12 @@ public class RoomActivity extends BaseMvpActivity pitList = mRoomInfoResp.getRoom_info().getPit_list(); - if (pitList != null && !pitList.isEmpty()) { - try { - RoomPitBean pitBean = pitList.get(Integer.parseInt(pitNumber) - 1); - pitBean.setUser_id(userId + ""); - pitBean.setAvatar(fromUserInfo.getAvatar()); - pitBean.setNickname(fromUserInfo.getNickname()); - pitBean.setSex(fromUserInfo.getSex() + ""); - pitBean.setCharm(fromUserInfo.getCharm()); - pitBean.setDress(fromUserInfo.getDress()); - pitList.set(Integer.parseInt(pitNumber) - 1, pitBean); - } catch (NumberFormatException e) { - // Handle exception - } - } - roomFragment.updateSeatViewExchangedWithPitArray(mRoomInfoResp); + + roomFragment.friendshipRoomFragmentEvent(messageEvent); } else { roomFragment.updateSeatViewExchangedWithPitArray(mRoomInfoResp); } @@ -1434,6 +1511,10 @@ public class RoomActivity extends BaseMvpActivity pitList = mRoomInfoResp.getRoom_info().getPit_list(); - if (pitList != null && !pitList.isEmpty()) { - try { - RoomPitBean pitBean = pitList.get(Integer.parseInt(pitNumber) - 1); - pitBean.setUser_id(""); - pitBean.setAvatar(""); - pitBean.setNickname(""); - pitBean.setSex(""); - pitBean.setCharm(""); - pitBean.setDress(""); - pitList.set(Integer.parseInt(pitNumber) - 1, pitBean); - } catch (NumberFormatException e) { - // Handle exception - } - } - roomFragment.updateSeatViewExchangedWithPitArray(mRoomInfoResp); + + roomFragment.friendshipRoomFragmentEvent(messageEvent); } } @@ -1522,7 +1589,7 @@ public class RoomActivity extends BaseMvpActivity()); - mRoomInfoResp.getRoom_auction().getAuction_list().addAll(text.getAuction_list()); +// mRoomInfoResp.getRoom_auction().getAuction_list().addAll(text.getAuction_list()); } - roomFragment.upRoomInfo(mRoomInfoResp); + roomFragment.upRoomInfoData(mRoomInfoResp); roomFragment.handleAuctionMessageEvent(messageEvent); // roomFragment.updateSeatViewExchangedWithPitArray(mRoomInfoResp); } @@ -1600,7 +1667,7 @@ public class RoomActivity extends BaseMvpActivity list) { diff --git a/moduleroom/src/main/java/com/example/moduleroom/adapter/EaseChatAdapter.java b/moduleroom/src/main/java/com/example/moduleroom/adapter/EaseChatAdapter.java index 93b8fb1..5c4e546 100644 --- a/moduleroom/src/main/java/com/example/moduleroom/adapter/EaseChatAdapter.java +++ b/moduleroom/src/main/java/com/example/moduleroom/adapter/EaseChatAdapter.java @@ -468,27 +468,6 @@ public class EaseChatAdapter extends BaseMultiItemQuickAdapter 20) { -// // 只添加最近的20条消息 -// int startIndex = Math.max(0, allMsgList.size() - 20); -// allMsgList.subList(startIndex, allMsgList.size()); -// } -// // 根据当前显示类型决定是否添加到适配器中 -// boolean shouldAdd = (listShowType == SHOW_TYPE_ALL && (data.getItemType() == 1 || data.getItemType() == 2)) || -// (listShowType == SHOW_TYPE_USER && data.getItemType() == 2) || -// (listShowType == SHOW_TYPE_SYSTEM && data.getItemType() == 3); -// -// if (shouldAdd) { -// super.addData(data); -// } } private void addToStorageLists(EMMessageInfo data) { switch (data.getItemType()) { @@ -508,8 +487,8 @@ public class EaseChatAdapter extends BaseMultiItemQuickAdapter list) { diff --git a/moduleroom/src/main/java/com/example/moduleroom/contacts/RoomContacts.java b/moduleroom/src/main/java/com/example/moduleroom/contacts/RoomContacts.java index 27f4b41..32b0e59 100644 --- a/moduleroom/src/main/java/com/example/moduleroom/contacts/RoomContacts.java +++ b/moduleroom/src/main/java/com/example/moduleroom/contacts/RoomContacts.java @@ -82,5 +82,9 @@ public class RoomContacts { void clearUserCharm(String roomId, String userId);//清除魅力值 void userOnlineStatus(String userId, String roomid); + + void auctionEnd(String auctionId,String roomId); + + void auctionDelay(String auctionId); } } diff --git a/moduleroom/src/main/java/com/example/moduleroom/dialog/RoomGiftDialogFragment.java b/moduleroom/src/main/java/com/example/moduleroom/dialog/RoomGiftDialogFragment.java index a276590..0cd46e4 100644 --- a/moduleroom/src/main/java/com/example/moduleroom/dialog/RoomGiftDialogFragment.java +++ b/moduleroom/src/main/java/com/example/moduleroom/dialog/RoomGiftDialogFragment.java @@ -242,6 +242,17 @@ public class RoomGiftDialogFragment extends BaseMvpDialogFragment uniquePitSet = removeDuplicateByUserId(result); + result.clear(); + result.addAll(uniquePitSet); return result; } + // TODO: 2025/9/15 去重 + private List removeDuplicateByUserId(List list) { + Set userIdSet = new HashSet<>(); + List uniqueList = new ArrayList<>(); + + for (RewardUserBean bean : list) { + if (bean != null && bean.getUser_id() != null && !userIdSet.contains(bean.getUser_id())) { + userIdSet.add(bean.getUser_id()); + uniqueList.add(bean); + } + } + + return uniqueList; + } + + @Override protected void initView() { // mBinding.rvGiftUser.setLayoutManager(new LinearLayoutManager(getContext(), LinearLayoutManager.HORIZONTAL, false)); diff --git a/moduleroom/src/main/java/com/example/moduleroom/fragment/FriendshipRoomFragment.java b/moduleroom/src/main/java/com/example/moduleroom/fragment/FriendshipRoomFragment.java index 896065b..3cbc010 100644 --- a/moduleroom/src/main/java/com/example/moduleroom/fragment/FriendshipRoomFragment.java +++ b/moduleroom/src/main/java/com/example/moduleroom/fragment/FriendshipRoomFragment.java @@ -233,6 +233,10 @@ public class FriendshipRoomFragment extends BaseRoomFragment pitList = roomInfoResp.getRoom_info().getPit_list(); + if (pitList != null && !pitList.isEmpty()) { + try { + RoomPitBean pitBean = pitList.get(Integer.parseInt(pitNumber) - 1); + pitBean.setUser_id(userId + ""); + pitBean.setAvatar(fromUserInfo.getAvatar()); + pitBean.setNickname(fromUserInfo.getNickname()); + pitBean.setSex(fromUserInfo.getSex() + ""); + pitBean.setCharm(fromUserInfo.getCharm()); + pitBean.setDress(fromUserInfo.getDress()); + pitList.set(Integer.parseInt(pitNumber) - 1, pitBean); + if (userId==SpUtil.getUserId() && pitNumber.equals("9")){ + myPitNumber=9; + configGameOptionBtn(); + } + for (int i = 0; i < mWheatViews.size(); i++){ + if (i==Integer.parseInt(pitNumber) - 1){ + mWheatViews.get(i).setData(pitBean); + break; + } + } + + + } catch (NumberFormatException e) { + // Handle exception + } + } + + } + + public void event1004(RoomMessageEvent messageEvent){ + String pitNumber = messageEvent.getText().getPit_number(); + List pitList = roomInfoResp.getRoom_info().getPit_list(); + if (pitList != null && !pitList.isEmpty()) { + try { + RoomPitBean pitBean = pitList.get(Integer.parseInt(pitNumber) - 1); + pitBean.setUser_id(""); + pitBean.setAvatar(""); + pitBean.setNickname(""); + pitBean.setSex(""); + pitBean.setCharm(""); + pitBean.setDress(""); + pitList.set(Integer.parseInt(pitNumber) - 1, pitBean); + if (pitNumber.equals("9")){ + myPitNumber=0; + configGameOptionBtn(); + } + for (int i = 0; i < mWheatViews.size(); i++){ + if (i==Integer.parseInt(pitNumber) - 1){ + mWheatViews.get(i).setData(pitBean); + break; + } + } + } catch (NumberFormatException e) { + // Handle exception + } + } + } + public void event1035(RoomMessageEvent message) { + + for (int i = 0; i < roomInfoResp.getRoom_info().getPit_list().size(); i++) { + RoomPitBean roomPitBean = roomInfoResp.getRoom_info().getPit_list().get(i); + if (roomPitBean.getPit_number().equals("7") || roomPitBean.getPit_number().equals("8")) { + continue; + } + if (Integer.parseInt(!roomPitBean.getPit_number().isEmpty() ? roomPitBean.getPit_number() : "0") > 10) { + continue; + } + RoomFriendshipWheatView object = mWheatViews.get(Integer.parseInt(roomPitBean.getPit_number()) - 1); + if (object != null) { + object.setData(roomPitBean); + } else { + continue; + } + } + } + public void event1039(RoomMessageEvent messageEvent){ + for (int i = 0; i < roomInfoResp.getRoom_info().getPit_list().size(); i++) { + RoomPitBean roomPitBean = roomInfoResp.getRoom_info().getPit_list().get(i); + if (roomPitBean.getPit_number().equals("7") || roomPitBean.getPit_number().equals("8")) { + continue; + } + if (Integer.parseInt(!roomPitBean.getPit_number().isEmpty() ? roomPitBean.getPit_number() : "0") > 10) { + continue; + } + + RoomFriendshipWheatView object = mWheatViews.get(Integer.parseInt(roomPitBean.getPit_number()) - 1); + + if (object != null) { + object.setData(roomPitBean); + } else { + continue; + } + } + } + // TODO: 2025/9/12 更新火热值 public void event1005(RoomMessageEvent messageEvent){ RoomPitBean pitBean = mBinding.wheatView9.pitBean; @@ -764,8 +870,10 @@ public class FriendshipRoomFragment extends BaseRoomFragment 0) { Logger.d("显示 iv_22 动画 - 心动值: " + heartList1.getHeartNum()); - mBinding.iv22.setVisibility(View.VISIBLE); +// mBinding.iv22.setVisibility(View.VISIBLE); + mBinding.imX2.setVisibility(View.VISIBLE); mBinding.tv2.setVisibility(View.VISIBLE); mBinding.tv2.setText(heartList1.getHeartNum() + ""); // 添加回调确认动画是否加载成功 - mBinding.iv22.setCallback(new SVGACallback() { - @Override - public void onRepeat() { - Logger.d("SVGA onRepeat"); - } - - @Override - public void onStep(int i, double v) { - // 每一步的回调 - } - - @Override - public void onPause() { - Logger.d("SVGA onPause"); - } - - @Override - public void onFinished() { - Logger.d("SVGA onFinished"); - // 如果需要循环播放,可以在这里重新开始 - if (mBinding.iv22.getVisibility() == View.VISIBLE) { - mBinding.iv22.startAnimation(); - } - } - }); - if (!centerIsAnimate) { - // 强制刷新视图 - mBinding.iv22.requestLayout(); - mBinding.iv22.invalidate(); - - ImageUtils.loadDecorationAvatar2(0, mBinding.iv22); - mBinding.iv22.startAnimation(); - centerIsAnimate = true; - } +// mBinding.iv22.setCallback(new SVGACallback() { +// @Override +// public void onRepeat() { +// Logger.d("SVGA onRepeat"); +// } +// +// @Override +// public void onStep(int i, double v) { +// // 每一步的回调 +// } +// +// @Override +// public void onPause() { +// Logger.d("SVGA onPause"); +// } +// +// @Override +// public void onFinished() { +// Logger.d("SVGA onFinished"); +// // 如果需要循环播放,可以在这里重新开始 +// if (mBinding.iv22.getVisibility() == View.VISIBLE) { +// mBinding.iv22.startAnimation(); +// } +// } +// }); +// if (!centerIsAnimate) { +// // 强制刷新视图 +// mBinding.iv22.requestLayout(); +// mBinding.iv22.invalidate(); +// +// ImageUtils.loadDecorationAvatar2(0, mBinding.iv22); +// mBinding.iv22.startAnimation(); +// centerIsAnimate = true; +// } } else { - mBinding.iv22.setVisibility(View.GONE); + mBinding.imX2.setVisibility(View.GONE); +// mBinding.iv22.setVisibility(View.GONE); mBinding.tv2.setVisibility(View.GONE); - mBinding.iv22.stopAnimation(); +// mBinding.iv22.stopAnimation(); centerIsAnimate = false; } if (heartList2 != null && heartList2.getHeartNum() > 0) { - mBinding.iv11.setVisibility(View.VISIBLE); + mBinding.imX1.setVisibility(View.VISIBLE); +// mBinding.iv11.setVisibility(View.VISIBLE); mBinding.tv1.setVisibility(View.VISIBLE); mBinding.tv1.setText(heartList2.getHeartNum() + ""); - if (!topIsAnimate) { - // 强制刷新视图 - mBinding.iv11.requestLayout(); - mBinding.iv11.invalidate(); - - mBinding.iv11.startAnimation(); - topIsAnimate = true; - ImageUtils.loadDecorationAvatar2(0, mBinding.iv11); - } +// if (!topIsAnimate) { +// // 强制刷新视图 +// mBinding.iv11.requestLayout(); +// mBinding.iv11.invalidate(); +// +// mBinding.iv11.startAnimation(); +// topIsAnimate = true; +// ImageUtils.loadDecorationAvatar2(0, mBinding.iv11); +// } } else { - mBinding.iv11.setVisibility(View.GONE); + mBinding.imX1.setVisibility(View.GONE); +// mBinding.iv11.setVisibility(View.GONE); mBinding.tv1.setVisibility(View.GONE); - mBinding.iv11.stopAnimation(); +// mBinding.iv11.stopAnimation(); topIsAnimate = false; } if (heartList3 != null && heartList3.getHeartNum() > 0) { - mBinding.iv33.setVisibility(View.VISIBLE); + mBinding.imX3.setVisibility(View.VISIBLE); +// mBinding.iv33.setVisibility(View.VISIBLE); mBinding.tv3.setVisibility(View.VISIBLE); mBinding.tv3.setText(heartList3.getHeartNum() + ""); - if (!bottomIsAnimate) { - // 强制刷新视图 - mBinding.iv33.requestLayout(); - mBinding.iv33.invalidate(); - - mBinding.iv33.startAnimation(); - bottomIsAnimate = true; - ImageUtils.loadDecorationAvatar2(0, mBinding.iv33); - } +// if (!bottomIsAnimate) { +// // 强制刷新视图 +// mBinding.iv33.requestLayout(); +// mBinding.iv33.invalidate(); +// +// mBinding.iv33.startAnimation(); +// bottomIsAnimate = true; +// ImageUtils.loadDecorationAvatar2(0, mBinding.iv33); +// } } else { - mBinding.iv33.setVisibility(View.GONE); + mBinding.imX3.setVisibility(View.GONE); +// mBinding.iv33.setVisibility(View.GONE); mBinding.tv3.setVisibility(View.GONE); - mBinding.iv33.stopAnimation(); +// mBinding.iv33.stopAnimation(); bottomIsAnimate = false; } } else { - mBinding.iv22.setVisibility(GONE); - mBinding.iv11.setVisibility(GONE); - mBinding.iv33.setVisibility(GONE); - mBinding.iv22.stopAnimation(); - mBinding.iv11.stopAnimation(); - mBinding.iv33.stopAnimation(); + mBinding.imX2.setVisibility(GONE); + mBinding.imX1.setVisibility(GONE); + mBinding.imX3.setVisibility(GONE); +// mBinding.iv22.setVisibility(GONE); +// mBinding.iv11.setVisibility(GONE); +// mBinding.iv33.setVisibility(GONE); +// mBinding.iv22.stopAnimation(); +// mBinding.iv11.stopAnimation(); +// mBinding.iv33.stopAnimation(); topIsAnimate = false; centerIsAnimate = false; bottomIsAnimate = false; @@ -1235,9 +1356,9 @@ public class FriendshipRoomFragment extends BaseRoomFragment auctionList; - private ImageView imActionJs, imActionYs; - private ViewStub stub; +// private ImageView imActionJs, imActionYs; + // private LinearLayout stub; private boolean isButtonsInflated = false; private int type; RoomFragment parentFragment; @@ -116,6 +117,14 @@ public class RoomAuctionFragment extends BaseMvpFragment 0) { auctionList = roomAuction.getAuction_list(); @@ -223,14 +248,25 @@ public class RoomAuctionFragment extends BaseMvpFragment implements RoomContacts.View { - public static RoomFragment newInstance(RoomInfoResp roomInfo, String password) { + public static RoomFragment newInstance() { Bundle args = new Bundle(); - args.putSerializable("roomInfo", roomInfo); - args.putString("password", password); RoomFragment fragment = new RoomFragment(); fragment.setArguments(args); return fragment; @@ -101,25 +102,29 @@ public class RoomFragment extends BaseMvpFragment { + if (isAdded() && getActivity() != null) { + getChildFragmentManager() + .beginTransaction() + .replace(R.id.container, singSongFragment) + .commitAllowingStateLoss(); + } + }); + } + } + } + + private void releaseKtvFragment() { + if (ktvFragment != null) { + ktvFragment.releaseResources(); + ktvFragment = null; + } + } + + private void createKtvFragment() { + if (ktvFragment == null) { + ktvFragment = RoomKtvFragment.newInstance(); + getChildFragmentManager() + .beginTransaction() + .replace(R.id.container, ktvFragment) + .commitAllowingStateLoss(); + } + } + + private void releaseRoomAuctionFragment() { + if (roomAuctionFragment != null) { + roomAuctionFragment.releaseResources(); + roomAuctionFragment = null; + } + } + + private void createRoomAuctionFragment() { + if (roomAuctionFragment == null) { + roomAuctionFragment = RoomAuctionFragment.newInstance(); + getChildFragmentManager() + .beginTransaction() + .replace(R.id.container, roomAuctionFragment) + .commitAllowingStateLoss(); + } + } + + private void releaseFriendshipRoomFragment() { + if (friendshipRoomFragment != null) { + friendshipRoomFragment.releaseResources(); + friendshipRoomFragment = null; + } + } + + private void createFriendshipRoomFragment() { + if (friendshipRoomFragment == null) { + friendshipRoomFragment = FriendshipRoomFragment.newInstance(); +// replaceNestedFragment(friendshipRoomFragment, R.id.container); + getChildFragmentManager() + .beginTransaction() + .replace(R.id.container, friendshipRoomFragment) + .commitAllowingStateLoss(); + } + } + + private void releaseRoomCabinFragment() { + if (roomCabinFragment != null) { + roomCabinFragment.releaseResources(); + roomCabinFragment = null; + } + } + + private void createRoomCabinFragment() { + if (roomCabinFragment == null) { + roomCabinFragment = RoomCabinFragment.newInstance(); +// replaceNestedFragment(roomCabinFragment, R.id.container); + getChildFragmentManager() + .beginTransaction() + .replace(R.id.container, roomCabinFragment) + .commitAllowingStateLoss(); + } + } + public void onFragmentShowDestroy() { if (EventBus.getDefault().isRegistered(this)) { EventBus.getDefault().unregister(this); @@ -162,21 +312,8 @@ public class RoomFragment extends BaseMvpFragment T findFragmentByTag(Class fragmentClass) { return (T) getChildFragmentManager().findFragmentByTag(fragmentClass.getSimpleName()); } + private void upView(QXRoomSeatViewType qxRoomSeatViewType) { + this.qxRoomSeatViewType = qxRoomSeatViewType; + switch (qxRoomSeatViewType) { + case KTV: + if (ktvFragment != null && ktvFragment.isAdded()) { + ktvFragment.roomInfoUpdate(mRoomInfoResp); + } else { + setqxRoomSeatViewType(qxRoomSeatViewType); + } + break; + case AUCTION: + if (roomAuctionFragment != null && roomAuctionFragment.isAdded()) { +// roomAuctionFragment.roomInfoUpdate(mRoomInfoResp); + } else { + setqxRoomSeatViewType(qxRoomSeatViewType); + } + break; + case CABIN: + if (roomCabinFragment != null && roomCabinFragment.isAdded()) { + roomCabinFragment.roomInfoUpdate(mRoomInfoResp); + } else { + setqxRoomSeatViewType(qxRoomSeatViewType); + } + break; + case FRIEND: + if (friendshipRoomFragment != null) { + friendshipRoomFragment.roomInfoUpdate(mRoomInfoResp); + } else { + setqxRoomSeatViewType(qxRoomSeatViewType); + } + break; + case NORMAL: + if (singSongFragment != null && singSongFragment.isAdded()) { + singSongFragment.roomInfoUpdate(mRoomInfoResp); + } else { + setqxRoomSeatViewType(qxRoomSeatViewType); + } + break; + default: + break; + } + } + public void updateChildFragmentViews() { // 使用弱引用避免内存泄漏 @@ -386,8 +555,48 @@ public class RoomFragment extends BaseMvpFragment updateChildFragmentViews()); - } +// if (getActivity() != null && isAdded()) { +// getView().post(() -> updateChildFragmentViews()); +// } - if (getActivity() instanceof RoomActivity) { - if (mRoomInfoResp.getRoom_info().getType_id().equals("6")) { - ((RoomActivity) getActivity()).changeBackground(com.xscm.moduleutil.R.mipmap.cabin_bj); - ((RoomActivity) getActivity()).setvisibTop(false); - } else if (mRoomInfoResp.getRoom_info().getType_id().equals("7")) { - if (mRoomInfoResp.getRoom_info().getRoom_background()==null || mRoomInfoResp.getRoom_info().getRoom_background().equals("")) { - ((RoomActivity) getActivity()).changeBackground(com.xscm.moduleutil.R.mipmap.jiaoy_bj); - }else { - ((RoomActivity) getActivity()).changeBackgroundColor(mRoomInfoResp.getRoom_info().getRoom_background()); - } - ((RoomActivity) getActivity()).setvisibTop(true); - } else { - ((RoomActivity) getActivity()).changeBackgroundColor(mRoomInfoResp.getRoom_info().getRoom_background()); - ((RoomActivity) getActivity()).setvisibTop(true); - } - } +// if (getActivity() instanceof RoomActivity) { +// if (mRoomInfoResp.getRoom_info().getType_id().equals("6")) { +// ((RoomActivity) getActivity()).changeBackground(com.xscm.moduleutil.R.mipmap.cabin_bj); +// ((RoomActivity) getActivity()).setvisibTop(false); +// } else if (mRoomInfoResp.getRoom_info().getType_id().equals("7")) { +// if (mRoomInfoResp.getRoom_info().getRoom_background() == null || mRoomInfoResp.getRoom_info().getRoom_background().equals("")) { +// ((RoomActivity) getActivity()).changeBackground(com.xscm.moduleutil.R.mipmap.jiaoy_bj); +// } else { +// ((RoomActivity) getActivity()).changeBackgroundColor(mRoomInfoResp.getRoom_info().getRoom_background()); +// } +// ((RoomActivity) getActivity()).setvisibTop(true); +// } else { +// ((RoomActivity) getActivity()).changeBackgroundColor(mRoomInfoResp.getRoom_info().getRoom_background()); +// ((RoomActivity) getActivity()).setvisibTop(true); +// } +// } + + updateChildFragmentViews(); } /// 这是在进入电影放的时候,隐藏下面的和排麦视图 @@ -532,12 +752,21 @@ public class RoomFragment extends BaseMvpFragment(); if (getActivity() instanceof RoomActivity) { @@ -338,7 +340,8 @@ public class SingSongFragment extends BaseRoomFragment implements R } }); } + + @Override + public void auctionEnd(String auctionId,String roomId) { + api.auctionEnd(auctionId,roomId, new BaseObserver() { + + @Override + public void onSubscribe(Disposable d) { + addDisposable(d); + } + + @Override + public void onNext(String s) { +// MvpRef.get().auctionEnd(); + } + }); + } + + @Override + public void auctionDelay(String auctionId) { + RetrofitClient.getInstance().auctionDelay(auctionId, new BaseObserver() { + @Override + public void onSubscribe(Disposable d) { + addDisposable(d); + } + + @Override + public void onNext(String s) { + +// MvpRef.get().auctionDelay(); + } + }); + } } diff --git a/moduleroom/src/main/res/layout/activity_room.xml b/moduleroom/src/main/res/layout/activity_room.xml index b28c88f..b62f985 100644 --- a/moduleroom/src/main/res/layout/activity_room.xml +++ b/moduleroom/src/main/res/layout/activity_room.xml @@ -468,7 +468,8 @@ android:src="@mipmap/room_sound_effects" app:layout_constraintBottom_toTopOf="@+id/iv_wheat_feeding" app:layout_constraintEnd_toEndOf="parent" - tools:visibility="visible" /> + tools:visibility="visible" + android:visibility="gone"/> - + + + + + + + + + + + + + + app:layout_constraintBottom_toBottomOf="@id/wheat_view2" + app:layout_constraintEnd_toStartOf="@+id/wheat_view5" + app:layout_constraintStart_toEndOf="@id/wheat_view2" + app:layout_constraintTop_toTopOf="@id/wheat_view2" /> - + + + + + + + + + + + + + + - + + + + + + + + + + + + + + - + > + + + + diff --git a/modulevocal/src/main/java/com/example/modulevocal/activity/RechargeActivity.java b/modulevocal/src/main/java/com/example/modulevocal/activity/RechargeActivity.java index a5d1277..879d632 100644 --- a/modulevocal/src/main/java/com/example/modulevocal/activity/RechargeActivity.java +++ b/modulevocal/src/main/java/com/example/modulevocal/activity/RechargeActivity.java @@ -4,6 +4,8 @@ import static com.xscm.moduleutil.utils.permission.PermissionUtils.TAG; import android.text.TextUtils; import android.view.View; +import android.view.ViewGroup; +import android.view.WindowManager; import androidx.appcompat.app.AlertDialog; import androidx.recyclerview.widget.GridLayoutManager; @@ -27,6 +29,8 @@ import com.xscm.moduleutil.color.ThemeableDrawableUtils; import com.xscm.moduleutil.utils.ARouteConstants; import com.xscm.moduleutil.utils.ColorManager; import com.xscm.moduleutil.utils.SpUtil; +import com.xscm.moduleutil.utils.SystemUtils; +import com.xscm.moduleutil.widget.EqualSpaceItemDecoration; import com.xscm.moduleutil.widget.PaymentUtil; import com.tencent.liteav.base.Log; import com.tencent.mm.opensdk.constants.ConstantsAPI; @@ -81,6 +85,11 @@ public class RechargeActivity extends BaseMvpActivity { @@ -28,7 +32,7 @@ public class UserGiftWallAdapter extends BaseQuickAdapter 0) { + List displayUsers = new ArrayList<>(); + if (item.getTop_users() != null) { + int maxDisplay = Math.min(2, item.getTop_users().size()); // 最多显示2个 + for (int i = 0; i < maxDisplay; i++) { + displayUsers.add(item.getTop_users().get(i)); + } + } + TopUsersAdapter topUsersAdapter = new TopUsersAdapter(displayUsers); + recyclerView.setAdapter(topUsersAdapter); + } + } else { // 未点亮的礼物只显示图片、名称和金额,不高亮 helper.setVisible(R.id.tv_number, false); @@ -49,6 +74,7 @@ public class UserGiftWallAdapter extends BaseQuickAdapter - - - - + - + diff --git a/modulevocal/src/main/res/layout/me_item_user_gift_wall.xml b/modulevocal/src/main/res/layout/me_item_user_gift_wall.xml index 15d5867..c5ee229 100644 --- a/modulevocal/src/main/res/layout/me_item_user_gift_wall.xml +++ b/modulevocal/src/main/res/layout/me_item_user_gift_wall.xml @@ -2,19 +2,20 @@ + android:orientation="vertical" + > - + + + + + + app:layout_constraintTop_toBottomOf="@+id/tv_gift_name" + app:layout_constraintBottom_toBottomOf="parent"/> - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/modulevoice/src/main/java/com/example/modulevoice/activity/ui/main/PlaceholderFragment.java b/modulevoice/src/main/java/com/example/modulevoice/activity/ui/main/PlaceholderFragment.java index 0fb6fbe..f9fae35 100644 --- a/modulevoice/src/main/java/com/example/modulevoice/activity/ui/main/PlaceholderFragment.java +++ b/modulevoice/src/main/java/com/example/modulevoice/activity/ui/main/PlaceholderFragment.java @@ -134,17 +134,7 @@ public class PlaceholderFragment extends BaseMvpFragment(R.layout.index_rv_item_ranking_list) { @@ -168,7 +179,7 @@ public class PlaceholderFragment extends BaseMvpFragment