1:修改点唱房的bug

2:添加公会消息类型
This commit is contained in:
2025-11-22 16:06:32 +08:00
parent 18b1235a80
commit 5eac6d302c
18 changed files with 414 additions and 93 deletions

View File

@@ -1032,7 +1032,7 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
fun getRoomInfoResp(): List<RoomPitBean>? {
val roomPitBeans = mRoomInfoResp?.room_info?.pit_list.orEmpty().filter {
it.user_id != null && it.user_id != "0" && it.user_id.isNotEmpty()&& it.user_id.toInt() != SpUtil.getUserId()
it.user_id != null && it.user_id != "0" && it.user_id.isNotEmpty()&& it.user_id.toInt() != SpUtil.getUserId() && it.pit_number.toInt()<9
}
return roomPitBeans.ifEmpty { null }
}
@@ -3692,7 +3692,7 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
return result
}
// TODO: 根据返回的在线列表获取对应的值,查看是否有在线用户
override fun getRoomOnline(onlineBean: RoomOnline?) {
if (onlineBean != null) {
val onlineBeans: MutableList<RoomOnlineBean> = ArrayList()
@@ -3818,7 +3818,12 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
}
RoomType.JUKEBOX -> {
changeBackgroundColor(mRoomInfoResp!!.room_info.room_background)
if (mRoomInfoResp!!.room_info.room_background == null || mRoomInfoResp!!.room_info.room_background == "") {
changeBackground(com.xscm.moduleutil.R.mipmap.jukebox_bj)
} else {
changeBackgroundColor(mRoomInfoResp!!.room_info.room_background)
}
// changeBackgroundColor(mRoomInfoResp!!.room_info.room_background)
setvisibTop(true)
QXRoomSeatViewType.JUKEBOX
}

View File

@@ -4,9 +4,12 @@ import static android.view.View.GONE;
import static android.view.View.VISIBLE;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CompoundButton;
import android.widget.PopupWindow;
import android.widget.Switch;
@@ -93,6 +96,7 @@ public class RoomJukeboxFragment extends BaseMvpFragment<JukeboxPresenter, Fragm
@Override
protected void initView() {
initPopupWindow();
mBinding.guestContainer.setVisibility(GONE);
adapter = new RoomJukeboxAdapter(R.layout.item_jukebox);
GridLayoutManager layoutManager = new GridLayoutManager(getContext(), 4);
@@ -227,6 +231,34 @@ public class RoomJukeboxFragment extends BaseMvpFragment<JukeboxPresenter, Fragm
return false; // 不是快速重复点击
}
private void initPopupWindow() {
// 加载弹出视图布局
View popupView = LayoutInflater.from(getContext()).inflate(R.layout.popup_menu, null, false);
// 创建 PopupWindow
DisplayMetrics displayMetrics = getResources().getDisplayMetrics();
// 设置固定宽高(单位是像素)
int screenWidth = displayMetrics.widthPixels;
int screenHeight = displayMetrics.heightPixels;
int popupWidth = (int) (screenWidth * 0.25); // 屏幕宽度的 60%
int popupHeight = (int) (screenHeight * 0.13); // 屏幕高度的 40%
popupWindow = new PopupWindow(popupView, popupWidth, popupHeight, true);
// 必须设置背景,否则布局会压缩
popupWindow.setBackgroundDrawable(getResources().getDrawable(com.xscm.moduleutil.R.drawable.bg_r16_fff));
// 设置动画效果(可选)
popupWindow.setAnimationStyle(com.xscm.moduleutil.R.style.PopupAnimation);
// 设置点击外部区域时自动关闭
popupWindow.setOutsideTouchable(true);
popupWindow.setFocusable(true);
// 设置弹出视图中的点击事件
setPopupMenuClickListener(popupView, null);
}
private void showPopupMenu(View anchorView) {
if (popupWindow != null && !popupWindow.isShowing()) {
// 获取锚点视图的坐标
@@ -359,11 +391,13 @@ public class RoomJukeboxFragment extends BaseMvpFragment<JukeboxPresenter, Fragm
mBinding.tvPerformerName.setVisibility(GONE);
mBinding.tvNetName.setVisibility(VISIBLE);
mBinding.ciNetAva.setVisibility(VISIBLE);
setUserAvaSize(63);
ImageUtils.loadHead(roomInfoResp.getSinger_info().getSong_info().getSinger_avatar(), mBinding.ciUserAva);
// ImageUtils.loadHead(roomInfoResp.getSinger_info().getSong_info().getSinger_avatar(), mBinding.ciUserAva);
mBinding.tvSong.setText("演唱歌曲:" + roomInfoResp.getSinger_info().getSong_info().getSong_name());
ImageUtils.loadHead(roomInfoResp.getSinger_info().getSong_info().getBoss_avatar(), mBinding.ciNetAva);
mBinding.tvNetName.setText("老板");
songId = roomInfoResp.getSinger_info().getSong_info().getSinger_song_id();
songId = roomInfoResp.getSinger_info().getSong_info().getId();
if (roomInfoResp.getSinger_info().getNext_song_info() != null) {
mBinding.guestContainer.setVisibility(View.VISIBLE);
@@ -374,6 +408,9 @@ public class RoomJukeboxFragment extends BaseMvpFragment<JukeboxPresenter, Fragm
}
String userId = String.valueOf(roomInfoResp.getSinger_info().getSong_info().getSinger_user_id());
if (userId.equals(SpUtil.getUserId()+"")){
upMike(true);
}
if (mBinding.wvZc.getUserId().equals(userId)) {
mBinding.wvZc.pitBean.setImageType(true);
mBinding.wvZc.setData(mBinding.wvZc.pitBean);
@@ -388,11 +425,19 @@ public class RoomJukeboxFragment extends BaseMvpFragment<JukeboxPresenter, Fragm
adapter.notifyDataSetChanged();
}
} else {
setUserAvaSize(32);
mBinding.ciUserAva.setImageResource(R.mipmap.microphone);
mBinding.tvPerformerName.setVisibility(VISIBLE);
mBinding.tvNetName.setVisibility(GONE);
mBinding.ciNetAva.setVisibility(GONE);
mBinding.tvSong.setText("演唱歌曲:无");
mBinding.imQg.setVisibility(GONE);
}
}
if (mBinding.wvZc.getUserId()!=null && !mBinding.wvZc.getUserId().equals("0") && !mBinding.wvZc.getUserId().equals("") && mBinding.wvZc.getUserId().equals(SpUtil.getUserId()+"")) {
mBinding.imQg.setVisibility(VISIBLE);
}
}
@Override
@@ -614,6 +659,8 @@ public class RoomJukeboxFragment extends BaseMvpFragment<JukeboxPresenter, Fragm
ImageUtils.loadHead(messageEvent.getText().getNext_song_info().getSinger_avatar(), mBinding.ciGsAva);
mBinding.tvGsName.setText(messageEvent.getText().getNext_song_info().getSinger_nickname());
roomInfoResp.getSinger_info().setNext_song_info(messageEvent.getText().getNext_song_info());
}else {
mBinding.guestContainer.setVisibility(View.GONE);
}
}
@@ -624,14 +671,21 @@ public class RoomJukeboxFragment extends BaseMvpFragment<JukeboxPresenter, Fragm
mBinding.tvPerformerName.setVisibility(GONE);
mBinding.tvNetName.setVisibility(VISIBLE);
mBinding.ciNetAva.setVisibility(VISIBLE);
setUserAvaSize(63);
ImageUtils.loadHead(messageEvent.getText().getSong_info().getSinger_avatar(), mBinding.ciUserAva);
mBinding.tvSong.setText("演唱歌曲:" + messageEvent.getText().getSong_info().getSong_name());
roomInfoResp.getSinger_info().setSong_info(messageEvent.getText().getSong_info());
ImageUtils.loadHead(messageEvent.getText().getSong_info().getBoss_avatar(), mBinding.ciNetAva);
mBinding.tvNetName.setText("老板");
songId = messageEvent.getText().getSong_info().getSinger_song_id();
songId = messageEvent.getText().getSong_info().getId();
String userId = String.valueOf(messageEvent.getText().getSong_info().getSinger_user_id());
if (userId.equals(SpUtil.getUserId()+"")){
upMike(true);
}
if (mBinding.wvZc.getUserId().equals(userId)) {
mBinding.wvZc.pitBean.setImageType(true);
mBinding.wvZc.setData(mBinding.wvZc.pitBean);
@@ -645,6 +699,31 @@ public class RoomJukeboxFragment extends BaseMvpFragment<JukeboxPresenter, Fragm
}
adapter.notifyDataSetChanged();
}
}else {
setUserAvaSize(32);
mBinding.ciUserAva.setImageResource(R.mipmap.microphone);
mBinding.tvPerformerName.setVisibility(VISIBLE);
mBinding.tvNetName.setVisibility(GONE);
mBinding.ciNetAva.setVisibility(GONE);
mBinding.tvSong.setText("演唱歌曲:无");
}
}
// TODO: 2025/11/22 当有演唱者的时候,修改演唱者头像的大小
private void setUserAvaSize(int size) {
// 设置控件大小为50dp x 50dp
int sizeInPx = (int) (size * getResources().getDisplayMetrics().density + 0.5f);
ViewGroup.LayoutParams layoutParams = mBinding.ciUserAva.getLayoutParams();
layoutParams.width = sizeInPx;
layoutParams.height = sizeInPx;
mBinding.ciUserAva.setLayoutParams(layoutParams);
}
// TODO: 2025/11/22 当在演唱位的时候,显示麦克风,当上麦的时候,也展示麦克风,
private void upMike(boolean isBool){
if (getActivity() != null) {
// 假设Activity有获取麦位数据的方法
((RoomActivity) getActivity()).setrlMic(isBool);
}
}
}

View File

@@ -91,8 +91,10 @@ public class SongRequestFragment extends BaseMvpFragment<RequestSongPresenter, F
// 初始化麦位RecyclerView
wheatPositionAdapter = new WheatPositionAdapter(new ArrayList<>());
wheatPositionAdapter.setOnItemSelectedListener(position -> {
selectedWheatPosition = Integer.parseInt(position.getUser_id());
updateSongList(selectedWheatPosition);
if (position != null && position.getUser_id() != null && !position.getUser_id().isEmpty()) {
selectedWheatPosition = Integer.parseInt(position.getUser_id());
updateSongList(selectedWheatPosition);
}
});
mBinding.rvWheatPositions.setLayoutManager(new LinearLayoutManager(getContext(), LinearLayoutManager.HORIZONTAL, false));