修改MQTT使用方式

修改bug
修改盲盒布局
This commit is contained in:
2025-09-04 01:10:07 +08:00
parent c90b44ebf6
commit 830913e001
78 changed files with 1027 additions and 322 deletions

View File

@@ -15,7 +15,7 @@
<activity
android:name=".activity.RoomActivity"
android:exported="false"
android:launchMode="singleTask"
android:launchMode="singleInstance"
android:windowSoftInputMode="adjustPan"
android:enableOnBackInvokedCallback="false"
android:theme="@style/TransparentActivityTheme"

View File

@@ -316,7 +316,7 @@ public class RoomActivity extends BaseMvpActivity<RoomPresenter, ActivityRoomBin
// EMqttService.cleanSubscribeRoom(roomId);
CommonAppContext.getInstance().isPlaying = false;
CommonAppContext.getInstance().isShow = false;
cleanupResources();
// cleanupResources();
}
@Override
@@ -798,6 +798,8 @@ public class RoomActivity extends BaseMvpActivity<RoomPresenter, ActivityRoomBin
handleMsgType1016(messageEvent, text);
} else if (msgType == 1039) {
handleMsgType1039(messageEvent, text);
}else if (msgType==1028){
roomFragment.handleMsgType1028(messageEvent);
}
}
@@ -926,7 +928,7 @@ public class RoomActivity extends BaseMvpActivity<RoomPresenter, ActivityRoomBin
} else if ("1".equals(labelId)) {
roomFragment.SingSongEvent(messageEvent);
}
} else {
} else if ("7".equals(typeId)){
for (RoomPitBean roomPitBean : pitList) {
if (roomPitBean.getUser_id().equals(toUserInfo.getUser_id() + "")) {
roomPitBean.setCharm(toUserInfo.getCharm());
@@ -1676,8 +1678,14 @@ public class RoomActivity extends BaseMvpActivity<RoomPresenter, ActivityRoomBin
@Override
public void onMinimize() {
// 处理最小化逻辑,比如不销毁 Activity仅移至后台
// CommonAppContext.getInstance().isShow = false;
// ARouter.getInstance().build(ARouteConstants.ME).navigation();//栈顶复用
// moveTaskToBack(true);
CommonAppContext.getInstance().isShow = false;
ARouter.getInstance().build(ARouteConstants.ME).navigation();//栈顶复用
ARouter.getInstance().build(ARouteConstants.ME)
.withFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
.navigation();
// moveTaskToBack(true);
}
@@ -2688,6 +2696,7 @@ public class RoomActivity extends BaseMvpActivity<RoomPresenter, ActivityRoomBin
MyRoomSingleton.getInstance().onExitRoom();
MessageListenerSingleton.reset(roomId);
ARouter.getInstance().build(ARouteConstants.ME).navigation();//栈顶复用
cleanupResources();
finish();
}

View File

@@ -5,26 +5,31 @@ import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.example.moduleroom.R;
import com.google.android.material.bottomsheet.BottomSheetDialogFragment;
/**
*@author qx
*@data 2025/6/26
*@description: 底部弹框,退出房间选择
* @author qx
* @data 2025/6/26
* @description: 底部弹框,退出房间选择
*/
public class ExitRoomBottomSheet extends BottomSheetDialogFragment {
public interface OnOptionSelectedListener {
void onMinimize(); // 最小化
void onExitRoom(); // 退出房间
void onCancel(); // 取消
}
private OnOptionSelectedListener listener;
private TextView tv_minimize;
public static ExitRoomBottomSheet newInstance() {
return new ExitRoomBottomSheet();
@@ -42,7 +47,7 @@ public class ExitRoomBottomSheet extends BottomSheetDialogFragment {
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.dialog_exit_room_bottom_sheet, container, false);
tv_minimize = view.findViewById(R.id.tv_minimize);
view.findViewById(R.id.tv_minimize).setOnClickListener(v -> {
if (listener != null) listener.onMinimize();
dismiss();
@@ -61,6 +66,10 @@ public class ExitRoomBottomSheet extends BottomSheetDialogFragment {
return view;
}
public void setViewUp(boolean isUp) {
tv_minimize.setVisibility(isUp ? View.VISIBLE : View.GONE);
}
public void setOnOptionSelectedListener(OnOptionSelectedListener listener) {
this.listener = listener;
}

View File

@@ -5,6 +5,7 @@ import android.content.Context;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
@@ -383,16 +384,25 @@ public class RoomGiftDialogFragment extends BaseMvpDialogFragment<RewardGiftPres
return;
}
this.dismiss();
FragmentManager fm = getParentFragmentManager();
GiftLotteryDialog newDialog = GiftLotteryDialog.newInstance(gift.getGift_bag() + "", roomId, userId);
newDialog.show(fm, "GiftLotteryDialog");
// this.dismiss();
// FragmentManager fm = getParentFragmentManager();
// GiftLotteryDialog newDialog = GiftLotteryDialog.newInstance(gift.getGift_bag() + "", roomId, userId);
// newDialog.show(fm, "GiftLotteryDialog");
fm.beginTransaction()
.replace(getId(), newDialog)
.addToBackStack(null)
.commit();
try {
// 直接显示对话框,移除有问题的 FragmentTransaction
this.dismissAllowingStateLoss(); // 使用 dismissAllowingStateLoss 更安全
FragmentManager fm = getParentFragmentManager();
if (fm != null && !fm.isDestroyed()) {
GiftLotteryDialog newDialog = GiftLotteryDialog.newInstance(
String.valueOf(gift.getGift_bag()), roomId, userId);
newDialog.show(fm, "GiftLotteryDialog");
}
} catch (Exception e) {
Log.e("RoomGiftDialogFragment", "Error in showGiftLotteryDialog", e);
ToastUtils.show("操作失败,请重试");
}
// 如果当前dialog存在且正在显示先关闭
// if (currentDialog != null && currentDialog.isVisible()) {

View File

@@ -300,6 +300,8 @@ public class RoomUserInfoFragment extends BaseMvpDialogFragment<RoomUserPresente
}
if (paim==1){
contentView.findViewById(R.id.action_kick_out).setVisibility(GONE);
}else {
contentView.findViewById(R.id.action_kick_out).setVisibility(VISIBLE);
}
}
@@ -477,7 +479,7 @@ public class RoomUserInfoFragment extends BaseMvpDialogFragment<RoomUserPresente
mBinding.roomDian.setVisibility(View.GONE);
mBinding.roomJb.setVisibility(View.VISIBLE);
mBinding.roomLh.setVisibility(View.VISIBLE);
mBinding.roomBo.setVisibility(View.GONE);
mBinding.roomBo.setVisibility(VISIBLE);
mBinding.roomMCz.setVisibility(GONE);
}else {

View File

@@ -209,6 +209,10 @@ public class FriendshipRoomFragment extends BaseRoomFragment<FriendshipRoomPrese
initPopupWindow();
}
public void upRoomInfo(RoomInfoResp roomInfoResp) {
this.roomInfoResp = roomInfoResp;
}
/**
* 麦位视图点击事件处理
*

View File

@@ -218,7 +218,7 @@ public class PublicScreenEaseChatFragment extends BaseMvpFragment<PublicScreenEa
toChatUsername = roomInfoResp.getRoom_info().getChatrooms();
this.roomId = roomInfoResp.getRoom_info().getRoom_id();
RoomMessageEvent.T t = new RoomMessageEvent.T();
t.setText("羽声严禁未成年人进行直播或打赏官方将24小时在线巡查。我们提倡绿色直播直播间严禁出现涉政、涉恐、涉黄、涉赌等违法违规内容严禁宣传封建迷信、宗教极端思想、出现低俗色情、吸烟酗酒等内容严禁违反社会主义核心价值观、践踏社会道德底线、诱导打赏、低俗 PK 、买卖金币等行为,请大家共同遵守、监督并及时举报。请勿相信各类刷钻、购买礼包、游戏币及电商贩卖等非官方广告信息,谨防网络诈骗。");
t.setText("秘地严禁未成年人进行直播或打赏官方将24小时在线巡查。我们提倡绿色直播直播间严禁出现涉政、涉恐、涉黄、涉赌等违法违规内容严禁宣传封建迷信、宗教极端思想、出现低俗色情、吸烟酗酒等内容严禁违反社会主义核心价值观、践踏社会道德底线、诱导打赏、低俗 PK 、买卖金币等行为,请大家共同遵守、监督并及时举报。请勿相信各类刷钻、购买礼包、游戏币及电商贩卖等非官方广告信息,谨防网络诈骗。");
// 加入群组成功
handleRoomMessage(new RoomMessageEvent(1000, roomId, t));
onChatRoomViewCreation();
@@ -515,6 +515,9 @@ public class PublicScreenEaseChatFragment extends BaseMvpFragment<PublicScreenEa
public void handleRoomMessage(RoomMessageEvent message) {
LogUtils.e("@@@", "handleRoomMessage: " + message);
LogUtils.e("@@@", "handleRoomMessage: roomId" + roomId);
if (easeChatAdapter==null){
easeChatAdapter=new EaseChatAdapter();
}
if (message.getRoomId() == null){
return;
}

View File

@@ -85,9 +85,8 @@ public class RoomCabinFragment extends BaseRoomFragment<RoomCabinPresenter, Room
private final ScreenCaptureParameters screenCaptureParameters = new ScreenCaptureParameters();
public static RoomCabinFragment newInstance(RoomInfoResp roomInfoResp) {
public static RoomCabinFragment newInstance() {
Bundle args = new Bundle();
args.putSerializable("roomInfoResp", (Serializable) roomInfoResp);
RoomCabinFragment fragment = new RoomCabinFragment();
fragment.setArguments(args);
return fragment;
@@ -96,12 +95,12 @@ public class RoomCabinFragment extends BaseRoomFragment<RoomCabinPresenter, Room
@Override
public void initArgs(Bundle arguments) {
super.initArgs(arguments);
roomInfoResp = (RoomInfoResp) arguments.getSerializable("roomInfoResp");
if (roomInfoResp != null) {
roomId = roomInfoResp.getRoom_info().getRoom_id();
cpUserBean = roomInfoResp.getCp_user();
label_id = roomInfoResp.getRoom_info().getLabel_id();
}
// roomInfoResp = (RoomInfoResp) arguments.getSerializable("roomInfoResp");
// if (roomInfoResp != null) {
// roomId = roomInfoResp.getRoom_info().getRoom_id();
// cpUserBean = roomInfoResp.getCp_user();
// label_id = roomInfoResp.getRoom_info().getLabel_id();
// }
}
private boolean isLandscape;
@@ -146,63 +145,7 @@ public class RoomCabinFragment extends BaseRoomFragment<RoomCabinPresenter, Room
@Override
protected void initData() {
if (roomInfoResp == null) return;
mBinding.ivExit.setOnClickListener(this::onHeartLineClicked);
// 获取当前用户 ID
String currentUserId = SpUtil.getUserId() + "";
// 定义两个 RoomPitBean 对象,分别用于显示在 roomMakeWheat1 和 roomMakeWheat2
RoomPitBean selfBean = new RoomPitBean(); // 自己的 bean
RoomPitBean otherBean = new RoomPitBean(); // 另一个用户的 bean
boolean isSelfFirst = false;
// 判断当前用户是 user_id 还是 user_id1
if (cpUserBean != null) {
if (currentUserId.equals(cpUserBean.getUser_id())) {
// 当前用户是 user_id
selfBean.setUser_id(cpUserBean.getUser_id());
selfBean.setUser_code(cpUserBean.getUser_code());
selfBean.setNickname(cpUserBean.getNickname());
selfBean.setAvatar(cpUserBean.getAvatar());
selfBean.setDress(cpUserBean.getDress());
selfBean.setPit_number("000");
otherBean.setUser_id(cpUserBean.getUser_id1());
otherBean.setUser_code(cpUserBean.getUser_code1());
otherBean.setNickname(cpUserBean.getNickname1());
otherBean.setAvatar(cpUserBean.getAvatar1());
otherBean.setDress(cpUserBean.getDress1());
otherBean.setPit_number("000");
} else if (currentUserId.equals(cpUserBean.getUser_id1())) {
// 当前用户是 user_id1则交换位置
selfBean.setUser_id(cpUserBean.getUser_id1());
selfBean.setUser_code(cpUserBean.getUser_code1());
selfBean.setNickname(cpUserBean.getNickname1());
selfBean.setAvatar(cpUserBean.getAvatar1());
selfBean.setDress(cpUserBean.getDress1());
selfBean.setPit_number("000");
otherBean.setUser_id(cpUserBean.getUser_id());
otherBean.setUser_code(cpUserBean.getUser_code());
otherBean.setNickname(cpUserBean.getNickname());
otherBean.setAvatar(cpUserBean.getAvatar());
otherBean.setDress(cpUserBean.getDress());
otherBean.setPit_number("000");
}
}
// 不论谁是自己,始终将自己放在 roomMakeWheat1
mBinding.roomMakeWheat1.setData(selfBean);
// 将另一个用户的数据放在 roomMakeWheat2
mBinding.roomMakeWheat2.setData(otherBean);
mBinding.tvMainTitle.setText(roomInfoResp.getRoom_info().getRoom_name());
mBinding.tvHeartValue2.setText(roomInfoResp.getRoom_info().getHot_value());
if (cpUserBean != null) {
countDownTime(Long.parseLong(cpUserBean.getTime_day()));
}
mediaProjectionManager = (MediaProjectionManager) getContext().getSystemService(Context.MEDIA_PROJECTION_SERVICE);
}
@@ -227,7 +170,7 @@ public class RoomCabinFragment extends BaseRoomFragment<RoomCabinPresenter, Room
public void onClick(View v) {
RoomPitBean roomPitBean = mBinding.roomMakeWheat2.pitBean;
UserInfo userInfo = new UserInfo();
userInfo.setUser_id(Integer.parseInt(roomPitBean.getUser_id()));
userInfo.setUser_id(Integer.parseInt(roomPitBean.getUser_id()!=null ? roomPitBean.getUser_id() : "0"));
userInfo.setNickname(roomPitBean.getNickname());
userInfo.setAvatar(roomPitBean.getAvatar());
userInfo.setPit_number("");
@@ -258,7 +201,7 @@ public class RoomCabinFragment extends BaseRoomFragment<RoomCabinPresenter, Room
if (roomInfoResp != null && roomInfoResp.getRoom_owner().getUser_id().equals(SpUtil.getUserId()+"")){
mBinding.im3.setVisibility(VISIBLE);
setvkk(false);
// setvkk(false);
}else {
mBinding.im3.setVisibility(GONE);
}
@@ -268,6 +211,84 @@ public class RoomCabinFragment extends BaseRoomFragment<RoomCabinPresenter, Room
// }
}
public void handleMsgType1028(RoomMessageEvent messageEvent){
if (messageEvent.getMsgType()==1028){
mBinding.tvHeartValue2.setText(messageEvent.getText().getHot_value());
}
}
public void upRoomInfo(RoomInfoResp roomInfoResp){
this.roomInfoResp = roomInfoResp;
// if (roomInfoResp != null) {
// roomId = roomInfoResp.getRoom_info().getRoom_id();
// cpUserBean = roomInfoResp.getCp_user();
// label_id = roomInfoResp.getRoom_info().getLabel_id();
// }
// if (roomInfoResp != null && roomInfoResp.getRoom_owner().getUser_id().equals(SpUtil.getUserId()+"")){
// mBinding.im3.setVisibility(VISIBLE);
//// setvkk(false);
// }else {
// mBinding.im3.setVisibility(GONE);
// }
//
// mBinding.ivExit.setOnClickListener(this::onHeartLineClicked);
//
// // 获取当前用户 ID
// String currentUserId = SpUtil.getUserId() + "";
//
//// 定义两个 RoomPitBean 对象,分别用于显示在 roomMakeWheat1 和 roomMakeWheat2
// RoomPitBean selfBean = new RoomPitBean(); // 自己的 bean
// RoomPitBean otherBean = new RoomPitBean(); // 另一个用户的 bean
//
// boolean isSelfFirst = false;
//
//// 判断当前用户是 user_id 还是 user_id1
// if (cpUserBean != null) {
// if (currentUserId.equals(cpUserBean.getUser_id())) {
// // 当前用户是 user_id
// selfBean.setUser_id(cpUserBean.getUser_id());
// selfBean.setUser_code(cpUserBean.getUser_code());
// selfBean.setNickname(cpUserBean.getNickname());
// selfBean.setAvatar(cpUserBean.getAvatar());
// selfBean.setDress(cpUserBean.getDress());
// selfBean.setPit_number("000");
//
// otherBean.setUser_id(cpUserBean.getUser_id1());
// otherBean.setUser_code(cpUserBean.getUser_code1());
// otherBean.setNickname(cpUserBean.getNickname1());
// otherBean.setAvatar(cpUserBean.getAvatar1());
// otherBean.setDress(cpUserBean.getDress1());
// otherBean.setPit_number("000");
//
//
// } else if (currentUserId.equals(cpUserBean.getUser_id1())) {
// // 当前用户是 user_id1则交换位置
// selfBean.setUser_id(cpUserBean.getUser_id1());
// selfBean.setUser_code(cpUserBean.getUser_code1());
// selfBean.setNickname(cpUserBean.getNickname1());
// selfBean.setAvatar(cpUserBean.getAvatar1());
// selfBean.setDress(cpUserBean.getDress1());
// selfBean.setPit_number("000");
//
// otherBean.setUser_id(cpUserBean.getUser_id());
// otherBean.setUser_code(cpUserBean.getUser_code());
// otherBean.setNickname(cpUserBean.getNickname());
// otherBean.setAvatar(cpUserBean.getAvatar());
// otherBean.setDress(cpUserBean.getDress());
// otherBean.setPit_number("000");
// }
// }
//// 不论谁是自己,始终将自己放在 roomMakeWheat1
// mBinding.roomMakeWheat1.setData(selfBean);
//// 将另一个用户的数据放在 roomMakeWheat2
// mBinding.roomMakeWheat2.setData(otherBean);
// mBinding.tvMainTitle.setText(roomInfoResp.getRoom_info().getRoom_name());
// mBinding.tvHeartValue2.setText(roomInfoResp.getRoom_info().getHot_value());
// if (cpUserBean != null) {
// countDownTime(Long.parseLong(cpUserBean.getTime_day()));
// }
// mediaProjectionManager = (MediaProjectionManager) getContext().getSystemService(Context.MEDIA_PROJECTION_SERVICE);
}
public void upCabinFragment(long time){
countDownTime( time);
}
@@ -299,7 +320,6 @@ public class RoomCabinFragment extends BaseRoomFragment<RoomCabinPresenter, Room
}
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void roomInfoEvent(RoomMessageEvent messageEvent) {
if (messageEvent.getMsgType() == 1028) {
mBinding.tvHeartValue2.setText(messageEvent.getText().getHot_value());
@@ -311,6 +331,7 @@ public class RoomCabinFragment extends BaseRoomFragment<RoomCabinPresenter, Room
// EventBus.getDefault().post(new RoomOutEvent());
// ARouter.getInstance().build(ARouteConstants.LIVE_ROOM).withString("form","首页热门列表").withString("roomId", item.getRoom_id()).navigation();
ExitRoomBottomSheet bottomSheet = ExitRoomBottomSheet.newInstance();
bottomSheet.setViewUp(false);
bottomSheet.setOnOptionSelectedListener(new ExitRoomBottomSheet.OnOptionSelectedListener() {
@Override
public void onMinimize() {
@@ -473,6 +494,76 @@ public class RoomCabinFragment extends BaseRoomFragment<RoomCabinPresenter, Room
public void roomInfoUpdate(RoomInfoResp resp) {
roomInfoResp = resp;
// updateWheatData();
if (roomInfoResp != null) {
roomId = roomInfoResp.getRoom_info().getRoom_id();
cpUserBean = roomInfoResp.getCp_user();
label_id = roomInfoResp.getRoom_info().getLabel_id();
}
if (roomInfoResp != null && roomInfoResp.getRoom_owner().getUser_id().equals(SpUtil.getUserId()+"")){
mBinding.im3.setVisibility(VISIBLE);
// setvkk(false);
}else {
mBinding.im3.setVisibility(GONE);
}
mBinding.ivExit.setOnClickListener(this::onHeartLineClicked);
// 获取当前用户 ID
String currentUserId = SpUtil.getUserId() + "";
// 定义两个 RoomPitBean 对象,分别用于显示在 roomMakeWheat1 和 roomMakeWheat2
RoomPitBean selfBean = new RoomPitBean(); // 自己的 bean
RoomPitBean otherBean = new RoomPitBean(); // 另一个用户的 bean
boolean isSelfFirst = false;
// 判断当前用户是 user_id 还是 user_id1
if (cpUserBean != null) {
if (currentUserId.equals(cpUserBean.getUser_id())) {
// 当前用户是 user_id
selfBean.setUser_id(cpUserBean.getUser_id());
selfBean.setUser_code(cpUserBean.getUser_code());
selfBean.setNickname(cpUserBean.getNickname());
selfBean.setAvatar(cpUserBean.getAvatar());
selfBean.setDress(cpUserBean.getDress());
selfBean.setPit_number("000");
otherBean.setUser_id(cpUserBean.getUser_id1());
otherBean.setUser_code(cpUserBean.getUser_code1());
otherBean.setNickname(cpUserBean.getNickname1());
otherBean.setAvatar(cpUserBean.getAvatar1());
otherBean.setDress(cpUserBean.getDress1());
otherBean.setPit_number("000");
} else if (currentUserId.equals(cpUserBean.getUser_id1())) {
// 当前用户是 user_id1则交换位置
selfBean.setUser_id(cpUserBean.getUser_id1());
selfBean.setUser_code(cpUserBean.getUser_code1());
selfBean.setNickname(cpUserBean.getNickname1());
selfBean.setAvatar(cpUserBean.getAvatar1());
selfBean.setDress(cpUserBean.getDress1());
selfBean.setPit_number("000");
otherBean.setUser_id(cpUserBean.getUser_id());
otherBean.setUser_code(cpUserBean.getUser_code());
otherBean.setNickname(cpUserBean.getNickname());
otherBean.setAvatar(cpUserBean.getAvatar());
otherBean.setDress(cpUserBean.getDress());
otherBean.setPit_number("000");
}
}
// 不论谁是自己,始终将自己放在 roomMakeWheat1
mBinding.roomMakeWheat1.setData(selfBean);
// 将另一个用户的数据放在 roomMakeWheat2
mBinding.roomMakeWheat2.setData(otherBean);
mBinding.tvMainTitle.setText(roomInfoResp.getRoom_info().getRoom_name());
mBinding.tvHeartValue2.setText(roomInfoResp.getRoom_info().getHot_value());
if (cpUserBean != null) {
countDownTime(Long.parseLong(cpUserBean.getTime_day()));
}
mediaProjectionManager = (MediaProjectionManager) getContext().getSystemService(Context.MEDIA_PROJECTION_SERVICE);
}
@Override

View File

@@ -276,7 +276,7 @@ public class RoomFragment extends BaseMvpFragment<RoomPresenter, FragmentRoomBin
mRoomInfoResp = resp;
loadSubFragment();
// 更新子Fragment视图
updateChildFragmentViews();
// updateChildFragmentViews();
}
private <T extends Fragment> T findFragmentByTag(Class<T> fragmentClass) {
@@ -317,6 +317,11 @@ public class RoomFragment extends BaseMvpFragment<RoomPresenter, FragmentRoomBin
singSongFragment.roomInfoUpdate(mRoomInfoResp);
}
}
}else if ("6".equals(typeId)){
RoomCabinFragment roomCabinFragment = findFragmentByTag(RoomCabinFragment.class);
if (roomCabinFragment != null && roomCabinFragment.isAdded()) {
roomCabinFragment.roomInfoUpdate(mRoomInfoResp);
}
}
}
});
@@ -386,7 +391,7 @@ public class RoomFragment extends BaseMvpFragment<RoomPresenter, FragmentRoomBin
} else if ("2".equals(typeId)) {
newFragment = RoomAuctionFragment.newInstance();
} else if ("6".equals(typeId)) {
newFragment = RoomCabinFragment.newInstance(mRoomInfoResp);
newFragment = RoomCabinFragment.newInstance();
setviewyc();
} else if ("3".equals(typeId)) {
if ("1".equals(labelId)) {
@@ -407,7 +412,7 @@ public class RoomFragment extends BaseMvpFragment<RoomPresenter, FragmentRoomBin
if (newFragment != null) {
replaceNestedFragment(newFragment, R.id.container);
}
// instView();
setview();
if (mRoomInfoResp.getUser_info().getPit_number() != 0) {
@@ -514,6 +519,50 @@ public class RoomFragment extends BaseMvpFragment<RoomPresenter, FragmentRoomBin
public void upRoomInfo(RoomInfoResp roomInfoResp) {
mRoomInfoResp = roomInfoResp;
updateChildFragmentViewsUp();
}
private void updateChildFragmentViewsUp() {
// 使用弱引用避免内存泄漏
if (getActivity() == null || !isAdded()) {
return;
}
// 使用 post 方法确保在 UI 线程执行
getView().post(() -> {
if (mRoomInfoResp != null && mRoomInfoResp.getRoom_info() != null) {
String typeId = mRoomInfoResp.getRoom_info().getType_id();
String labelId = mRoomInfoResp.getRoom_info().getLabel_id();
if ("7".equals(typeId)) {
FriendshipRoomFragment friendshipRoomFragment = findFragmentByTag(FriendshipRoomFragment.class);
if (friendshipRoomFragment != null && friendshipRoomFragment.isAdded()) {
friendshipRoomFragment.upRoomInfo(mRoomInfoResp);
}
} else if ("2".equals(typeId)) {
RoomAuctionFragment auctionRoomFragment = findFragmentByTag(RoomAuctionFragment.class);
if (auctionRoomFragment != null && auctionRoomFragment.isAdded()) {
auctionRoomFragment.upRoomInfo(mRoomInfoResp);
}
} else if ("1".equals(typeId) || "3".equals(typeId) || "4".equals(typeId)) {
if ("2".equals(labelId)) {
RoomKtvFragment roomKtvFragment = findFragmentByTag(RoomKtvFragment.class);
if (roomKtvFragment != null && roomKtvFragment.isAdded()) {
roomKtvFragment.upRoomInfo(mRoomInfoResp);
}
} else if ("1".equals(labelId)) {
SingSongFragment singSongFragment = findFragmentByTag(SingSongFragment.class);
if (singSongFragment != null && singSongFragment.isAdded()) {
singSongFragment.upRoomInfo(mRoomInfoResp);
}
}
}else if ("6".equals(typeId)){
RoomCabinFragment roomCabinFragment = findFragmentByTag(RoomCabinFragment.class);
if (roomCabinFragment != null && roomCabinFragment.isAdded()) {
roomCabinFragment.upRoomInfo(mRoomInfoResp);
}
}
}
});
}
public void setview() {//这里是当进入电影放房的时候,如果是排麦模式,并且不是电影放的时候,就隐藏排麦视图
@@ -966,6 +1015,15 @@ public class RoomFragment extends BaseMvpFragment<RoomPresenter, FragmentRoomBin
}
}
// TODO: 2025/9/3 小黑屋火热值更新
public void handleMsgType1028(RoomMessageEvent messageEvent){
RoomCabinFragment cabinFragment = (RoomCabinFragment) getChildFragmentManager()
.findFragmentByTag(RoomCabinFragment.class.getSimpleName());
if (cabinFragment != null){
cabinFragment.handleMsgType1028(messageEvent);
}
}
// TODO: 2025/8/30 Ktv模式
public void KtvFragmentEvent(RoomMessageEvent messageEvent) {
RoomKtvFragment ktvFragment = (RoomKtvFragment) getChildFragmentManager()

View File

@@ -80,7 +80,9 @@ public class RoomKtvFragment extends BaseMvpFragment<RoomPresenter, FragmentRoom
super.onAttach(context);
// roomInfoResp = (RoomInfoResp) getArguments().getSerializable("roomInfo");
}
public void upRoomInfo(RoomInfoResp roomInfoResp) {
this.roomInfoResp = roomInfoResp;
}
public void roomInfoUpdate(RoomInfoResp resp) {
roomInfoResp = resp;
upData();

View File

@@ -4,6 +4,7 @@ import static android.view.View.GONE;
import static android.view.View.INVISIBLE;
import static android.view.View.VISIBLE;
import android.annotation.SuppressLint;
import android.app.AlertDialog;
import android.content.Context;
@@ -128,7 +129,9 @@ public class SingSongFragment extends BaseRoomFragment<SingSongPresenter, Fragme
protected void initData() {
upDtaView();
}
public void upRoomInfo(RoomInfoResp roomInfoResp) {
this.roomInfoResp = roomInfoResp;
}
private void upDtaView() {
pitList = new ArrayList<>();
if (getActivity() instanceof RoomActivity) {
@@ -326,6 +329,33 @@ public class SingSongFragment extends BaseRoomFragment<SingSongPresenter, Fragme
return R.layout.fragment_sing_song;
}
// 添加防重复点击的时间戳
private static final long CLICK_INTERVAL = 500; // 500ms内不允许重复点击
private long lastClickTime = 0;
private String lastClickedUserId = ""; // 记录上次点击的用户ID
private String lastClickedPitNumber = ""; // 记录上次点击的麦位号
/**
* 检查是否为快速重复点击
* @param userId 用户ID
* @param pitNumber 麦位号
* @return true表示是快速重复点击false表示不是
*/
private boolean isFastDoubleClick(String userId, String pitNumber) {
long currentTime = System.currentTimeMillis();
if (currentTime - lastClickTime < CLICK_INTERVAL &&
userId.equals(lastClickedUserId) &&
pitNumber.equals(lastClickedPitNumber)) {
return true; // 是快速重复点击
}
// 更新上次点击信息
lastClickTime = currentTime;
lastClickedUserId = userId;
lastClickedPitNumber = pitNumber;
return false; // 不是快速重复点击
}
private void isWhether2() {
mBinding.flexboxLayout.setVisibility(View.VISIBLE);
mBinding.cl.setVisibility(View.GONE);
@@ -339,6 +369,9 @@ public class SingSongFragment extends BaseRoomFragment<SingSongPresenter, Fragme
// 可选:点击事件处理
Log.d("Wheat", "Clicked pit: " + pitNumber1);
if (!pitBean.getUser_id().equals("0") && !pitBean.getUser_id().isEmpty()) {
if (isFastDoubleClick(pitBean.getUser_id(), pitBean.getPit_number())) {
return; // 快速重复点击,直接返回
}
RoomUserInfoFragment.show(roomId, pitBean.getUser_id(), pitBean.getPit_number(), getHostUser(), false, 3, isNumberWhether(), getChildFragmentManager());
// 点击的麦位是当前麦位
// 可以执行相应的操作,如显示提示信息或执行其他逻辑
@@ -351,7 +384,10 @@ public class SingSongFragment extends BaseRoomFragment<SingSongPresenter, Fragme
roomPitBean = pitBean;
showPopupMenu(view); // v 是点击的按钮视图
} else if (pitNumber1 == 10) {
RoomOnlineDialogFragment.show(roomId, pitNumber1 - 1 + "", roomInfoResp.getUser_info(), roomInfoResp, getChildFragmentManager());
if (!isFastDoubleClick("online_dialog", pitNumber1 + "")) {
RoomOnlineDialogFragment.show(roomId, pitNumber1 + "", roomInfoResp.getUser_info(), roomInfoResp, getChildFragmentManager());
}
// RoomOnlineDialogFragment.show(roomId, pitNumber1 - 1 + "", roomInfoResp.getUser_info(), roomInfoResp, getChildFragmentManager());
} else {
MvpPre.applyPit(roomId, pitNumber1 - 1 + "");
}
@@ -739,6 +775,10 @@ public class SingSongFragment extends BaseRoomFragment<SingSongPresenter, Fragme
// 可选:点击事件处理
Log.d("Wheat", "Clicked pit: " + pitNumber1);
if (!pitBean.getUser_id().equals("0") && !pitBean.getUser_id().isEmpty()) {
if (isFastDoubleClick(pitBean.getUser_id(), pitBean.getPit_number())) {
return; // 快速重复点击,直接返回
}
RoomUserInfoFragment.show(roomId, pitBean.getUser_id(), pitBean.getPit_number(), getHostUser(), false, 3, isNumberWhether(), getChildFragmentManager());
// 点击的麦位是当前麦位
// 可以执行相应的操作,如显示提示信息或执行其他逻辑
@@ -751,7 +791,11 @@ public class SingSongFragment extends BaseRoomFragment<SingSongPresenter, Fragme
roomPitBean = pitBean;
showPopupMenu(view); // v 是点击的按钮视图
} else if (pitNumber1 == 10) {
RoomOnlineDialogFragment.show(roomId, pitNumber1 + "", roomInfoResp.getUser_info(), roomInfoResp, getChildFragmentManager());
// 添加防重复点击检查
if (!isFastDoubleClick("online_dialog", pitNumber1 + "")) {
RoomOnlineDialogFragment.show(roomId, pitNumber1 + "", roomInfoResp.getUser_info(), roomInfoResp, getChildFragmentManager());
}
// RoomOnlineDialogFragment.show(roomId, pitNumber1 + "", roomInfoResp.getUser_info(), roomInfoResp, getChildFragmentManager());
} else {
MvpPre.applyPit(roomId, pitNumber1 + "");
}
@@ -765,6 +809,9 @@ public class SingSongFragment extends BaseRoomFragment<SingSongPresenter, Fragme
// 可选:点击事件处理
Log.d("Wheat", "Clicked pit: " + pitNumber);
if (!pitBean.getUser_id().equals("0") && !pitBean.getUser_id().isEmpty()) {
if (isFastDoubleClick(pitBean.getUser_id(), pitBean.getPit_number())) {
return; // 快速重复点击,直接返回
}
RoomUserInfoFragment.show(roomInfoRespPk.getRoom_info().getRoom_id(), pitBean.getUser_id(), pitNumber + "", getHostUser(), true, 3, isNumberWhether(), getChildFragmentManager());
// 点击的麦位是当前麦位
// 可以执行相应的操作,如显示提示信息或执行其他逻辑
@@ -799,6 +846,9 @@ public class SingSongFragment extends BaseRoomFragment<SingSongPresenter, Fragme
// 可选:点击事件处理
Log.d("Wheat", "Clicked pit: " + pitNumber1);
if (!pitBean.getUser_id().equals("0") && !pitBean.getUser_id().isEmpty()) {
if (isFastDoubleClick(pitBean.getUser_id(), pitBean.getPit_number())) {
return; // 快速重复点击,直接返回
}
RoomUserInfoFragment.show(roomId, pitBean.getUser_id(), pitBean.getPit_number(), getHostUser(), false, 3, isNumberWhether(), getChildFragmentManager());
// 点击的麦位是当前麦位
// 可以执行相应的操作,如显示提示信息或执行其他逻辑
@@ -811,7 +861,11 @@ public class SingSongFragment extends BaseRoomFragment<SingSongPresenter, Fragme
roomPitBean = pitBean;
showPopupMenu(view); // v 是点击的按钮视图
} else if (pitNumber1 == 10) {
RoomOnlineDialogFragment.show(roomId, pitNumber1 + "", roomInfoResp.getUser_info(), roomInfoResp, getChildFragmentManager());
// 添加防重复点击检查
if (!isFastDoubleClick("online_dialog", pitNumber1 + "")) {
RoomOnlineDialogFragment.show(roomId, pitNumber1 + "", roomInfoResp.getUser_info(), roomInfoResp, getChildFragmentManager());
}
// RoomOnlineDialogFragment.show(roomId, pitNumber1 + "", roomInfoResp.getUser_info(), roomInfoResp, getChildFragmentManager());
} else {
MvpPre.applyPit(roomId, pitNumber1 + "");
}
@@ -825,6 +879,9 @@ public class SingSongFragment extends BaseRoomFragment<SingSongPresenter, Fragme
// 可选:点击事件处理
Log.d("Wheat", "Clicked pit: " + pitNumber);
if (!pitBean.getUser_id().equals("0") && !pitBean.getUser_id().isEmpty()) {
if (isFastDoubleClick(pitBean.getUser_id(), pitBean.getPit_number())){
return;
}
RoomUserInfoFragment.show(roomInfoRespPk.getRoom_info().getRoom_id(), pitBean.getUser_id(), pitNumber + "", getHostUser(), true, 3, isNumberWhether(), getChildFragmentManager());
// 点击的麦位是当前麦位
// 可以执行相应的操作,如显示提示信息或执行其他逻辑

View File

@@ -70,7 +70,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.7" />
app:layout_constraintGuide_percent="0.6" />
<FrameLayout
android:id="@+id/vp_room_pager"

View File

@@ -498,7 +498,6 @@
android:layout="@layout/top_overlay_buttons"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:layout_marginTop="-30dp"
android:visibility="gone"/>

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="@dimen/dp_172"
android:layout_height="@dimen/dp_90"
android:layout_height="wrap_content"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"

View File

@@ -196,7 +196,8 @@
android:layout_alignTop="@id/btn_notice"
android:layout_marginStart="@dimen/dp_12"
android:background="@drawable/bg_r73_33fffff"
android:layout_toEndOf="@id/btn_notice">
android:layout_toEndOf="@id/btn_notice"
android:visibility="gone">
<ImageView
android:id="@+id/im_qc"