pk房完成,剩余禁止对方麦未完成
拍卖房完成 点歌房完成,音乐播放需要测试
This commit is contained in:
@@ -46,9 +46,12 @@ dependencies {
|
||||
androidTestImplementation libs.espresso.core
|
||||
|
||||
implementation project(':moduleUtil')
|
||||
implementation project(':moduletablayout')
|
||||
|
||||
implementation 'com.alibaba:arouter-api:1.5.2'
|
||||
//annotationProcessor
|
||||
annotationProcessor 'com.alibaba:arouter-compiler:1.5.2'
|
||||
|
||||
implementation 'com.github.JessYanCoding:AndroidAutoSize:v1.2.1'
|
||||
}
|
||||
apply plugin: 'com.alibaba.arouter' // ⚠️ 添加这一行
|
||||
@@ -3,13 +3,20 @@
|
||||
package="com.example.moduleroom">
|
||||
|
||||
<application>
|
||||
|
||||
<meta-data
|
||||
android:name="design_width_in_dp"
|
||||
android:value="375" />
|
||||
|
||||
<meta-data
|
||||
android:name="design_height_in_dp"
|
||||
android:value="812" />
|
||||
|
||||
<activity
|
||||
android:name=".activity.RoomActivity"
|
||||
android:exported="false"
|
||||
android:launchMode="singleInstance"
|
||||
android:screenOrientation="portrait"
|
||||
android:theme="@style/BaseAppTheme"
|
||||
android:windowSoftInputMode="adjustPan" />
|
||||
android:windowSoftInputMode="adjustPan"/>
|
||||
</application>
|
||||
|
||||
</manifest>
|
||||
@@ -1,47 +1,364 @@
|
||||
package com.example.moduleroom.activity;
|
||||
|
||||
import static android.view.View.GONE;
|
||||
import static android.view.View.VISIBLE;
|
||||
|
||||
import android.Manifest;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
|
||||
import androidx.activity.EdgeToEdge;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import androidx.core.graphics.Insets;
|
||||
import androidx.core.view.ViewCompat;
|
||||
import androidx.core.view.WindowInsetsCompat;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
|
||||
import com.alibaba.android.arouter.facade.annotation.Autowired;
|
||||
import com.alibaba.android.arouter.facade.annotation.Route;
|
||||
import com.alibaba.android.arouter.launcher.ARouter;
|
||||
import com.blankj.utilcode.util.GsonUtils;
|
||||
import com.blankj.utilcode.util.ToastUtils;
|
||||
import com.chad.library.adapter.base.BaseQuickAdapter;
|
||||
import com.example.moduleroom.R;
|
||||
import com.example.moduleroom.contacts.RoomContacts;
|
||||
import com.example.moduleroom.databinding.ActivityRoomBinding;
|
||||
import com.example.moduleroom.dialog.ExitRoomBottomSheet;
|
||||
import com.example.moduleroom.dialog.RequestDialogFragment;
|
||||
import com.example.moduleroom.dialog.RoomOnlineDialogFragment;
|
||||
import com.example.moduleroom.fragment.RoomChartsFragment;
|
||||
import com.example.moduleroom.fragment.RoomNoticeDialogFragment;
|
||||
import com.petterp.floatingx.assist.helper.FxScopeHelper;
|
||||
import com.petterp.floatingx.listener.control.IFxControl;
|
||||
import com.qxcm.moduleutil.base.CommonAppContext;
|
||||
import com.qxcm.moduleutil.bean.UserInfo;
|
||||
import com.qxcm.moduleutil.bean.room.RoomOnline;
|
||||
import com.qxcm.moduleutil.databinding.RoomDialogMusicWindowOpenBinding;
|
||||
import com.qxcm.moduleutil.event.EffectEvent;
|
||||
import com.qxcm.moduleutil.event.MusicEvent;
|
||||
import com.qxcm.moduleutil.event.RoomOutEvent;
|
||||
import com.qxcm.moduleutil.event.RoomWheatEvent;
|
||||
import com.qxcm.moduleutil.interfaces.OnMusicItemClickListener;
|
||||
import com.qxcm.moduleutil.listener.MessageListenerSingleton;
|
||||
import com.qxcm.moduleutil.adapter.LikeUserAdapter;
|
||||
import com.qxcm.moduleutil.bean.RoomCharmRankBean;
|
||||
import com.qxcm.moduleutil.bean.RoomMessageEvent;
|
||||
import com.qxcm.moduleutil.bean.RoomSettingEvent;
|
||||
import com.qxcm.moduleutil.bean.room.RoomOnlineBean;
|
||||
import com.example.moduleroom.fragment.RoomFragment;
|
||||
import com.example.moduleroom.fragment.RoomPasswordSetDialogFragment;
|
||||
import com.example.moduleroom.presenter.RoomPresenter;
|
||||
import com.qxcm.moduleutil.activity.BaseMvpActivity;
|
||||
import com.qxcm.moduleutil.activity.IPresenter;
|
||||
import com.qxcm.moduleutil.adapter.CommonPageAdapter;
|
||||
import com.qxcm.moduleutil.bean.room.RoomBean;
|
||||
import com.qxcm.moduleutil.bean.room.RoomInfoResp;
|
||||
import com.qxcm.moduleutil.bean.room.RoomOwnerBean;
|
||||
import com.qxcm.moduleutil.bean.room.RoomPitBean;
|
||||
import com.qxcm.moduleutil.bean.room.RoomUserBean;
|
||||
import com.qxcm.moduleutil.dialog.ConfirmDialog;
|
||||
import com.qxcm.moduleutil.event.RoomJoinMountModel;
|
||||
import com.qxcm.moduleutil.rtc.AgoraManager;
|
||||
import com.qxcm.moduleutil.rtc.MusicPlayBean;
|
||||
import com.qxcm.moduleutil.rtc.RtcCore;
|
||||
import com.qxcm.moduleutil.utils.ARouteConstants;
|
||||
import com.qxcm.moduleutil.utils.ImageUtils;
|
||||
import com.qxcm.moduleutil.utils.SpUtil;
|
||||
import com.qxcm.moduleutil.widget.CustomMusicFloatingView;
|
||||
import com.qxcm.moduleutil.widget.MusicView;
|
||||
import com.qxcm.moduleutil.widget.ViewUtils;
|
||||
import com.tencent.imsdk.v2.V2TIMCallback;
|
||||
import com.tencent.imsdk.v2.V2TIMManager;
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
import org.greenrobot.eventbus.Subscribe;
|
||||
import org.greenrobot.eventbus.ThreadMode;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import io.agora.musiccontentcenter.Music;
|
||||
import pub.devrel.easypermissions.AppSettingsDialog;
|
||||
import pub.devrel.easypermissions.EasyPermissions;
|
||||
|
||||
@Route(path = ARouteConstants.ROOM_DETAILS)
|
||||
public class RoomActivity extends BaseMvpActivity<RoomPresenter, ActivityRoomBinding> implements RoomContacts.View {
|
||||
public class RoomActivity extends BaseMvpActivity<RoomPresenter, ActivityRoomBinding> implements RoomContacts.View,
|
||||
EasyPermissions.PermissionCallbacks {
|
||||
|
||||
private RoomFragment roomFragment;
|
||||
CommonPageAdapter commonPageAdapter;
|
||||
private RoomBean mRoomBean;
|
||||
//房主信息
|
||||
private RoomOwnerBean mRoomOwnerBean;
|
||||
//房间用户信息
|
||||
private RoomUserBean mRoomUserBean;
|
||||
private List<RoomPitBean> mPitList = new ArrayList<>();
|
||||
@Autowired
|
||||
public String password;
|
||||
@Autowired
|
||||
public String roomId;
|
||||
public static boolean sDestroied = false;
|
||||
LikeUserAdapter<RoomOnlineBean> likeUserAdapter;
|
||||
String[] permissions = {Manifest.permission.RECORD_AUDIO};
|
||||
private RoomInfoResp mRoomInfoResp;
|
||||
private boolean isSave = false;//活动是否将被系统回收
|
||||
|
||||
private IFxControl musicWindowControl;
|
||||
private CustomMusicFloatingView customMusicFloatingView;
|
||||
private int number = 0;
|
||||
|
||||
@Override
|
||||
protected void onNewIntent(Intent intent) {
|
||||
password = intent.getStringExtra("password");
|
||||
String mRoomId = intent.getStringExtra("roomId");
|
||||
|
||||
if (roomId.equals(mRoomId) || TextUtils.isEmpty(mRoomId)) {
|
||||
super.onNewIntent(intent);
|
||||
sDestroied = false;
|
||||
// MvpPre.getRoomIn(roomId, password);
|
||||
// MvpPre.getRoomOnline(roomId, "1", "10");
|
||||
} else {
|
||||
releaseRoom();
|
||||
startActivity(intent);
|
||||
finish();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 释放当前房间
|
||||
*/
|
||||
private void releaseRoom() {
|
||||
AgoraManager.getInstance(this).destroy();
|
||||
// RtcManager.getInstance().leaveChannel(roomId);
|
||||
// RtcManager.getInstance().setAudioUrl(null);
|
||||
// EMqttService.cleanSubscribeRoom(roomId);
|
||||
CommonAppContext.getInstance().isPlaying = false;
|
||||
CommonAppContext.getInstance().isShow = false;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onCreate(@Nullable Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
isSave = false;
|
||||
sDestroied = false;
|
||||
|
||||
// // 进入房间10s后检查是否显示提示上麦对话框
|
||||
// new Handler(getMainLooper()).postDelayed(
|
||||
// () -> EventBus.getDefault().post(new ShowOnWheatDialogEvent()),
|
||||
// 10000);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected void initData() {
|
||||
if (!EasyPermissions.hasPermissions(this, permissions)) {
|
||||
EasyPermissions.requestPermissions(this, "请开启录音使用权限",
|
||||
1, permissions);
|
||||
}
|
||||
|
||||
mBinding.roomTop.btnFollow.setOnClickListener(this::onClick);
|
||||
mBinding.roomTop.btnNotice.setOnClickListener(this::onClick);
|
||||
mBinding.roomTop.btnRanking.setOnClickListener(this::onClick);
|
||||
mBinding.roomTop.btnCloseLive.setOnClickListener(this::onClick);
|
||||
mBinding.roomTop.tvNum.setOnClickListener(this::onClick);
|
||||
|
||||
mBinding.roomTop.userRecyclerView.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false));
|
||||
likeUserAdapter = new LikeUserAdapter<>();
|
||||
mBinding.roomTop.userRecyclerView.setAdapter(likeUserAdapter);
|
||||
likeUserAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
|
||||
@Override
|
||||
public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
|
||||
RoomOnlineDialogFragment.show(roomId, "", getSupportFragmentManager());
|
||||
}
|
||||
});
|
||||
// onChatRoomViewCreation();
|
||||
MessageListenerSingleton.getInstance().joinGroup(roomId);
|
||||
SpUtil.saveMyRoomId(roomId);
|
||||
MvpPre.getRoomIn(roomId, password);
|
||||
MvpPre.getRoomOnline(roomId, "1", "10");
|
||||
|
||||
// customMusicFloatingView.initView();
|
||||
// 使用 OnViewAttachListener 确保 View 已创建
|
||||
// 设置监听器,等待 View 创建完成
|
||||
// setMusicListener();
|
||||
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
public void roomInfoEvent(RoomMessageEvent messageEvent) {
|
||||
if (messageEvent.getMsgType() == 1005) {
|
||||
mBinding.svgaGift.setSource(messageEvent.getText().getGiftInfo().getPlay_image(), 2);
|
||||
} else if (messageEvent.getMsgType() == 123) {
|
||||
EventBus.getDefault().post(new RoomSettingEvent());
|
||||
} else if (messageEvent.getMsgType() == 1014) {
|
||||
RoomSettingEvent roomSettingEvent = new RoomSettingEvent();
|
||||
roomSettingEvent.setRoomId(messageEvent.getRoomId());
|
||||
roomSettingEvent.setRoom_up_pit_type(messageEvent.getText().getRoom_up_pit_type());
|
||||
roomSettingEvent.setType(messageEvent.getMsgType());
|
||||
mRoomBean.setRoom_up_pit_type(messageEvent.getText().getRoom_up_pit_type() + "");
|
||||
EventBus.getDefault().post(mRoomBean);
|
||||
EventBus.getDefault().post(roomSettingEvent);
|
||||
} else if (messageEvent.getMsgType() == 1013) {
|
||||
int userid = messageEvent.getText().getFromUserInfo().getUser_id();
|
||||
int userId2 = SpUtil.getUserId();
|
||||
|
||||
if (messageEvent.getText().getAction() == 1 && mRoomUserBean.getUser_id().equals(userId2 + "") && mRoomUserBean.getPit_number() == 9) {
|
||||
queren(messageEvent.getText().getFromUserInfo().getNickname());
|
||||
} else if (messageEvent.getText().getAction() == 4 && userid == userId2) {
|
||||
queren1(messageEvent.getText().getFromUserInfo().getNickname());
|
||||
} else if (messageEvent.getText().getAction() == 2) {
|
||||
|
||||
} else if (messageEvent.getText().getAction() == 3 && SpUtil.getUserId() == messageEvent.getText().getFromUserInfo().getUser_id()) {
|
||||
|
||||
}
|
||||
} else if (messageEvent.getMsgType() == 1012) {
|
||||
if (customMusicFloatingView != null) {
|
||||
customMusicFloatingView.destroy();
|
||||
}
|
||||
AgoraManager.getInstance(RoomActivity.this).desMusic();
|
||||
MvpPre.postRoomInfo(roomId);
|
||||
} else if (messageEvent.getMsgType() == 124) {
|
||||
RoomMessageEvent.text text = GsonUtils.fromJson(messageEvent.getText().getText(), RoomMessageEvent.text.class);
|
||||
MusicPlayBean musicPlayBean = new MusicPlayBean();
|
||||
musicPlayBean.setPosition(text.getPosition());
|
||||
EventBus.getDefault().post(musicPlayBean);
|
||||
} else if (messageEvent.getMsgType() == 1003) {//上麦操作
|
||||
//
|
||||
// RoomWheatEvent roomWheatEvent = new RoomWheatEvent();
|
||||
// roomWheatEvent.setRoomId(roomId);
|
||||
// roomWheatEvent.setOccupied(true);
|
||||
// EventBus.getDefault().post(roomWheatEvent);
|
||||
} else if (messageEvent.getMsgType() == 1004) {//下麦操作
|
||||
// RoomWheatEvent roomWheatEvent = new RoomWheatEvent();
|
||||
// roomWheatEvent.setRoomId(roomId);
|
||||
// roomWheatEvent.setOccupied(false);
|
||||
// EventBus.getDefault().post(roomWheatEvent);
|
||||
} else if (messageEvent.getMsgType() == 1020) {
|
||||
mRoomBean = messageEvent.getText().getRoomInfo();
|
||||
EventBus.getDefault().post(mRoomBean);
|
||||
changeBackgroundColor(mRoomBean.getRoom_background());
|
||||
} else if (messageEvent.getMsgType() == 1011) {
|
||||
if (messageEvent.getText().getFromUserInfo() != null) {
|
||||
if (messageEvent.getText().getFromUserInfo().getUser_id() == SpUtil.getUserId()) {
|
||||
MvpPre.quitRoom(roomId, SpUtil.getUserId() + "");
|
||||
}
|
||||
}
|
||||
} else if (messageEvent.getMsgType() == 1001) {
|
||||
number++;
|
||||
mBinding.roomTop.tvNum.setText(number + "");
|
||||
} else if (messageEvent.getMsgType() == 1002) {
|
||||
number--;
|
||||
mBinding.roomTop.tvNum.setText(number + "");
|
||||
}else if (messageEvent.getMsgType() == 1029){
|
||||
if (mRoomInfoResp.getUser_info().getPit_number()==9 && mRoomInfoResp.getUser_info().getUser_id().equals(SpUtil.getUserId() + "")){
|
||||
querenPk(messageEvent.getText().getText(), messageEvent.getText().getPkId());
|
||||
}
|
||||
}
|
||||
}
|
||||
private void querenPk(String text,String pk_id) {
|
||||
// 创建并显示确认对话框
|
||||
new ConfirmDialog(this,
|
||||
"温馨提示",
|
||||
text,
|
||||
"确认",
|
||||
"拒绝",
|
||||
v -> {
|
||||
// 点击“确认”按钮时执行删除操作
|
||||
MvpPre.acceptPk(pk_id, "1");
|
||||
},
|
||||
v -> {
|
||||
MvpPre.acceptPk(pk_id, "2");
|
||||
// 点击“取消”按钮时什么都不做
|
||||
},true,10).show();
|
||||
}
|
||||
/**
|
||||
* 修改背景图
|
||||
*
|
||||
* @param bjId
|
||||
*/
|
||||
|
||||
public void changeBackgroundColor(String bjId) {
|
||||
// 假设你的Activity有一个根布局,例如 ConstraintLayout
|
||||
// ImageUtils.loadHeadCC(bjId, mBinding.ivBg);
|
||||
ImageUtils.loadImageWithCache(this, bjId, mBinding.ivBg);
|
||||
}
|
||||
|
||||
public void changeBackground(int bjId) {
|
||||
mBinding.ivBg.setImageDrawable(getResources().getDrawable(bjId));
|
||||
}
|
||||
|
||||
public void setvisibTop(boolean is) {
|
||||
mBinding.roomTop.getRoot().setVisibility(is ? VISIBLE : GONE);
|
||||
}
|
||||
|
||||
/**
|
||||
* 特效设置
|
||||
*/
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
public void setEffectSwitch(EffectEvent event) {
|
||||
if (event.isEffectOn()) {//特效开启
|
||||
mBinding.svgaGift.setVisibility(View.VISIBLE);
|
||||
} else {
|
||||
mBinding.svgaGift.closeEffect();
|
||||
mBinding.svgaGift.setVisibility(View.GONE);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 坐骑进场特效
|
||||
*
|
||||
* @param roomJoinMountModel
|
||||
*/
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
public void roomJoinMount(RoomJoinMountModel roomJoinMountModel) {
|
||||
if (!roomId.equals(roomJoinMountModel.getRoom_id())) {
|
||||
return;
|
||||
}
|
||||
if (roomJoinMountModel.getShow_type() != 1) {
|
||||
mBinding.svgaZuoji.setSource(roomJoinMountModel.getRide_url(), 2);
|
||||
}
|
||||
}
|
||||
|
||||
private void onClick(View view) {
|
||||
int id = view.getId();
|
||||
if (id == R.id.btn_follow) {
|
||||
MvpPre.userGuanz(mRoomOwnerBean.getUser_id(), "2");
|
||||
} else if (id == R.id.btn_notice) {
|
||||
// RoomTipsView.show(this,view,"公告","公告内容");
|
||||
RoomNoticeDialogFragment roomNoticeDialogFragment = new RoomNoticeDialogFragment(this);
|
||||
roomNoticeDialogFragment.setTitle("公告");
|
||||
roomNoticeDialogFragment.setContent(mRoomBean.getRoom_intro());
|
||||
roomNoticeDialogFragment.show();
|
||||
} else if (id == R.id.btn_ranking) {//排行榜
|
||||
RoomChartsFragment.newInstance(roomId).show(getSupportFragmentManager(), "RoomChartsFragment");
|
||||
} else if (id == R.id.btn_close_live) {
|
||||
|
||||
|
||||
List<Fragment> fragments = new ArrayList<>();
|
||||
roomFragment = RoomFragment.newInstance();
|
||||
// fragments.add(RoomOnlineFragment.newInstance(resp));
|
||||
fragments.add(roomFragment);
|
||||
// fragments.add(RoomRankingFragment.newInstance(roomId));
|
||||
commonPageAdapter = new CommonPageAdapter(getSupportFragmentManager(), fragments);
|
||||
mBinding.vpRoomPager.setAdapter(commonPageAdapter);
|
||||
mBinding.vpRoomPager.setCurrentItem(0);
|
||||
if (commonPageAdapter != null && commonPageAdapter.getCount() < 3) {
|
||||
// commonPageAdapter.addPage(0, RoomOnlineFragment.newInstance(roomId));
|
||||
ExitRoomBottomSheet bottomSheet = ExitRoomBottomSheet.newInstance();
|
||||
bottomSheet.setOnOptionSelectedListener(new ExitRoomBottomSheet.OnOptionSelectedListener() {
|
||||
@Override
|
||||
public void onMinimize() {
|
||||
// 处理最小化逻辑,比如不销毁 Activity,仅移至后台
|
||||
CommonAppContext.getInstance().isShow = false;
|
||||
// ARouter.getInstance().build(ARouteConstants.ME).navigation();//栈顶复用
|
||||
moveTaskToBack(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onExitRoom() {
|
||||
// 调用退出房间方法
|
||||
MvpPre.quitRoom(roomId, SpUtil.getUserId() + "");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCancel() {
|
||||
// 用户点击取消,不做任何事
|
||||
}
|
||||
});
|
||||
bottomSheet.show(getSupportFragmentManager(), "ExitRoomBottomSheet");
|
||||
} else if (id == R.id.tv_num) {
|
||||
RoomOnlineDialogFragment.show(roomId, "", getSupportFragmentManager());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -50,9 +367,447 @@ public class RoomActivity extends BaseMvpActivity<RoomPresenter, ActivityRoomBin
|
||||
return R.layout.activity_room;
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
public void roomOut(RoomOutEvent roomOutEvent) {
|
||||
MvpPre.quitRoom(roomId, SpUtil.getUserId() + "");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected RoomPresenter bindPresenter() {
|
||||
return new RoomPresenter(this, this);
|
||||
}
|
||||
|
||||
public void upRoomInfo(RoomInfoResp resp) {
|
||||
this.mRoomInfoResp=resp;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void roomInfo(RoomInfoResp resp) {
|
||||
this.mRoomInfoResp = resp;
|
||||
RoomBean roomBean = resp.getRoom_info();
|
||||
this.mRoomBean = roomBean;
|
||||
this.mRoomUserBean = resp.getUser_info();
|
||||
this.mRoomOwnerBean = resp.getRoom_owner();
|
||||
this.mPitList = mRoomBean.getPit_list();
|
||||
|
||||
ImageUtils.loadHeadCC(resp.getRoom_info().getRoom_cover(), mBinding.roomTop.avatar);
|
||||
mBinding.roomTop.name.setText(roomBean.getRoom_name());
|
||||
mBinding.roomTop.idVal.setText("ID:" + roomBean.getRoom_number());
|
||||
if (mRoomUserBean.getIs_room_owner() == 1) {
|
||||
mBinding.roomTop.btnFollow.setVisibility(GONE);
|
||||
} else {
|
||||
mBinding.roomTop.btnFollow.setVisibility(VISIBLE);
|
||||
if (resp.isCollect()) {
|
||||
mBinding.roomTop.btnFollow.setBackground(getResources().getDrawable(com.qxcm.moduleutil.R.mipmap.collected));
|
||||
}
|
||||
}
|
||||
number = roomBean.getOnline_number();
|
||||
mBinding.roomTop.tvNum.setText(number + "");
|
||||
|
||||
if (!isFinishing() && !isDestroyed()) {
|
||||
if (roomFragment == null || !roomFragment.isAdded()) {
|
||||
roomFragment = RoomFragment.newInstance(resp, "");
|
||||
getSupportFragmentManager()
|
||||
.beginTransaction()
|
||||
.replace(R.id.vp_room_pager, roomFragment)
|
||||
.commitAllowingStateLoss();
|
||||
} else {
|
||||
roomFragment.refreshData(resp);
|
||||
}
|
||||
} else {
|
||||
Log.e("Fragment", "Fragment transaction skipped due to state loss.");
|
||||
}
|
||||
|
||||
// 更新引用
|
||||
// roomFragment = newFragment;
|
||||
if (!roomBean.getType_id().equals("6")) {
|
||||
changeBackgroundColor(roomBean.getRoom_background());
|
||||
} else {
|
||||
changeBackground(com.qxcm.moduleutil.R.mipmap.cabin_bj);
|
||||
}
|
||||
|
||||
CommonAppContext.getInstance().isPlaying = true;
|
||||
CommonAppContext.getInstance().playId = roomId;
|
||||
CommonAppContext.getInstance().playName = mRoomBean.getRoom_name();
|
||||
|
||||
CommonAppContext.getInstance().playCover = resp.getRoom_info().getRoom_cover();
|
||||
CommonAppContext.getInstance().showSelf = resp.getIs_show_self() == 1;
|
||||
|
||||
if (mRoomUserBean.getIs_collect() == 1) {
|
||||
mBinding.roomTop.btnFollow.setBackground(getResources().getDrawable(com.qxcm.moduleutil.R.mipmap.yishouc));
|
||||
} else {
|
||||
mBinding.roomTop.btnFollow.setBackground(getResources().getDrawable(com.qxcm.moduleutil.R.mipmap.collect));
|
||||
}
|
||||
if (roomBean.getType_id().equals("1") && roomBean.getLabel_id().equals("2")) {
|
||||
AgoraManager.getInstance(this).setBjMusic(false);
|
||||
|
||||
} else {
|
||||
AgoraManager.getInstance(this).setBjMusic(true);
|
||||
}
|
||||
AgoraManager.getInstance(this).stopMuisc();
|
||||
initializeAudio();
|
||||
}
|
||||
|
||||
/**
|
||||
* @author qx
|
||||
* @data 2025/6/27
|
||||
* @description: 初始化音频,初始的时候,当是在麦上,将用户设置为主持,在麦下,设置为观众, 默认关闭麦克风
|
||||
*/
|
||||
public void initializeAudio() {
|
||||
if (mRoomUserBean.getPit_number() != 0) {
|
||||
AgoraManager.getInstance(this).ClientRole(true);
|
||||
AgoraManager.getInstance(this).muteLocalAudioStream(false);
|
||||
} else {
|
||||
AgoraManager.getInstance(this).ClientRole(false);
|
||||
AgoraManager.getInstance(this).muteLocalAudioStream(true);
|
||||
}
|
||||
AgoraManager.getInstance(this).setLocalAudioEnabled(false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void showPasswordDialog() {
|
||||
RoomPasswordSetDialogFragment roomPasswordSetDialogFragment = RoomPasswordSetDialogFragment.newInstance(true, roomId);
|
||||
roomPasswordSetDialogFragment.show(getSupportFragmentManager());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void enterFail() {
|
||||
releaseRoom();
|
||||
finish();
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
public void logOutEvent(MusicEvent musicEvent) {
|
||||
// mBinding.musicView.setVisibility(VISIBLE);
|
||||
// musicWindowControl.show(); // <<< 添加这行代码
|
||||
xunf();
|
||||
RequestDialogFragment.show(roomId, mRoomInfoResp, getSupportFragmentManager());
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 背景音乐
|
||||
*/
|
||||
|
||||
private void xunf() {
|
||||
musicWindowControl = FxScopeHelper.builder()
|
||||
.setLayout(com.qxcm.moduleutil.R.layout.room_dialog_music_window_open)
|
||||
.build()
|
||||
.toControl(this);
|
||||
// 创建自定义悬浮窗包装类
|
||||
customMusicFloatingView = new CustomMusicFloatingView(this, musicWindowControl);
|
||||
|
||||
customMusicFloatingView.setOnItemClickListener(new OnMusicItemClickListener() {
|
||||
@Override
|
||||
public void onMinimize() {
|
||||
customMusicFloatingView.destroy();
|
||||
AgoraManager.getInstance(RoomActivity.this).desMusic();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onOpenList() {
|
||||
// 打开音乐列表
|
||||
// ToastUtils.showShort("打开音乐列表");
|
||||
RequestDialogFragment.show(roomId, mRoomInfoResp, getSupportFragmentManager());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPause() {
|
||||
// ToastUtils.showShort("暂停播放");
|
||||
// 调用播放器或通知 MusicView
|
||||
AgoraManager.getInstance(RoomActivity.this).pauseMusic();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResume() {
|
||||
// ToastUtils.showShort("恢复播放");
|
||||
// 调用播放器或通知 MusicView
|
||||
AgoraManager.getInstance(RoomActivity.this).resumeMusic();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext() {
|
||||
// ToastUtils.showShort("下一首");
|
||||
// 切换歌曲
|
||||
// List<Music> musicSongBeans = AgoraManager.getInstance(RoomActivity.this).getMusicList();
|
||||
AgoraManager.getInstance(RoomActivity.this).nextSong();
|
||||
}
|
||||
});
|
||||
// customMusicFloatingView.initView();
|
||||
customMusicFloatingView.show();
|
||||
// 等待 View 创建完成后才绑定点击事件
|
||||
ViewUtils.waitUntilViewReady(musicWindowControl, view -> {
|
||||
customMusicFloatingView.initView(); // 这里 fxControl.getView() 不再为 null
|
||||
customMusicFloatingView.updatePlayState(false);
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onResume() {
|
||||
super.onResume();
|
||||
CommonAppContext.getInstance().isShow = true;
|
||||
CommonAppContext.getInstance().isPlaying = true;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void getRoomOnline(RoomOnline onlineBean) {
|
||||
if (onlineBean != null) {
|
||||
if (onlineBean.getOn_pit().size() > 0) {
|
||||
if (onlineBean.getOn_pit().size() > 5) {
|
||||
likeUserAdapter.setNewData(onlineBean.getOn_pit().subList(0, 5));
|
||||
} else {
|
||||
likeUserAdapter.setNewData(onlineBean.getOn_pit());
|
||||
}
|
||||
} else if (onlineBean.getOff_pit().size() > 0) {
|
||||
if (onlineBean.getOff_pit().size() > 5) {
|
||||
likeUserAdapter.setNewData(onlineBean.getOff_pit().subList(0, 5));
|
||||
} else {
|
||||
likeUserAdapter.setNewData(onlineBean.getOff_pit());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void applyPit() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void downPit() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void applySong() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void agreeSong() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBackPressed() {
|
||||
if (getSupportFragmentManager().getBackStackEntryCount() > 0) {
|
||||
getSupportFragmentManager().popBackStack();
|
||||
} else {
|
||||
super.onBackPressed();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void postRoomInfo(RoomInfoResp resp) {
|
||||
RoomBean roomBean = resp.getRoom_info();
|
||||
this.mRoomBean = roomBean;
|
||||
this.mRoomUserBean = resp.getUser_info();
|
||||
this.mRoomOwnerBean = resp.getRoom_owner();
|
||||
this.mPitList = mRoomBean.getPit_list();
|
||||
|
||||
ImageUtils.loadHeadCC(resp.getRoom_info().getRoom_cover(), mBinding.roomTop.avatar);
|
||||
mBinding.roomTop.name.setText(roomBean.getRoom_name());
|
||||
mBinding.roomTop.idVal.setText(roomBean.getRoom_number());
|
||||
if (mRoomUserBean.getIs_room_owner() == 1) {
|
||||
mBinding.roomTop.btnFollow.setVisibility(GONE);
|
||||
} else {
|
||||
mBinding.roomTop.btnFollow.setVisibility(VISIBLE);
|
||||
if (resp.isCollect()) {
|
||||
mBinding.roomTop.btnFollow.setBackground(getResources().getDrawable(com.qxcm.moduleutil.R.mipmap.collected));
|
||||
}
|
||||
}
|
||||
if (!isFinishing() && !isDestroyed()) {
|
||||
if (roomFragment == null || !roomFragment.isAdded()) {
|
||||
roomFragment = RoomFragment.newInstance(resp, "");
|
||||
getSupportFragmentManager()
|
||||
.beginTransaction()
|
||||
.replace(R.id.vp_room_pager, roomFragment)
|
||||
.commitAllowingStateLoss();
|
||||
} else {
|
||||
roomFragment.refreshData(resp);
|
||||
}
|
||||
} else {
|
||||
Log.e("Fragment", "Fragment transaction skipped due to state loss.");
|
||||
}
|
||||
|
||||
if (mRoomUserBean.getIs_collect() == 1) {
|
||||
mBinding.roomTop.btnFollow.setBackground(getResources().getDrawable(com.qxcm.moduleutil.R.mipmap.yishouc));
|
||||
} else {
|
||||
mBinding.roomTop.btnFollow.setBackground(getResources().getDrawable(com.qxcm.moduleutil.R.mipmap.collect));
|
||||
}
|
||||
if (roomBean.getType_id().equals("1") && roomBean.getLabel_id().equals("2")) {
|
||||
AgoraManager.getInstance(this).setBjMusic(false);
|
||||
|
||||
} else {
|
||||
AgoraManager.getInstance(this).setBjMusic(true);
|
||||
}
|
||||
AgoraManager.getInstance(this).stopMuisc();
|
||||
initializeAudio();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void getCharmRank(List<RoomCharmRankBean> list) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void changeSong() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void hostUserPit() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void quitRoom() {
|
||||
CommonAppContext.getInstance().isPlaying = false;
|
||||
CommonAppContext.getInstance().isShow = false;
|
||||
// AgoraManager.getInstance(this).destroy();
|
||||
AgoraManager.getInstance(this).leaveRoom();
|
||||
AgoraManager.getInstance(this).destroy();
|
||||
V2TIMManager.getInstance().quitGroup("room" + roomId, new V2TIMCallback() {
|
||||
@Override
|
||||
public void onSuccess() {
|
||||
// 退出群组成功
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(int code, String desc) {
|
||||
// 退出群组失败
|
||||
}
|
||||
});
|
||||
finish();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void userGuanzSuccess(String s) {
|
||||
if (mRoomUserBean.getIs_collect() == 1) {
|
||||
mRoomUserBean.setIs_collect(0);
|
||||
mBinding.roomTop.btnFollow.setBackground(getResources().getDrawable(com.qxcm.moduleutil.R.mipmap.collect));
|
||||
} else {
|
||||
mRoomUserBean.setIs_collect(1);
|
||||
mBinding.roomTop.btnFollow.setBackground(getResources().getDrawable(com.qxcm.moduleutil.R.mipmap.yishouc));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void acceptPk() {
|
||||
|
||||
}
|
||||
|
||||
private void queren1(String nickname) {
|
||||
// 创建并显示确认对话框
|
||||
new ConfirmDialog(this,
|
||||
"温馨提示",
|
||||
"您申请点歌模式被主持人拒绝",
|
||||
"确认",
|
||||
"取消",
|
||||
v -> {
|
||||
// 点击“确认”按钮时执行删除操作
|
||||
|
||||
},
|
||||
v -> {
|
||||
// 点击“取消”按钮时什么都不做
|
||||
|
||||
},false,0).show();
|
||||
}
|
||||
|
||||
private void queren(String nickname) {
|
||||
// 创建并显示确认对话框
|
||||
new ConfirmDialog(this,
|
||||
"温馨提示",
|
||||
"亲爱的主持,您好!\n\n " + "\t" + nickname + "正在发起点唱申请,进入点唱模式后背景音乐将自动停止播放",
|
||||
"确认",
|
||||
"拒绝",
|
||||
v -> {
|
||||
// 点击“确认”按钮时执行
|
||||
MvpPre.agreeSong(roomId, "1");
|
||||
},
|
||||
v -> {
|
||||
// 点击“取消”按钮时什么都不做
|
||||
MvpPre.agreeSong(roomId, "2");
|
||||
},true,10).show();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected void onDestroy() {
|
||||
|
||||
// 移除 EventBus 注册
|
||||
if (EventBus.getDefault().isRegistered(this)) {
|
||||
EventBus.getDefault().unregister(this);
|
||||
}
|
||||
MessageListenerSingleton.reset(roomId); // 主动清理
|
||||
AgoraManager.getInstance(this).destroy(); // 确保释放 Agora 资源
|
||||
if (customMusicFloatingView != null) {
|
||||
customMusicFloatingView.destroy();
|
||||
}
|
||||
CommonAppContext.getInstance().isPlaying = false;
|
||||
CommonAppContext.getInstance().isShow = false;
|
||||
sDestroied = true;
|
||||
SpUtil.setMusicName("");
|
||||
if (isSave) {
|
||||
finish();
|
||||
}
|
||||
super.onDestroy();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onSaveInstanceState(Bundle outState) {
|
||||
super.onSaveInstanceState(outState);
|
||||
isSave = true;
|
||||
}
|
||||
|
||||
|
||||
private static final String[] AUDIO_PERMISSIONS = {Manifest.permission.RECORD_AUDIO};
|
||||
|
||||
private void requestAudioPermission() {
|
||||
if (!EasyPermissions.hasPermissions(getApplicationContext(), AUDIO_PERMISSIONS)) {
|
||||
EasyPermissions.requestPermissions(
|
||||
this,
|
||||
"需要录音权限以使用语音功能",
|
||||
1001,
|
||||
AUDIO_PERMISSIONS
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
|
||||
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
|
||||
EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPermissionsGranted(int requestCode, @NonNull List<String> perms) {
|
||||
if (perms.contains(Manifest.permission.RECORD_AUDIO)) {
|
||||
Log.d("Permission", "录音权限已授权");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPermissionsDenied(int requestCode, @NonNull List<String> perms) {
|
||||
if (EasyPermissions.somePermissionPermanentlyDenied(this, perms)) {
|
||||
new AppSettingsDialog.Builder(this).build().show();
|
||||
} else {
|
||||
ToastUtils.showShort("需要录音权限才能继续");
|
||||
}
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
public void onMusicEvent(Music event) {
|
||||
if (customMusicFloatingView != null) {
|
||||
customMusicFloatingView.onMusicEvent(event);
|
||||
}
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
public void onMusicPlay(MusicPlayBean musicPlayBean) {
|
||||
if (customMusicFloatingView != null) {
|
||||
customMusicFloatingView.updateProgress(Math.toIntExact(musicPlayBean.getPosition()));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,282 @@
|
||||
package com.example.moduleroom.adapter;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.text.Spannable;
|
||||
import android.text.SpannableStringBuilder;
|
||||
import android.text.style.ForegroundColorSpan;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.constraintlayout.widget.ConstraintLayout;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.chad.library.adapter.base.BaseMultiItemQuickAdapter;
|
||||
import com.chad.library.adapter.base.BaseViewHolder;
|
||||
import com.example.moduleroom.R;
|
||||
import com.qxcm.moduleutil.RoomAutionTimeBean;
|
||||
import com.qxcm.moduleutil.bean.RoomAuctionABean;
|
||||
import com.qxcm.moduleutil.bean.RoomRelationBean;
|
||||
import com.qxcm.moduleutil.bean.RoonGiftModel;
|
||||
import com.qxcm.moduleutil.bean.ViewItem;
|
||||
import com.qxcm.moduleutil.bean.room.EMMessageInfo;
|
||||
import com.qxcm.moduleutil.bean.room.RoomGiveGiftModel;
|
||||
import com.qxcm.moduleutil.utils.ImageUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class CardRelationAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
|
||||
|
||||
private List<ViewItem> viewItems = new ArrayList<>();
|
||||
private int selectedRelationPosition = -1;
|
||||
private int selectedTimePosition = -1;
|
||||
private int selectedGiftPosition = -1;
|
||||
|
||||
public void submitList(List<ViewItem> items) {
|
||||
viewItems.clear();
|
||||
viewItems.addAll(items);
|
||||
notifyDataSetChanged();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getItemViewType(int position) {
|
||||
return viewItems.get(position).getType();
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
|
||||
LayoutInflater inflater = LayoutInflater.from(parent.getContext());
|
||||
|
||||
switch (viewType) {
|
||||
case ViewItem.TYPE_TEXT:
|
||||
return new TextViewHolder(inflater.inflate(R.layout.item_text_view, parent, false));
|
||||
case ViewItem.TYPE_RELATION:
|
||||
return new RelationViewHolder(inflater.inflate(R.layout.item_relation, parent, false));
|
||||
case ViewItem.TYPE_IMAGE_SELECTION:
|
||||
return new RelationViewTimHolder(inflater.inflate(R.layout.item_relation, parent, false));
|
||||
case ViewItem.TYPE_GIFT:
|
||||
return new GiftViewHolder(inflater.inflate(R.layout.item_gift_card, parent, false));
|
||||
default:
|
||||
throw new IllegalArgumentException("Unknown view type");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, @SuppressLint("RecyclerView") int position) {
|
||||
ViewItem item = viewItems.get(position);
|
||||
|
||||
switch (item.getType()) {
|
||||
case ViewItem.TYPE_TEXT:
|
||||
((TextViewHolder) holder).bind((String) item.getData());
|
||||
break;
|
||||
case ViewItem.TYPE_RELATION:
|
||||
RoomRelationBean relationBean = (RoomRelationBean) item.getData();
|
||||
((RelationViewHolder) holder).bind(relationBean);
|
||||
|
||||
holder.itemView.setOnClickListener(v -> {
|
||||
// 取消之前选中的 item
|
||||
if (selectedRelationPosition != -1) {
|
||||
ViewItem oldItem = viewItems.get(selectedRelationPosition);
|
||||
if (oldItem.getData() instanceof RoomRelationBean) {
|
||||
((RoomRelationBean) oldItem.getData()).setSelected(false);
|
||||
}
|
||||
}
|
||||
|
||||
// 设置当前 item 为选中
|
||||
relationBean.setSelected(true);
|
||||
selectedRelationPosition = position;
|
||||
notifyDataSetChanged();
|
||||
});
|
||||
break;
|
||||
case ViewItem.TYPE_GIFT:
|
||||
RoonGiftModel giftModel = (RoonGiftModel) item.getData();
|
||||
((GiftViewHolder)holder).bind(giftModel);
|
||||
holder.itemView.setOnClickListener(v -> {
|
||||
|
||||
// 取消之前选中的 item
|
||||
if (selectedGiftPosition != -1) {
|
||||
ViewItem oldItem = viewItems.get(selectedGiftPosition);
|
||||
if (oldItem.getData() instanceof RoonGiftModel) {
|
||||
((RoonGiftModel) oldItem.getData()).setSelected(false);
|
||||
}
|
||||
}
|
||||
|
||||
// 设置当前 item 为选中
|
||||
giftModel.setSelected(true);
|
||||
selectedGiftPosition = position;
|
||||
notifyDataSetChanged();
|
||||
|
||||
});
|
||||
break;
|
||||
case ViewItem.TYPE_IMAGE_SELECTION:
|
||||
|
||||
RoomAutionTimeBean roomAutionTimeBean = (RoomAutionTimeBean) item.getData();
|
||||
((RelationViewTimHolder)holder).bind(roomAutionTimeBean);
|
||||
holder.itemView.setOnClickListener(v -> {
|
||||
// 取消之前选中的 item
|
||||
if (selectedTimePosition != -1) {
|
||||
ViewItem oldItem = viewItems.get(selectedTimePosition);
|
||||
if (oldItem.getData() instanceof RoomAutionTimeBean) {
|
||||
((RoomAutionTimeBean) oldItem.getData()).setSelected(false);
|
||||
}
|
||||
}
|
||||
|
||||
// 设置当前 item 为选中
|
||||
roomAutionTimeBean.setSelected(true);
|
||||
selectedTimePosition = position;
|
||||
notifyDataSetChanged();
|
||||
|
||||
|
||||
});
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
public interface OnItemSelectedListener {
|
||||
void onItemSelected(int viewType, int position);
|
||||
}
|
||||
|
||||
private OnItemSelectedListener listener;
|
||||
|
||||
public void setOnItemSelectedListener(OnItemSelectedListener listener) {
|
||||
this.listener = listener;
|
||||
}
|
||||
|
||||
public RoomRelationBean getSelectedRelation() {
|
||||
if (selectedRelationPosition != -1) {
|
||||
ViewItem item = viewItems.get(selectedRelationPosition);
|
||||
if (item.getData() instanceof RoomRelationBean) {
|
||||
return (RoomRelationBean) item.getData();
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public RoomAutionTimeBean getSelectedTime() {
|
||||
if (selectedTimePosition != -1) {
|
||||
ViewItem item = viewItems.get(selectedTimePosition);
|
||||
if (item.getData() instanceof RoomAutionTimeBean) {
|
||||
return (RoomAutionTimeBean) item.getData();
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public RoonGiftModel getSelectedGift() {
|
||||
if (selectedGiftPosition != -1) {
|
||||
ViewItem item = viewItems.get(selectedGiftPosition);
|
||||
if (item.getData() instanceof RoonGiftModel) {
|
||||
return (RoonGiftModel) item.getData();
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getItemCount() {
|
||||
return viewItems.size();
|
||||
}
|
||||
|
||||
static class TextViewHolder extends RecyclerView.ViewHolder {
|
||||
TextView textView;
|
||||
|
||||
TextViewHolder(View itemView) {
|
||||
super(itemView);
|
||||
textView = itemView.findViewById(R.id.tv_name);
|
||||
}
|
||||
|
||||
void bind(String text) {
|
||||
textView.setText(text);
|
||||
}
|
||||
}
|
||||
|
||||
static class RelationViewHolder extends RecyclerView.ViewHolder {
|
||||
TextView relationName;
|
||||
|
||||
RelationViewHolder(View itemView) {
|
||||
super(itemView);
|
||||
relationName = itemView.findViewById(R.id.tv_name);
|
||||
}
|
||||
|
||||
void bind(RoomRelationBean bean) {
|
||||
relationName.setText(bean.getName());
|
||||
|
||||
if (bean.isSelected()) {
|
||||
relationName.setBackground(itemView.getResources().getDrawable(com.qxcm.moduleutil.R.mipmap.gx_xz_bj));
|
||||
relationName.setTextColor(itemView.getResources().getColor(com.qxcm.moduleutil.R.color.color_FF333333));
|
||||
} else {
|
||||
relationName.setBackground(itemView.getResources().getDrawable(com.qxcm.moduleutil.R.mipmap.gux_bj));
|
||||
relationName.setTextColor(itemView.getResources().getColor(com.qxcm.moduleutil.R.color.white));
|
||||
}
|
||||
}
|
||||
}
|
||||
static class RelationViewTimHolder extends RecyclerView.ViewHolder {
|
||||
TextView relationName;
|
||||
|
||||
RelationViewTimHolder(View itemView) {
|
||||
super(itemView);
|
||||
relationName = itemView.findViewById(R.id.tv_name);
|
||||
|
||||
}
|
||||
|
||||
void bind(RoomAutionTimeBean bean) {
|
||||
relationName.setText(bean.getDays()+"天");
|
||||
|
||||
if (bean.isSelected()) {
|
||||
relationName.setBackground(itemView.getResources().getDrawable(com.qxcm.moduleutil.R.mipmap.gx_xz_bj));
|
||||
relationName.setTextColor(itemView.getResources().getColor(com.qxcm.moduleutil.R.color.color_FF333333));
|
||||
} else {
|
||||
relationName.setBackground(itemView.getResources().getDrawable(com.qxcm.moduleutil.R.mipmap.gux_bj));
|
||||
relationName.setTextColor(itemView.getResources().getColor(com.qxcm.moduleutil.R.color.white));
|
||||
}
|
||||
}
|
||||
}
|
||||
static class GiftViewHolder extends RecyclerView.ViewHolder {
|
||||
TextView tv_gift_name;
|
||||
TextView tv_gift_price;
|
||||
ImageView iv_gift_pic;
|
||||
ConstraintLayout item_layout;
|
||||
ImageView ivDownOn;
|
||||
ConstraintLayout cl_iv_down_on;
|
||||
|
||||
|
||||
GiftViewHolder(View itemView) {
|
||||
super(itemView);
|
||||
tv_gift_name = itemView.findViewById(R.id.tv_gift_name);
|
||||
tv_gift_price = itemView.findViewById(R.id.tv_gift_price);
|
||||
iv_gift_pic = itemView.findViewById(R.id.iv_gift_pic);
|
||||
item_layout = itemView.findViewById(R.id.cl_gift);
|
||||
ivDownOn = itemView.findViewById(R.id.iv_down_on);
|
||||
cl_iv_down_on = itemView.findViewById(R.id.cl_iv_down_on);
|
||||
}
|
||||
|
||||
void bind(RoonGiftModel bean) {
|
||||
tv_gift_name.setText(bean.getGift_name());
|
||||
//设置礼物价格
|
||||
String surplusTxt = bean.getGift_price();
|
||||
SpannableStringBuilder stringBuilder = new SpannableStringBuilder(surplusTxt);
|
||||
//ForegroundColorSpan 为文字前景色,BackgroundColorSpan为文字背景色
|
||||
tv_gift_price.setText(stringBuilder);
|
||||
// viewHolder.item_layout.setTag(R.id.id_gift_tag, giftModel);
|
||||
|
||||
//加载礼物图片
|
||||
ImageUtils.loadImageView(bean.getBase_image(), iv_gift_pic);
|
||||
//设置选中后的样式
|
||||
|
||||
if (bean.isSelected()) {//被选中
|
||||
cl_iv_down_on.setBackgroundResource(com.qxcm.moduleutil.R.mipmap.room_gift_bjx);
|
||||
ivDownOn.setVisibility(View.GONE);
|
||||
} else {
|
||||
ivDownOn.setVisibility(View.GONE);
|
||||
cl_iv_down_on.setBackgroundResource(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,507 @@
|
||||
package com.example.moduleroom.adapter;
|
||||
|
||||
import static com.qxcm.moduleutil.utils.UtilConfig.getContext;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.text.Html;
|
||||
import android.text.Spanned;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.widget.AppCompatImageView;
|
||||
import androidx.vectordrawable.graphics.drawable.Animatable2Compat;
|
||||
|
||||
import com.alibaba.android.arouter.launcher.ARouter;
|
||||
import com.blankj.utilcode.util.ConvertUtils;
|
||||
import com.blankj.utilcode.util.GsonUtils;
|
||||
import com.blankj.utilcode.util.SpanUtils;
|
||||
import com.bumptech.glide.Glide;
|
||||
import com.bumptech.glide.integration.webp.decoder.WebpDrawable;
|
||||
import com.bumptech.glide.request.target.SimpleTarget;
|
||||
import com.bumptech.glide.request.transition.Transition;
|
||||
import com.chad.library.adapter.base.BaseMultiItemQuickAdapter;
|
||||
import com.chad.library.adapter.base.BaseViewHolder;
|
||||
import com.example.moduleroom.R;
|
||||
import com.google.gson.reflect.TypeToken;
|
||||
import com.qxcm.moduleutil.bean.RoomMessageEvent;
|
||||
import com.qxcm.moduleutil.bean.room.EMMessageInfo;
|
||||
import com.qxcm.moduleutil.utils.ImageUtils;
|
||||
import com.qxcm.moduleutil.utils.logger.Logger;
|
||||
import com.qxcm.moduleutil.widget.NewView;
|
||||
import com.qxcm.moduleutil.widget.NobilityView;
|
||||
import com.qxcm.moduleutil.widget.RoleView;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
/**
|
||||
* @author xf
|
||||
*/
|
||||
public class EaseChatAdapter extends BaseMultiItemQuickAdapter<EMMessageInfo, BaseViewHolder> {
|
||||
|
||||
// private int[] a = {R.drawable.random0s, R.drawable.random1s, R.drawable.random2s, R.drawable.random3s, R.drawable.random4s, R.drawable.random5s, R.drawable.random6s, R.drawable.random7s, R.drawable.random8s, R.drawable.random9s};
|
||||
|
||||
private int listShowType = 1;
|
||||
public static int SHOW_TYPE_ALL = 1;
|
||||
public static int SHOW_TYPE_USER = 2;
|
||||
public static int SHOW_TYPE_SYSTEM = 3;
|
||||
|
||||
private List<EMMessageInfo> allMsgList;
|
||||
private List<EMMessageInfo> userMsgList;
|
||||
private List<EMMessageInfo> systemMsgList;
|
||||
|
||||
public EaseChatAdapter() {
|
||||
super(null);
|
||||
addItemType(1, com.qxcm.moduleutil.R.layout.ease_row_received_message_system);//系统消息、官方公告
|
||||
addItemType(2, com.qxcm.moduleutil.R.layout.ease_row_received_message_user_send);//用户发送的消息
|
||||
addItemType(3, com.qxcm.moduleutil.R.layout.ease_row_received_message_user_send);//加入房间 、赠送礼物、上下麦、禁言 2025年6月12日15:42:08,让和聊天显示的是同一个额布局,后面需要修改
|
||||
// addItemType(3, com.qxcm.moduleutil.R.layout.ease_row_received_message_join_room);//加入房间 、赠送礼物、上下麦、禁言
|
||||
addItemType(4, com.qxcm.moduleutil.R.layout.ease_row_received_message_new_user);//新用户注册
|
||||
addItemType(5, com.qxcm.moduleutil.R.layout.ease_row_received_message_wagging);//摇签
|
||||
addItemType(6, com.qxcm.moduleutil.R.layout.ease_row_received_message_expression);//表情
|
||||
// addItemType(8, com.qxcm.moduleutil.R.layout.ease_row_received_message_game);//球球大作战
|
||||
// addItemType(9, com.qxcm.moduleutil.R.layout.ease_row_received_message_demand);//派单需求
|
||||
// addItemType(10, com.qxcm.moduleutil.R.layout.ease_row_received_message_red_rain);//红包雨消息
|
||||
// addItemType(11, com.qxcm.moduleutil.R.layout.ease_row_received_message_red_rain);//红包雨消息结束
|
||||
|
||||
allMsgList = new ArrayList<>();
|
||||
userMsgList = new ArrayList<>();
|
||||
systemMsgList = new ArrayList<>();
|
||||
}
|
||||
public void setShowType(int type){
|
||||
if (type == listShowType){
|
||||
return;
|
||||
}
|
||||
listShowType = type;
|
||||
List currData = new ArrayList();
|
||||
if (type == SHOW_TYPE_ALL){
|
||||
currData.addAll(allMsgList);
|
||||
}else if(type == SHOW_TYPE_USER){
|
||||
currData.addAll(userMsgList);
|
||||
}else if(type == SHOW_TYPE_SYSTEM){
|
||||
currData.addAll(systemMsgList);
|
||||
}
|
||||
setNewData(currData);
|
||||
//notifyDataSetChanged();
|
||||
}
|
||||
@Override
|
||||
protected void convert(BaseViewHolder helper, EMMessageInfo item) {
|
||||
RoomMessageEvent emMessage = item.getEmMessage();
|
||||
// EMTextMessageBody txtBody = (EMTextMessageBody) emMessage.getBody();
|
||||
// Spanned spanned = Html.fromHtml(txtBody.getMessage());
|
||||
// String message = txtBody.getMessage();
|
||||
// Log.e("环信消息", message);
|
||||
// SpanUtils spanUtils = new SpanUtils();
|
||||
// String role = emMessage.getStringAttribute("role", "0");
|
||||
// String userIsNew = emMessage.getStringAttribute("user_is_new", "0");
|
||||
// String rankIcon = emMessage.getStringAttribute("rank_icon", "");
|
||||
// String nobilityIcon = emMessage.getStringAttribute("nobility_icon", "");
|
||||
// String nickname = emMessage.getStringAttribute("nickname", "");
|
||||
// String type = emMessage.getStringAttribute("type", "");
|
||||
// String charmIcon = emMessage.getStringAttribute("charm_icon", null);
|
||||
// String user_title = emMessage.getStringAttribute("user_title", null);
|
||||
// String emoji_special = emMessage.getStringAttribute("face_special", message);
|
||||
// String userId = emMessage.getStringAttribute("user_id", null);
|
||||
// Spanned spanned1 = null;
|
||||
//
|
||||
switch (helper.getItemViewType()) {
|
||||
case 1:
|
||||
// //如果等于空,隐藏
|
||||
// if (TextUtils.isEmpty(type)) {
|
||||
// helper.getView(R.id.tv_content).setVisibility(View.GONE);
|
||||
// } else {
|
||||
helper.getView(R.id.tv_content).setVisibility(View.VISIBLE);
|
||||
// emMessage = message.replace("\n", "<br />");//解决不换行的问题
|
||||
// spanned1 = Html.fromHtml(message);
|
||||
helper.setText(R.id.tv_content, emMessage.getText().getText());
|
||||
// if (spanned1.toString().contains("恭喜") && spanned1.toString().contains("获得")) {
|
||||
// helper.itemView.setOnClickListener(view -> ARouter.getInstance().build(ARouteConstants.NEW_HOME_PAGE).withString("userId", userId).withBoolean("returnRoom", true).navigation());
|
||||
// }
|
||||
// }
|
||||
//
|
||||
break;
|
||||
case 2:
|
||||
ImageUtils.loadHeadCC(emMessage.getText().getFromUserInfo().getAvatar(), helper.getView(com.qxcm.moduleutil.R.id.avatar));
|
||||
helper.setText(com.qxcm.moduleutil.R.id.tv_name, emMessage.getText().getFromUserInfo().getNickname());
|
||||
helper.setText(com.qxcm.moduleutil.R.id.tv_content, emMessage.getText().getText());
|
||||
List<String> images =emMessage.getText().getFromUserInfo().getIcon();
|
||||
LinearLayout ll_images = helper.getView(com.qxcm.moduleutil.R.id.line);
|
||||
ll_images.removeAllViews();
|
||||
for (String url : images) {
|
||||
if (url.contains("http")) {
|
||||
ImageView imageView = new ImageView(getContext());
|
||||
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
|
||||
getContext().getResources().getDimensionPixelSize(com.qxcm.moduleutil.R.dimen.dp_37),
|
||||
getContext().getResources().getDimensionPixelSize(com.qxcm.moduleutil.R.dimen.dp_14)
|
||||
);
|
||||
params.setMargins(0, 0, getContext().getResources().getDimensionPixelSize(com.qxcm.moduleutil.R.dimen.dp_5), 0); // 右边距
|
||||
imageView.setLayoutParams(params);
|
||||
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
|
||||
// 使用 Glide 加载图片
|
||||
ImageUtils.loadHeadCC(url, imageView);
|
||||
ll_images.addView(imageView);
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
case 3:
|
||||
// int paddingLeftValues3 = 0;//距离左边距(默认加上8dp间距)
|
||||
// ivRole = helper.getView(R.id.iv_role);
|
||||
// ivNew = helper.getView(R.id.iv_new);
|
||||
// ivGrade = helper.getView(R.id.iv_grade);
|
||||
// ivTitle = helper.getView(R.id.iv_title_label);
|
||||
// ivNHobility = helper.getView(R.id.iv_nobility);
|
||||
// TextView tvContent3 = helper.getView(R.id.tv_content);
|
||||
// ivRole.setRole(Integer.parseInt(role));
|
||||
// ivNew.setNew(Integer.parseInt(userIsNew));
|
||||
// ivGrade.setGrade(rankIcon);
|
||||
// ivTitle.setLabelView(user_title);
|
||||
// ivTitle.setLabelView(user_title);
|
||||
// ivNHobility.setNobility(nobilityIcon);
|
||||
// ImageUtils.loadIcon(charmIcon, helper.getView(R.id.iv_charm));
|
||||
// // !---------------------------- 获取 最终的padding值
|
||||
// //爵位图标判断
|
||||
// if (ivNHobility.getVisibility() == View.VISIBLE) {
|
||||
// paddingLeftValues3 += 23;
|
||||
// }
|
||||
// //角色图标
|
||||
// if (ivRole.getVisibility() == View.VISIBLE) {
|
||||
// paddingLeftValues3 += 27;
|
||||
// }
|
||||
// //新人图标
|
||||
// if (ivNew.getVisibility() == View.VISIBLE) {
|
||||
// paddingLeftValues3 += 33;
|
||||
// }
|
||||
// //等级图标
|
||||
// if (ivGrade.getVisibility() == View.VISIBLE) {
|
||||
// paddingLeftValues3 += 33;
|
||||
// }
|
||||
//
|
||||
// //称号图标
|
||||
// try {
|
||||
// if (user_title == null || user_title.isEmpty()){
|
||||
// user_title = "";
|
||||
// }
|
||||
// String s = user_title.substring(user_title.lastIndexOf("=") + 1);
|
||||
// if (TextUtils.isEmpty(s)){
|
||||
// s = "1";
|
||||
// }
|
||||
// int mWidth = (int) (Float.parseFloat(s) * 20);
|
||||
// int mHeight = 20;
|
||||
// ViewGroup.LayoutParams layoutParams = ivTitle.getLayoutParams();
|
||||
// layoutParams.width = ConvertUtils.dp2px(mWidth);
|
||||
// layoutParams.height = ConvertUtils.dp2px(mHeight);
|
||||
// ivTitle.setLayoutParams(layoutParams);
|
||||
// if (ivTitle.getVisibility() == View.VISIBLE) {
|
||||
// paddingLeftValues3 += (mWidth + 3);
|
||||
// }
|
||||
// } catch (Exception e) {
|
||||
// e.printStackTrace();
|
||||
// }
|
||||
// //魅力图标
|
||||
// if (helper.getView(R.id.iv_charm).getVisibility() == View.VISIBLE) {
|
||||
// paddingLeftValues3 += 23;
|
||||
// }
|
||||
// spanUtils.append(nickname + " ").setForegroundColor(mContext.getResources().getColor(R.color.color_FFFFBC00)).setFontSize(ResourceUtil.getDimen(R.dimen.sp_13))
|
||||
// .append(spanned);
|
||||
// tvContent3.setPadding(ResourceUtil.getDimen(String.valueOf(paddingLeftValues3)), 0, 0, 0);
|
||||
// tvContent3.setText(spanUtils.create());
|
||||
|
||||
|
||||
ImageUtils.loadHeadCC(emMessage.getText().getFromUserInfo().getAvatar(), helper.getView(com.qxcm.moduleutil.R.id.avatar));
|
||||
helper.setText(com.qxcm.moduleutil.R.id.tv_name, emMessage.getText().getFromUserInfo().getNickname());
|
||||
helper.setText(com.qxcm.moduleutil.R.id.tv_content, emMessage.getText().getText());
|
||||
List<String> images1 =emMessage.getText().getFromUserInfo().getIcon();
|
||||
LinearLayout ll_images1 = helper.getView(com.qxcm.moduleutil.R.id.line);
|
||||
ll_images1.removeAllViews();
|
||||
for (String url : images1) {
|
||||
if (url.contains("http")) {
|
||||
ImageView imageView = new ImageView(getContext());
|
||||
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
|
||||
getContext().getResources().getDimensionPixelSize(com.qxcm.moduleutil.R.dimen.dp_37),
|
||||
getContext().getResources().getDimensionPixelSize(com.qxcm.moduleutil.R.dimen.dp_14)
|
||||
);
|
||||
params.setMargins(0, 0, getContext().getResources().getDimensionPixelSize(com.qxcm.moduleutil.R.dimen.dp_5), 0); // 右边距
|
||||
imageView.setLayoutParams(params);
|
||||
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
|
||||
// 使用 Glide 加载图片
|
||||
ImageUtils.loadHeadCC(url, imageView);
|
||||
ll_images1.addView(imageView);
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
// case 4:
|
||||
// TextView tvContent7 = helper.getView(R.id.tv_content);
|
||||
// ivNew = helper.getView(R.id.new_view);
|
||||
// ivNew.setNew(1);
|
||||
// tvContent7.setText(new SpanUtils().append(spanned).create());
|
||||
// break;
|
||||
// //抽签
|
||||
// case 5:
|
||||
// String number = emMessage.getStringAttribute("number", "");
|
||||
// ivRole = helper.getView(R.id.iv_role);
|
||||
// ivNew = helper.getView(R.id.iv_new);
|
||||
// ivGrade = helper.getView(R.id.iv_grade);
|
||||
// ivTitle = helper.getView(R.id.iv_title_label);
|
||||
// ivNHobility = helper.getView(R.id.iv_nobility);
|
||||
// tvName = helper.getView(R.id.tv_name);
|
||||
// TextView tvContent5 = helper.getView(R.id.tv_content);
|
||||
// ivRole.setRole(Integer.parseInt(role));
|
||||
// ivNew.setNew(Integer.parseInt(userIsNew));
|
||||
// ivGrade.setGrade(rankIcon);
|
||||
// //称号图标
|
||||
// try {
|
||||
// String s = user_title.substring(user_title.lastIndexOf("=") + 1);
|
||||
// int mWidth = (int) (Float.parseFloat(s) * 20);
|
||||
// int mHeight = 20;
|
||||
// ViewGroup.LayoutParams layoutParams = ivTitle.getLayoutParams();
|
||||
// layoutParams.width = ConvertUtils.dp2px(mWidth);
|
||||
// layoutParams.height = ConvertUtils.dp2px(mHeight);
|
||||
// ivTitle.setLayoutParams(layoutParams);
|
||||
// } catch (Exception e) {
|
||||
// e.printStackTrace();
|
||||
// }
|
||||
// ivTitle.setLabelView(user_title);
|
||||
// ivNHobility.setNobility(nobilityIcon);
|
||||
// ImageUtils.loadIcon(charmIcon, helper.getView(R.id.iv_charm));
|
||||
// tvName.setText(String.format("%s:", nickname));
|
||||
// tvContent5.setText(new SpanUtils().append(spanned).create());
|
||||
// GlideApp.with(mContext).load(String.format("http://soundriver.oss-cn-hangzhou.aliyuncs.com/custom/random%ss.webp", number)).into(new SimpleTarget<Drawable>() {
|
||||
// @Override
|
||||
// public void onResourceReady(@NonNull Drawable drawable, @Nullable Transition<? super Drawable> transition) {
|
||||
// if (drawable instanceof WebpDrawable) {
|
||||
// AppCompatImageView imageView = helper.getView(R.id.iv_wagginh);
|
||||
// imageView.setImageDrawable(drawable);
|
||||
// ((WebpDrawable) drawable).start();
|
||||
// ((WebpDrawable) drawable).setLoopCount(1);
|
||||
// ((WebpDrawable) drawable).registerAnimationCallback(new Animatable2Compat.AnimationCallback() {
|
||||
// @Override
|
||||
// public void onAnimationEnd(Drawable drawable) {
|
||||
// super.onAnimationEnd(drawable);
|
||||
// helper.setImageResource(R.id.iv_wagginh, a[Integer.parseInt(number)]);
|
||||
// }
|
||||
// });
|
||||
// }
|
||||
// }
|
||||
// });
|
||||
// break;
|
||||
// //表情
|
||||
// case 6:
|
||||
// ivRole = helper.getView(R.id.iv_role);
|
||||
// ivNew = helper.getView(R.id.iv_new);
|
||||
// ivGrade = helper.getView(R.id.iv_grade);
|
||||
// ivTitle = helper.getView(R.id.iv_title_label);
|
||||
// ivNHobility = helper.getView(R.id.iv_nobility);
|
||||
// tvName = helper.getView(R.id.tv_name);
|
||||
// ivRole.setRole(Integer.parseInt(role));
|
||||
// ivNew.setNew(Integer.parseInt(userIsNew));
|
||||
// ivGrade.setGrade(rankIcon);
|
||||
// ivTitle.setLabelView(user_title);
|
||||
// ivNHobility.setNobility(nobilityIcon);
|
||||
// tvName.setText(Html.fromHtml(nickname));
|
||||
// ImageUtils.loadIcon(charmIcon, helper.getView(R.id.iv_charm));
|
||||
// ImageLoader.loadIcon(mContext, helper.getView(R.id.iv_expression), emoji_special);
|
||||
//
|
||||
// //称号图标
|
||||
// try {
|
||||
// String s = user_title.substring(user_title.lastIndexOf("=") + 1);
|
||||
// int mWidth = (int) (Float.parseFloat(s) * 20);
|
||||
// int mHeight = 20;
|
||||
// ViewGroup.LayoutParams layoutParams = ivTitle.getLayoutParams();
|
||||
// layoutParams.width = ConvertUtils.dp2px(mWidth);
|
||||
// layoutParams.height = ConvertUtils.dp2px(mHeight);
|
||||
// ivTitle.setLayoutParams(layoutParams);
|
||||
// } catch (Exception e) {
|
||||
// e.printStackTrace();
|
||||
// }
|
||||
// break;
|
||||
// //球球大作战
|
||||
// case 8:
|
||||
// String first = emMessage.getStringAttribute("first", "");
|
||||
// String second = emMessage.getStringAttribute("second", "");
|
||||
// String third = emMessage.getStringAttribute("third", "");
|
||||
//
|
||||
// ivRole = helper.getView(R.id.iv_role);
|
||||
// ivNew = helper.getView(R.id.iv_new);
|
||||
// ivGrade = helper.getView(R.id.iv_grade);
|
||||
// ivTitle = helper.getView(R.id.iv_title_label);
|
||||
// ivNHobility = helper.getView(R.id.iv_nobility);
|
||||
// tvName = helper.getView(R.id.tv_name);
|
||||
// TextView tvContent8 = helper.getView(R.id.tv_content);
|
||||
//
|
||||
// ivRole.setRole(Integer.parseInt(role));
|
||||
// ivNew.setNew(Integer.parseInt(userIsNew));
|
||||
// ivGrade.setGrade(rankIcon);
|
||||
// ivTitle.setLabelView(user_title);
|
||||
// ivNHobility.setNobility(nobilityIcon);
|
||||
// ImageUtils.loadIcon(charmIcon, helper.getView(R.id.iv_charm));
|
||||
// tvName.setText(Html.fromHtml(nickname));
|
||||
// if (emMessage.getIntAttribute("type", 0) == 6019) {//亮球
|
||||
// helper.setVisible(R.id.iv_qiu1, true);
|
||||
// helper.setVisible(R.id.iv_qiu2, true);
|
||||
// helper.setVisible(R.id.iv_qiu3, true);
|
||||
//
|
||||
// try {
|
||||
// helper.setImageResource(R.id.iv_qiu1, mContext.getResources().getIdentifier(first, "mipmap", mContext.getPackageName()));
|
||||
// helper.setImageResource(R.id.iv_qiu2, mContext.getResources().getIdentifier(second, "mipmap", mContext.getPackageName()));
|
||||
// helper.setImageResource(R.id.iv_qiu3, mContext.getResources().getIdentifier(third, "mipmap", mContext.getPackageName()));
|
||||
// } catch (Exception e) {
|
||||
// e.printStackTrace();
|
||||
// }
|
||||
//
|
||||
// } else {
|
||||
// helper.setVisible(R.id.iv_qiu1, false);
|
||||
// helper.setVisible(R.id.iv_qiu2, false);
|
||||
// helper.setVisible(R.id.iv_qiu3, false);
|
||||
// }
|
||||
// spanUtils.append(spanned);
|
||||
// tvContent8.setText(spanUtils.create());
|
||||
// break;
|
||||
// case 10:
|
||||
// TextView tv = helper.getView(R.id.tv_content);
|
||||
// float height = tv.getTextSize();//获取字体高度
|
||||
// String bell = "<img src=\"" + R.drawable.ease_message_bell + "\"/>"; //前面加一个铃铛
|
||||
// Spanned sp = Html.fromHtml(bell + txtBody.getMessage(), source -> {
|
||||
// Drawable drawable;
|
||||
// drawable = mContext.getResources().getDrawable(Integer.parseInt(source));
|
||||
// drawable.setBounds(0, 0, (int) (height * 36f / 42f), (int) height); //等比例设置铃铛大小
|
||||
// return drawable;
|
||||
// }, null);
|
||||
// tv.setText(sp);
|
||||
// helper.setGone(R.id.tv_red_rain_detail, false);
|
||||
// break;
|
||||
// case 11:
|
||||
// TextView tv11 = helper.getView(R.id.tv_content);
|
||||
// float height11 = tv11.getTextSize();//获取字体高度
|
||||
// String bell11 = "<img src=\"" + R.drawable.ease_message_bell + "\"/>"; //前面加一个铃铛
|
||||
// Spanned sp11 = Html.fromHtml(bell11 + txtBody.getMessage(), source -> {
|
||||
// Drawable drawable;
|
||||
// drawable = mContext.getResources().getDrawable(Integer.parseInt(source));
|
||||
// drawable.setBounds(0, 0, (int) (height11 * 36f / 42f), (int) height11); //等比例设置铃铛大小
|
||||
// return drawable;
|
||||
// }, null);
|
||||
// tv11.setText(sp11);
|
||||
// helper.setGone(R.id.tv_red_rain_detail, true);
|
||||
// helper.addOnClickListener(R.id.tv_red_rain_detail);
|
||||
// break;
|
||||
// default:
|
||||
// helper.setText(R.id.tv_content, Html.fromHtml(txtBody.getMessage()));
|
||||
// break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onViewRecycled(@NonNull BaseViewHolder holder) {
|
||||
Logger.e("onViewRecycled", "onViewRecycled");
|
||||
ImageView ivEmoji = holder.getView(com.qxcm.moduleutil.R.id.iv_expression);
|
||||
// ImageView ivGrade = holder.getView(com.qxcm.moduleutil.R.id.iv_grade);
|
||||
ImageView ivNobility = holder.getView(com.qxcm.moduleutil.R.id.iv_nobility);
|
||||
ImageView ivCharm = holder.getView(com.qxcm.moduleutil.R.id.iv_charm);
|
||||
// ImageView ivTitle = holder.getView(com.qxcm.moduleutil.R.id.iv_title_label);
|
||||
if (mContext instanceof Activity && (((Activity) mContext).isFinishing() || ((Activity) mContext).isDestroyed())) {
|
||||
return;
|
||||
}
|
||||
try {
|
||||
if (ivEmoji != null) {
|
||||
ivEmoji.setImageDrawable(null);
|
||||
Glide.with(ivEmoji.getContext()).clear(ivEmoji);
|
||||
}
|
||||
// if (ivGrade != null) {
|
||||
// ivGrade.setImageDrawable(null);
|
||||
// Glide.with(ivGrade.getContext()).clear(ivGrade);
|
||||
// }
|
||||
if (ivNobility != null) {
|
||||
ivNobility.setImageDrawable(null);
|
||||
Glide.with(ivNobility.getContext()).clear(ivNobility);
|
||||
}
|
||||
if (ivCharm != null) {
|
||||
ivCharm.setImageDrawable(null);
|
||||
Glide.with(ivCharm.getContext()).clear(ivCharm);
|
||||
}
|
||||
|
||||
// if (ivTitle != null) {
|
||||
// ivTitle.setImageDrawable(null);
|
||||
// Glide.with(ivTitle.getContext()).clear(ivTitle);
|
||||
// }
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
super.onViewRecycled(holder);
|
||||
}
|
||||
|
||||
/**
|
||||
* 清除数据
|
||||
*
|
||||
* @param
|
||||
*/
|
||||
public void clearData() {
|
||||
this.mData.clear();
|
||||
userMsgList.clear();
|
||||
systemMsgList.clear();
|
||||
allMsgList.clear();
|
||||
|
||||
notifyDataSetChanged();
|
||||
}
|
||||
|
||||
public void clearSomeData() {
|
||||
if (this.mData != null && mData.size() > 500) {
|
||||
List<EMMessageInfo> emMessageInfos = mData.subList(500, mData.size());
|
||||
setNewData(emMessageInfos);
|
||||
}
|
||||
|
||||
if (allMsgList.size() > 500){
|
||||
allMsgList = allMsgList.subList(500,allMsgList.size());
|
||||
}
|
||||
|
||||
if (userMsgList.size() > 500){
|
||||
userMsgList = userMsgList.subList(500,userMsgList.size());
|
||||
}
|
||||
|
||||
if (systemMsgList.size() > 500){
|
||||
systemMsgList = systemMsgList.subList(500,systemMsgList.size());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addData(@NonNull EMMessageInfo data) {
|
||||
// super.addData(data);
|
||||
allMsgList.add(data);
|
||||
if (data.getItemType() == 2 ){
|
||||
userMsgList.add(data);
|
||||
}else if (data.getItemType() == 3){
|
||||
systemMsgList.add(data);
|
||||
}
|
||||
|
||||
if (listShowType == SHOW_TYPE_ALL
|
||||
|| ((data.getItemType() == 2 ) && listShowType == SHOW_TYPE_USER)
|
||||
|| ((data.getItemType() == 3) && listShowType == SHOW_TYPE_SYSTEM)
|
||||
){
|
||||
super.addData(data);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addData(@NonNull Collection<? extends EMMessageInfo> newData) {
|
||||
// super.addData(newData);
|
||||
if (newData == null || newData.size() == 0){
|
||||
return;
|
||||
}
|
||||
List<EMMessageInfo> list = new ArrayList<>();
|
||||
list.addAll(newData);
|
||||
for (int i = 0; i < list.size(); i++) {
|
||||
addData(list.get(i));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,174 @@
|
||||
package com.example.moduleroom.adapter;
|
||||
|
||||
import android.text.TextUtils;
|
||||
import android.view.View;
|
||||
import android.widget.ImageView;
|
||||
|
||||
import com.chad.library.adapter.base.BaseQuickAdapter;
|
||||
import com.chad.library.adapter.base.BaseViewHolder;
|
||||
import com.example.moduleroom.R;
|
||||
import com.qxcm.moduleutil.bean.RewardUserBean;
|
||||
import com.qxcm.moduleutil.utils.ImageUtils;
|
||||
import com.qxcm.moduleutil.widget.BaseWheatView;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 项目名称 qipao-android
|
||||
* 包名:com.qpyy.room.adapter
|
||||
* 创建人 黄强
|
||||
* 创建时间 2020/8/6 14:48
|
||||
* 描述 describe
|
||||
*/
|
||||
public class GiftUserAdapter extends BaseQuickAdapter<RewardUserBean, BaseViewHolder> {
|
||||
private int ownerModel = 0;
|
||||
|
||||
|
||||
public GiftUserAdapter() {
|
||||
super(R.layout.room_rv_item_gift_wheat);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void convert(BaseViewHolder helper, RewardUserBean item) {
|
||||
ImageUtils.loadHeadCC(item.getAvatar(), helper.getView(R.id.riv_gift_wheat_head_pic));
|
||||
ImageView rivPit = helper.getView(R.id.riv_pit);
|
||||
rivPit.setVisibility(item.isSelect() ? View.VISIBLE : View.INVISIBLE);
|
||||
|
||||
if (TextUtils.isEmpty(item.getPit_number()) || "0".equals(item.getPit_number())) {
|
||||
helper.setVisible(R.id.tv_pit, false);
|
||||
} else {
|
||||
helper.setVisible(R.id.tv_pit, true);
|
||||
helper.setText(R.id.tv_pit, String.format("%s号麦", item.getPit_number()));
|
||||
if (item.getPit_number().equals("8")){
|
||||
helper.setText(R.id.tv_pit, "嘉宾");
|
||||
}
|
||||
if (BaseWheatView.WHEAT_HOST.equals(item.getPit_number())) {
|
||||
if (2 == ownerModel || 0 == ownerModel) {
|
||||
helper.setText(R.id.tv_pit, "主持人");
|
||||
} else {
|
||||
helper.setText(R.id.tv_pit, "房主");
|
||||
}
|
||||
}
|
||||
}
|
||||
if (item.isSelect()){
|
||||
helper.getView(R.id.tv_pit).setBackgroundResource(com.qxcm.moduleutil.R.mipmap.gift_show);
|
||||
}else {
|
||||
helper.getView(R.id.tv_pit).setBackgroundResource(com.qxcm.moduleutil.R.mipmap.gift_show_b);
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isAll() {
|
||||
int count = 0;
|
||||
List<RewardUserBean> data = getData();
|
||||
for (RewardUserBean item : data) {
|
||||
if (item.isSelect()) {
|
||||
count++;
|
||||
}
|
||||
}
|
||||
return count > 0 && count == data.size();
|
||||
}
|
||||
|
||||
public void allElection(boolean b) {
|
||||
List<RewardUserBean> data = getData();
|
||||
for (RewardUserBean item : data) {
|
||||
item.setSelect(b);
|
||||
}
|
||||
notifyDataSetChanged();
|
||||
}
|
||||
|
||||
public int getSelectCount() {
|
||||
int count = 1;
|
||||
List<RewardUserBean> data = getData();
|
||||
for (RewardUserBean item : data) {
|
||||
if (item.isSelect()) {
|
||||
count++;
|
||||
}
|
||||
}
|
||||
return count;
|
||||
}
|
||||
|
||||
public List<RewardUserBean> getSelectRoomPitUserModel() {
|
||||
List<RewardUserBean> selects = getData();
|
||||
List<RewardUserBean> data = getData();
|
||||
for (RewardUserBean item : data) {
|
||||
if (item.isSelect()) {
|
||||
selects.add(item);
|
||||
}
|
||||
}
|
||||
return selects;
|
||||
}
|
||||
|
||||
public String getUserIdToString() {
|
||||
List<RewardUserBean> data = getData();
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for (int i = 0; i < data.size(); i++) {
|
||||
if (data.get(i).isSelect()) {
|
||||
if (sb.length() > 0) {//该步即不会第一位有逗号,也防止最后一位拼接逗号!
|
||||
sb.append(",");
|
||||
}
|
||||
sb.append(data.get(i).getUser_id());
|
||||
}
|
||||
}
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
public String getUserPitToString() {
|
||||
List<RewardUserBean> data = getData();
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for (int i = 0; i < data.size(); i++) {
|
||||
if (data.get(i).isSelect()) {
|
||||
if (sb.length() > 0) {//该步即不会第一位有逗号,也防止最后一位拼接逗号!
|
||||
sb.append(",");
|
||||
}
|
||||
sb.append(data.get(i).getPit_number());
|
||||
}
|
||||
}
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
|
||||
public List<RewardUserBean> getGiftUser() {
|
||||
List<RewardUserBean> data = getData();
|
||||
List<RewardUserBean> giftUserList = new ArrayList<>();
|
||||
for (RewardUserBean item : data) {
|
||||
if (item.isSelect()) {
|
||||
giftUserList.add(item);
|
||||
}
|
||||
}
|
||||
return giftUserList;
|
||||
}
|
||||
|
||||
/**
|
||||
* 清除所有选中
|
||||
*/
|
||||
public List<String> clearAllSelected() {
|
||||
List<String> ids = new ArrayList<>();
|
||||
List<RewardUserBean> data = getData();
|
||||
for (RewardUserBean item : data) {
|
||||
if (item.isSelect()) {
|
||||
ids.add(item.getUser_id());
|
||||
}
|
||||
item.setSelect(false);
|
||||
}
|
||||
notifyDataSetChanged();
|
||||
return ids;
|
||||
}
|
||||
|
||||
public void setOwnerModel(int ownerModel) {
|
||||
this.ownerModel = ownerModel;
|
||||
notifyDataSetChanged();
|
||||
}
|
||||
|
||||
public List<String> getAllSelectedIds() {
|
||||
List<String> ids = new ArrayList<>();
|
||||
List<RewardUserBean> data = getData();
|
||||
for (RewardUserBean item : data) {
|
||||
if (item.isSelect()) {
|
||||
ids.add(item.getUser_id());
|
||||
}
|
||||
}
|
||||
return ids;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,58 @@
|
||||
package com.example.moduleroom.adapter;
|
||||
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.chad.library.adapter.base.BaseQuickAdapter;
|
||||
import com.chad.library.adapter.base.BaseViewHolder;
|
||||
import com.example.moduleroom.R;
|
||||
import com.qxcm.moduleutil.RoomAutionTimeBean;
|
||||
import com.qxcm.moduleutil.bean.RoomRelationBean;
|
||||
import com.qxcm.moduleutil.bean.ViewItem;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class PkTimeAdapter extends BaseQuickAdapter<RoomAutionTimeBean, BaseViewHolder> {
|
||||
private int selectedRelationPosition = -1;
|
||||
private List<RoomAutionTimeBean> viewItems = new ArrayList<>();
|
||||
public PkTimeAdapter() {
|
||||
super(R.layout.item_relation);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void convert(BaseViewHolder helper, RoomAutionTimeBean item) {
|
||||
TextView relationName = helper.getView(R.id.tv_name);
|
||||
relationName.setText( item.getDays()+"分钟");
|
||||
|
||||
if (item.isSelected()) {
|
||||
relationName.setBackground(helper.itemView.getResources().getDrawable(com.qxcm.moduleutil.R.mipmap.pk_time_t));
|
||||
relationName.setTextColor(helper.itemView.getResources().getColor(com.qxcm.moduleutil.R.color.color_0DFFB9));
|
||||
} else {
|
||||
relationName.setBackground(helper.itemView.getResources().getDrawable(com.qxcm.moduleutil.R.mipmap.pk_time_f));
|
||||
relationName.setTextColor(helper.itemView.getResources().getColor(com.qxcm.moduleutil.R.color.color_FF333333));
|
||||
}
|
||||
|
||||
helper.itemView.setOnClickListener(v -> {
|
||||
int currentPosition = helper.getLayoutPosition();
|
||||
if (selectedRelationPosition == currentPosition) return; // 避免重复点击
|
||||
|
||||
if (selectedRelationPosition != -1) {
|
||||
getData().get(selectedRelationPosition).setSelected(false);
|
||||
notifyItemChanged(selectedRelationPosition);
|
||||
}
|
||||
|
||||
item.setSelected(true);
|
||||
selectedRelationPosition = currentPosition;
|
||||
notifyItemChanged(currentPosition);
|
||||
});
|
||||
}
|
||||
|
||||
public RoomAutionTimeBean getSelectedTime() {
|
||||
if (selectedRelationPosition != -1 && selectedRelationPosition < getData().size()) {
|
||||
return getData().get(selectedRelationPosition);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,87 @@
|
||||
package com.example.moduleroom.adapter;
|
||||
|
||||
import static com.qxcm.moduleutil.utils.UtilConfig.getContext;
|
||||
|
||||
import android.text.TextUtils;
|
||||
import android.view.View;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import com.bumptech.glide.Glide;
|
||||
import com.chad.library.adapter.base.BaseQuickAdapter;
|
||||
import com.chad.library.adapter.base.BaseViewHolder;
|
||||
import com.example.moduleroom.R;
|
||||
import com.qxcm.moduleutil.bean.CharmRankingResp;
|
||||
import com.qxcm.moduleutil.bean.room.RoomAuction;
|
||||
import com.qxcm.moduleutil.utils.ImageUtils;
|
||||
import com.qxcm.moduleutil.utils.logger.Logger;
|
||||
import com.qxcm.moduleutil.widget.BeautifulNameView;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class RankingAutcionAdapter extends BaseQuickAdapter<RoomAuction.AuctionListBean, BaseViewHolder> {
|
||||
|
||||
private static String GG = "0";
|
||||
private static String MM = "1";
|
||||
|
||||
public RankingAutcionAdapter() {
|
||||
super(R.layout.item_ranking_auction);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onViewRecycled(@NonNull BaseViewHolder holder) {
|
||||
Logger.e("onViewRecycled", "onViewRecycled");
|
||||
ImageView ivEmoji = holder.getView(R.id.room_item_head);
|
||||
ImageView ivGrade = holder.getView(R.id.room_item_grade);
|
||||
ImageView ivNobility = holder.getView(R.id.room_item_rank);
|
||||
if (ivEmoji != null) {
|
||||
ivEmoji.setImageDrawable(null);
|
||||
Glide.with(ivEmoji.getContext()).clear(ivEmoji);
|
||||
}
|
||||
if (ivGrade != null) {
|
||||
ivGrade.setImageDrawable(null);
|
||||
Glide.with(ivGrade.getContext()).clear(ivGrade);
|
||||
}
|
||||
if (ivNobility != null) {
|
||||
ivNobility.setImageDrawable(null);
|
||||
Glide.with(ivNobility.getContext()).clear(ivNobility);
|
||||
}
|
||||
super.onViewRecycled(holder);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void convert(BaseViewHolder helper, RoomAuction.AuctionListBean item) {
|
||||
helper.setText(R.id.room_item_seq, String.valueOf(helper.getAdapterPosition() + 4));//从第四个开始设置值
|
||||
helper.setText(R.id.room_item_name, item.getNickname());
|
||||
helper.setText(R.id.room_item_pop, item.getGift_price());
|
||||
ImageUtils.loadHeadCC(item.getAvatar(), helper.getView(R.id.room_item_head));
|
||||
helper.addOnClickListener(R.id.room_item_head);
|
||||
|
||||
LinearLayout llContainer =helper.getView(R.id.lli);
|
||||
llContainer.removeAllViews(); // 清空旧的 ImageView
|
||||
|
||||
List<String> images = item.getIcon(); // 获取图片列表
|
||||
|
||||
for (String url : images) {
|
||||
if (url.contains("http")) {
|
||||
ImageView imageView1 = new ImageView(getContext());
|
||||
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
|
||||
getContext().getResources().getDimensionPixelSize(com.qxcm.moduleutil.R.dimen.dp_37),
|
||||
getContext().getResources().getDimensionPixelSize(com.qxcm.moduleutil.R.dimen.dp_15)
|
||||
);
|
||||
params.setMargins(0, 0, getContext().getResources().getDimensionPixelSize(com.qxcm.moduleutil.R.dimen.dp_5), 0); // 右边距
|
||||
imageView1.setLayoutParams(params);
|
||||
imageView1.setScaleType(ImageView.ScaleType.CENTER_CROP);
|
||||
|
||||
// 使用 Glide 加载图片
|
||||
ImageUtils.loadHeadCC(url, imageView1);
|
||||
|
||||
llContainer.addView(imageView1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,96 @@
|
||||
package com.example.moduleroom.adapter;
|
||||
|
||||
import android.graphics.Color;
|
||||
import android.text.TextUtils;
|
||||
import android.view.View;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import com.bumptech.glide.Glide;
|
||||
import com.chad.library.adapter.base.BaseQuickAdapter;
|
||||
import com.chad.library.adapter.base.BaseViewHolder;
|
||||
import com.example.moduleroom.R;
|
||||
import com.qxcm.moduleutil.bean.CharmRankingResp;
|
||||
import com.qxcm.moduleutil.utils.ImageUtils;
|
||||
import com.qxcm.moduleutil.utils.logger.Logger;
|
||||
import com.qxcm.moduleutil.widget.BeautifulNameView;
|
||||
|
||||
/**
|
||||
* 项目名称 qipao-android
|
||||
* 包名:com.qpyy.room.adapter
|
||||
* 创建人 黄强
|
||||
* 创建时间 2020/7/25 10:37
|
||||
* 描述 describe
|
||||
*/
|
||||
public class RankingCharmListAdapter extends BaseQuickAdapter<CharmRankingResp.ListsBean, BaseViewHolder> {
|
||||
|
||||
private static String GG = "0";
|
||||
private static String MM = "1";
|
||||
|
||||
public RankingCharmListAdapter() {
|
||||
super(R.layout.room_rv_item_ranking);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void convert(BaseViewHolder helper, CharmRankingResp.ListsBean item) {
|
||||
//数据绑定赋值
|
||||
helper.setText(R.id.room_item_seq, String.valueOf(helper.getAdapterPosition() + 4));//从第四个开始设置值
|
||||
helper.setText(R.id.room_item_name, item.getNickname());
|
||||
// ((BeautifulNameView) helper.getView(R.id.bnv_rank_list_room)).setText(String.format(mContext.getResources().getString(R.string.common_id_formatter), item.getUser_code()));
|
||||
// ((BeautifulNameView) helper.getView(R.id.bnv_rank_list_room)).setTextColor(!TextUtils.isEmpty(item.getId_color()) ? Color.parseColor(item.getId_color()) : mContext.getResources().getColor(R.color.color_FFCCCCCC));
|
||||
((BeautifulNameView) helper.getView(R.id.bnv_rank_list_room)).setPlay(!TextUtils.isEmpty(item.getId_color()));
|
||||
((BeautifulNameView) helper.getView(R.id.bnv_rank_list_room)).setImgVisible("1".equals(item.getGood_number()));
|
||||
helper.setText(R.id.room_item_pop, item.getNumber_format());
|
||||
// if (GG.equals(item.getSex())) {
|
||||
// helper.setBackgroundRes(R.id.room_item_pop, R.mipmap.room_bg_wheat_charm_gg_sr);
|
||||
// } else {
|
||||
// helper.setBackgroundRes(R.id.room_item_pop, R.mipmap.room_bg_wheat_charm_mm_sr);
|
||||
// }
|
||||
ImageUtils.loadHeadCC(item.getHead_picture(), helper.getView(R.id.room_item_head));
|
||||
String nobility = item.getLevel_icon();//等级
|
||||
String status = item.getNobility_icon();//爵位
|
||||
ImageUtils.loadImageView(item.getNobility_icon(), helper.getView(R.id.room_item_rank));
|
||||
ImageUtils.loadImageView(item.getLevel_icon(), helper.getView(R.id.room_item_grade));
|
||||
if (TextUtils.isEmpty(nobility)) {
|
||||
helper.getView(R.id.room_item_grade).setVisibility(View.GONE);
|
||||
} else {
|
||||
helper.getView(R.id.room_item_grade).setVisibility(View.VISIBLE);
|
||||
}
|
||||
if (TextUtils.isEmpty(status)) {
|
||||
helper.getView(R.id.room_item_rank).setVisibility(View.GONE);
|
||||
} else {
|
||||
helper.getView(R.id.room_item_rank).setVisibility(View.VISIBLE);
|
||||
}
|
||||
TextView textView = helper.getView(R.id.room_item_pop);
|
||||
if (helper.getAdapterPosition() % 2 == 1) {
|
||||
helper.getView(R.id.room_item_bg).setVisibility(View.GONE);//隔开隐藏背景
|
||||
} else {
|
||||
helper.getView(R.id.room_item_bg).setVisibility(View.VISIBLE);
|
||||
}
|
||||
helper.addOnClickListener(R.id.room_item_head);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onViewRecycled(@NonNull BaseViewHolder holder) {
|
||||
Logger.e("onViewRecycled", "onViewRecycled");
|
||||
ImageView ivEmoji = holder.getView(R.id.room_item_head);
|
||||
ImageView ivGrade = holder.getView(R.id.room_item_grade);
|
||||
ImageView ivNobility = holder.getView(R.id.room_item_rank);
|
||||
if (ivEmoji != null) {
|
||||
ivEmoji.setImageDrawable(null);
|
||||
Glide.with(ivEmoji.getContext()).clear(ivEmoji);
|
||||
}
|
||||
if (ivGrade != null) {
|
||||
ivGrade.setImageDrawable(null);
|
||||
Glide.with(ivGrade.getContext()).clear(ivGrade);
|
||||
}
|
||||
if (ivNobility != null) {
|
||||
ivNobility.setImageDrawable(null);
|
||||
Glide.with(ivNobility.getContext()).clear(ivNobility);
|
||||
}
|
||||
super.onViewRecycled(holder);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,86 @@
|
||||
package com.example.moduleroom.adapter;
|
||||
|
||||
import android.graphics.Color;
|
||||
import android.text.TextUtils;
|
||||
import android.view.View;
|
||||
import android.widget.ImageView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import com.bumptech.glide.Glide;
|
||||
import com.chad.library.adapter.base.BaseQuickAdapter;
|
||||
import com.chad.library.adapter.base.BaseViewHolder;
|
||||
import com.example.moduleroom.R;
|
||||
import com.qxcm.moduleutil.bean.WealthRankingResp;
|
||||
import com.qxcm.moduleutil.utils.ImageUtils;
|
||||
import com.qxcm.moduleutil.utils.logger.Logger;
|
||||
import com.qxcm.moduleutil.widget.BeautifulNameView;
|
||||
|
||||
/**
|
||||
* 项目名称 qipao-android
|
||||
* 包名:com.qpyy.room.adapter
|
||||
* 创建人 黄强
|
||||
* 创建时间 2020/7/25 10:37
|
||||
* 描述 describe
|
||||
*/
|
||||
public class RankingWealthListAdapter extends BaseQuickAdapter<WealthRankingResp.ListsBean, BaseViewHolder> {
|
||||
|
||||
public RankingWealthListAdapter() {
|
||||
super(R.layout.room_rv_item_ranking_rich);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void convert(BaseViewHolder helper, WealthRankingResp.ListsBean item) {
|
||||
//数据绑定赋值
|
||||
helper.setText(R.id.room_item_seq, String.valueOf(helper.getAdapterPosition() + 4));//从第四个开始设置值
|
||||
helper.setText(R.id.room_item_name, item.getNickname());
|
||||
// ((BeautifulNameView) helper.getView(R.id.bnv_rank_list_rich)).setText(String.format(mContext.getResources().getString(R.string.common_id_formatter), item.getUser_code()));
|
||||
// ((BeautifulNameView) helper.getView(R.id.bnv_rank_list_rich)).setTextColor(!TextUtils.isEmpty(item.getId_color()) ? Color.parseColor(item.getId_color()) : mContext.getResources().getColor(R.color.color_FFCCCCCC));
|
||||
((BeautifulNameView) helper.getView(R.id.bnv_rank_list_rich)).setPlay(!TextUtils.isEmpty(item.getId_color()));
|
||||
((BeautifulNameView) helper.getView(R.id.bnv_rank_list_rich)).setImgVisible("1".equals(item.getGood_number()));
|
||||
helper.setText(R.id.room_item_pop, item.getNumber_format());
|
||||
ImageUtils.loadHeadCC(item.getHead_picture(), helper.getView(R.id.room_item_head));
|
||||
String nobility = item.getLevel_icon();//等级
|
||||
String status = item.getNobility_icon();//爵位
|
||||
ImageUtils.loadImageView(item.getNobility_icon(), helper.getView(R.id.room_item_rank));
|
||||
ImageUtils.loadImageView(item.getLevel_icon(), helper.getView(R.id.room_item_grade));
|
||||
if (TextUtils.isEmpty(nobility)) {
|
||||
helper.getView(R.id.room_item_grade).setVisibility(View.GONE);
|
||||
} else {
|
||||
helper.getView(R.id.room_item_grade).setVisibility(View.VISIBLE);
|
||||
}
|
||||
if (TextUtils.isEmpty(status)) {
|
||||
helper.getView(R.id.room_item_rank).setVisibility(View.GONE);
|
||||
} else {
|
||||
helper.getView(R.id.room_item_rank).setVisibility(View.VISIBLE);
|
||||
}
|
||||
if (helper.getAdapterPosition() % 2 == 1) {
|
||||
helper.getView(R.id.room_item_bg).setVisibility(View.GONE);//隔开隐藏背景
|
||||
} else {
|
||||
helper.getView(R.id.room_item_bg).setVisibility(View.VISIBLE);//隔开隐藏背景
|
||||
}
|
||||
helper.addOnClickListener(R.id.room_item_head);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onViewRecycled(@NonNull BaseViewHolder holder) {
|
||||
Logger.e("onViewRecycled", "onViewRecycled");
|
||||
ImageView ivEmoji = holder.getView(R.id.room_item_head);
|
||||
ImageView ivGrade = holder.getView(R.id.room_item_grade);
|
||||
ImageView ivNobility = holder.getView(R.id.room_item_rank);
|
||||
if (ivEmoji != null) {
|
||||
ivEmoji.setImageDrawable(null);
|
||||
Glide.with(ivEmoji.getContext()).clear(ivEmoji);
|
||||
}
|
||||
if (ivGrade != null) {
|
||||
ivGrade.setImageDrawable(null);
|
||||
Glide.with(ivGrade.getContext()).clear(ivGrade);
|
||||
}
|
||||
if (ivNobility != null) {
|
||||
ivNobility.setImageDrawable(null);
|
||||
Glide.with(ivNobility.getContext()).clear(ivNobility);
|
||||
}
|
||||
super.onViewRecycled(holder);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
package com.example.moduleroom.adapter;
|
||||
|
||||
import android.view.View;
|
||||
|
||||
import com.example.moduleroom.R;
|
||||
import com.qxcm.moduleutil.bean.RelationshipBean;
|
||||
import com.qxcm.moduleutil.bean.TopRoom;
|
||||
import com.qxcm.moduleutil.utils.ImageUtils;
|
||||
import com.zhpan.bannerview.BaseBannerAdapter;
|
||||
import com.zhpan.bannerview.BaseViewHolder;
|
||||
|
||||
|
||||
public class RelationshipAdapter extends BaseBannerAdapter<RelationshipBean> {
|
||||
|
||||
private OnItemClickListener onItemClickListener;
|
||||
|
||||
public void setOnItemClickListener(OnItemClickListener listener) {
|
||||
this.onItemClickListener = listener;
|
||||
}
|
||||
@Override
|
||||
protected void bindData(BaseViewHolder<RelationshipBean> holder, RelationshipBean data, int position, int pageSize) {
|
||||
ImageUtils.loadHeadCC(data.getAvatar(), holder.itemView.findViewById(R.id.user_nav1));
|
||||
ImageUtils.loadHeadCC(data.getAvatar2(), holder.itemView.findViewById(R.id.user_nav2));
|
||||
holder.setText(R.id.tv_nickname, data.getNickname());
|
||||
holder.setText(R.id.tv_nickname2, data.getNickname2());
|
||||
holder.setText(R.id.tv_relation, data.getRelation());
|
||||
holder.setText(R.id.tv_time, data.getTime());
|
||||
|
||||
// TextView textView= holder.itemView.findViewById(R.id.tv_num);
|
||||
// TextView textView2= holder.itemView.findViewById(R.id.tv_room_name);
|
||||
//
|
||||
// textView.setText(data.getUser_list().size()+"人");
|
||||
// textView2.setText(data.getRoom_name());
|
||||
// ImageView iv = holder.itemView.findViewById(R.id.iv_play);
|
||||
// ImageUtils.loadRes(com.qxcm.moduleutil.R.drawable.voice_play, iv);
|
||||
//// }
|
||||
//
|
||||
// // 设置点击事件
|
||||
// holder.itemView.setOnClickListener(v -> {
|
||||
// if (onItemClickListener != null) {
|
||||
// onItemClickListener.onItemClick(holder.itemView, data, position);
|
||||
// }
|
||||
// });
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getLayoutId(int viewType) {
|
||||
return R.layout.item_relationship;
|
||||
}
|
||||
|
||||
public interface OnItemClickListener {
|
||||
void onItemClick(View view, TopRoom data, int position);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,121 @@
|
||||
package com.example.moduleroom.adapter;
|
||||
|
||||
import static android.view.View.GONE;
|
||||
import static android.view.View.VISIBLE;
|
||||
import static com.qxcm.moduleutil.utils.UtilConfig.getContext;
|
||||
|
||||
import android.widget.ImageView;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.chad.library.adapter.base.BaseMultiItemQuickAdapter;
|
||||
import com.chad.library.adapter.base.BaseQuickAdapter;
|
||||
import com.chad.library.adapter.base.BaseViewHolder;
|
||||
import com.example.moduleroom.R;
|
||||
import com.example.moduleroom.dialog.RoomUserInfoFragment;
|
||||
import com.qxcm.moduleutil.bean.details.BaseMultiItemEntity;
|
||||
import com.qxcm.moduleutil.bean.room.RoomOnline;
|
||||
import com.qxcm.moduleutil.bean.room.RoomOnlineBean;
|
||||
import com.qxcm.moduleutil.utils.ImageUtils;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author qx
|
||||
* @data 2025/6/23
|
||||
* @description: 在线列表适配器
|
||||
*/
|
||||
public class RoomOnlineAdapter extends BaseQuickAdapter<RoomOnlineBean, BaseViewHolder> {
|
||||
|
||||
public RoomOnlineAdapter() {
|
||||
super(R.layout.item_onlie_room);
|
||||
}
|
||||
|
||||
// 接口定义
|
||||
public interface OnJoinButtonClickListener {
|
||||
void onJoinButtonClick(RoomOnlineBean item);
|
||||
|
||||
void onUserInfoClick(RoomOnlineBean item);
|
||||
}
|
||||
|
||||
private OnJoinButtonClickListener listener;
|
||||
|
||||
public void setListener(OnJoinButtonClickListener listener) {
|
||||
this.listener = listener;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void convert(BaseViewHolder helper, RoomOnlineBean item) {
|
||||
ImageUtils.loadHeadCC(item.getAvatar(), helper.getView(R.id.like_avatar));
|
||||
helper.setText(R.id.tv_nickname, item.getNickname());
|
||||
ImageView imageView = helper.getView(R.id.im_i);
|
||||
TextView textView = helper.getView(R.id.tv_status);
|
||||
imageView.setVisibility(VISIBLE);
|
||||
if (item.getRole().equals("1")) {
|
||||
imageView.setImageResource(com.qxcm.moduleutil.R.mipmap.fangz);
|
||||
} else if (item.getRole().equals("2")) {
|
||||
imageView.setImageResource(com.qxcm.moduleutil.R.mipmap.gly);
|
||||
} else if (item.getRole().equals("3")) {
|
||||
imageView.setImageResource(com.qxcm.moduleutil.R.mipmap.zc);
|
||||
} else if (item.getRole().equals("4")) {
|
||||
helper.getView(R.id.im_i).setVisibility(GONE);
|
||||
// imageView.setImageResource(com.qxcm.moduleutil.R.mipmap.jb);
|
||||
} else {
|
||||
helper.getView(R.id.im_i).setVisibility(GONE);
|
||||
}
|
||||
// if (item.getType() == 1){
|
||||
//
|
||||
// }
|
||||
if (item.getType() == 2 && item.getType_pit() == 1){
|
||||
textView.setVisibility(GONE);
|
||||
}else {
|
||||
textView.setVisibility(VISIBLE);
|
||||
}
|
||||
|
||||
// else if (item.getType() == 2 && item.getType_pit() == 2){
|
||||
// textView.setVisibility(VISIBLE);
|
||||
// }else if (item.getType() == 1 && item.getType_pit() == 0){
|
||||
// textView.setVisibility(GONE);
|
||||
// }
|
||||
|
||||
textView.setText(item.getPit_number() != 0 ? item.getPit_number() + "号麦" : "抱麦");
|
||||
|
||||
LinearLayout llContainer = helper.getView(R.id.line);
|
||||
llContainer.removeAllViews(); // 清空旧的 ImageView
|
||||
|
||||
List<String> images = item.getIcon(); // 获取图片列表
|
||||
|
||||
for (String url : images) {
|
||||
if (url.contains("http")) {
|
||||
ImageView imageView1 = new ImageView(getContext());
|
||||
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
|
||||
getContext().getResources().getDimensionPixelSize(com.qxcm.moduleutil.R.dimen.dp_37),
|
||||
getContext().getResources().getDimensionPixelSize(com.qxcm.moduleutil.R.dimen.dp_15)
|
||||
);
|
||||
params.setMargins(0, 0, getContext().getResources().getDimensionPixelSize(com.qxcm.moduleutil.R.dimen.dp_5), 0); // 右边距
|
||||
imageView1.setLayoutParams(params);
|
||||
imageView1.setScaleType(ImageView.ScaleType.CENTER_CROP);
|
||||
|
||||
// 使用 Glide 加载图片
|
||||
ImageUtils.loadHeadCC(url, imageView1);
|
||||
|
||||
llContainer.addView(imageView1);
|
||||
}
|
||||
}
|
||||
|
||||
helper.getView(R.id.tv_status).setOnClickListener(v -> {
|
||||
if (textView.getText().toString().equals("抱麦")) {
|
||||
if (listener != null) {
|
||||
listener.onJoinButtonClick(item);
|
||||
}
|
||||
}
|
||||
});
|
||||
helper.itemView.setOnClickListener(v -> {
|
||||
if (listener != null){
|
||||
listener.onUserInfoClick(item);
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,79 @@
|
||||
package com.example.moduleroom.adapter;
|
||||
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.view.View;
|
||||
|
||||
import com.chad.library.adapter.base.BaseMultiItemQuickAdapter;
|
||||
import com.chad.library.adapter.base.BaseViewHolder;
|
||||
import com.example.moduleroom.R;
|
||||
import com.qxcm.moduleutil.bean.room.RoomSettingBean;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class RoomSettingAdapter extends BaseMultiItemQuickAdapter<RoomSettingBean, BaseViewHolder> {
|
||||
|
||||
public RoomSettingAdapter(List<RoomSettingBean> data) {
|
||||
super(data);
|
||||
addItemType(RoomSettingBean.ITEM_TYPE_DEFAULT, R.layout.item_title);
|
||||
addItemType(RoomSettingBean.ITEM_TYPE_WITH_ICON, R.layout.item_setting);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void convert(BaseViewHolder holder, RoomSettingBean item) {
|
||||
|
||||
if (item.getItemType() == RoomSettingBean.ITEM_TYPE_DEFAULT){
|
||||
holder.setVisible(R.id.tv_title, true);
|
||||
holder.setText(R.id.tv_title, item.getName());
|
||||
}else {
|
||||
holder.setText(R.id.tv_name, item.getName());
|
||||
holder.setImageResource(R.id.iv_icon, getIconResId(item.getType(),item.isStatus()));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// 根据 type 获取对应的图标资源 ID
|
||||
private int getIconResId(int type,boolean isSelected) {
|
||||
boolean b=isSelected;
|
||||
switch (type) {
|
||||
case RoomSettingBean.QXRoomSettingTypeRoomTypeSing:
|
||||
return com.qxcm.moduleutil.R.mipmap.ic_sing;
|
||||
case RoomSettingBean.QXRoomSettingTypeRoomTypeAuction:
|
||||
return com.qxcm.moduleutil.R.mipmap.ic_auction;
|
||||
case RoomSettingBean.QXRoomSettingTypeRoomTypeBoy:
|
||||
return com.qxcm.moduleutil.R.mipmap.ic_boy;
|
||||
case RoomSettingBean.QXRoomSettingTypeRoomTypeGirl:
|
||||
return com.qxcm.moduleutil.R.mipmap.ic_girl;
|
||||
// 常用工具
|
||||
case RoomSettingBean.QXRoomSettingTypeRoomSubsidy:
|
||||
return com.qxcm.moduleutil.R.mipmap.ic_subsidy;
|
||||
case RoomSettingBean.QXRoomSettingTypeRoomCompere:
|
||||
return com.qxcm.moduleutil.R.mipmap.ic_compere;
|
||||
case RoomSettingBean.QXRoomSettingTypeRoomClearMessage:
|
||||
return com.qxcm.moduleutil.R.mipmap.ic_clear_message;
|
||||
case RoomSettingBean.QXRoomSettingTypeRoomOrderMic:
|
||||
return b ? com.qxcm.moduleutil.R.mipmap.ic_order_mic_selected : com.qxcm.moduleutil.R.mipmap.ic_order_mic;
|
||||
case RoomSettingBean.QXRoomSettingTypeRoomBgMusic:
|
||||
return com.qxcm.moduleutil.R.mipmap.ic_bg_music;
|
||||
case RoomSettingBean.QXRoomSettingTypeRoomBgImage:
|
||||
return com.qxcm.moduleutil.R.mipmap.ic_bg_image;
|
||||
// 更多操作
|
||||
case RoomSettingBean.QXRoomSettingTypeRoomLeave:
|
||||
return com.qxcm.moduleutil.R.mipmap.ic_leave;
|
||||
case RoomSettingBean.QXRoomSettingTypeRoomShare:
|
||||
return com.qxcm.moduleutil.R.mipmap.ic_share;
|
||||
case RoomSettingBean.QXRoomSettingTypeRoomMyDress:
|
||||
return com.qxcm.moduleutil.R.mipmap.tiaoyint;
|
||||
case RoomSettingBean.QXRoomSettingTypeRoomSetting:
|
||||
return com.qxcm.moduleutil.R.mipmap.ic_room_setting;
|
||||
case RoomSettingBean.QXRoomSettingTypeRoomWelcome:
|
||||
return com.qxcm.moduleutil.R.mipmap.ic_welcome;
|
||||
case RoomSettingBean.QXRoomSettingTypeRoomCloseEffects:
|
||||
return b?com.qxcm.moduleutil.R.mipmap.ic_close_effects:com.qxcm.moduleutil.R.mipmap.ic_open_effects;
|
||||
case RoomSettingBean.QXRoomSettingTypeRoomReport:
|
||||
return com.qxcm.moduleutil.R.mipmap.ic_report;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,67 @@
|
||||
package com.example.moduleroom.adapter;
|
||||
|
||||
import android.util.SparseBooleanArray;
|
||||
import android.view.View;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.chad.library.adapter.base.BaseQuickAdapter;
|
||||
import com.chad.library.adapter.base.BaseViewHolder;
|
||||
import com.example.moduleroom.R;
|
||||
import com.makeramen.roundedimageview.RoundedImageView;
|
||||
import com.qxcm.moduleutil.bean.MixerResp;
|
||||
import com.qxcm.moduleutil.utils.ImageUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
*@author qx
|
||||
*@data 2025/6/22
|
||||
*@description: 混响选择
|
||||
*/
|
||||
public class TunerListAdapter extends BaseQuickAdapter<MixerResp, BaseViewHolder> {
|
||||
private int index = 0;
|
||||
private SparseBooleanArray selectedPositions = new SparseBooleanArray();
|
||||
private final List<Integer> mSelectedPositions = new ArrayList<>();
|
||||
int type;
|
||||
public TunerListAdapter(int type) {
|
||||
super(R.layout.room_rv_item_tuner);
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
public void setIndex(int index) {
|
||||
this.index = index;
|
||||
notifyDataSetChanged();
|
||||
// setIndex(0); // 默认选择第一个项
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void convert(BaseViewHolder helper, MixerResp item) {
|
||||
|
||||
int position = helper.getLayoutPosition();
|
||||
RoundedImageView rivPit = helper.getView(R.id.iv_tuner_pic);
|
||||
RoundedImageView rivPit2 = helper.getView(R.id.iv_tuner_pic2);
|
||||
View checkbox = helper.getView(R.id.v_checkbox);
|
||||
TextView tvName = helper.getView(R.id.name);
|
||||
|
||||
boolean isSelected = index == helper.getLayoutPosition();
|
||||
checkbox.setSelected(isSelected);
|
||||
|
||||
|
||||
if (type==1){
|
||||
tvName.setVisibility(View.GONE);
|
||||
rivPit.setVisibility(View.VISIBLE);
|
||||
rivPit.setImageResource(item.getImgUrtl());
|
||||
rivPit2.setVisibility(View.GONE);
|
||||
|
||||
}else {
|
||||
tvName.setVisibility(View.VISIBLE);
|
||||
tvName.setText(item.getName());
|
||||
rivPit.setVisibility(View.GONE);
|
||||
rivPit2.setVisibility(View.VISIBLE);
|
||||
rivPit2.setImageResource(item.getImgUrtl());
|
||||
}
|
||||
// 判断当前项是否被选中
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,113 @@
|
||||
package com.example.moduleroom.adapter;
|
||||
|
||||
import android.util.SparseBooleanArray;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.example.moduleroom.R;
|
||||
import com.makeramen.roundedimageview.RoundedImageView;
|
||||
import com.qxcm.moduleutil.bean.room.RoomApplyListBean;
|
||||
import com.qxcm.moduleutil.utils.ImageUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class WheatFeedingSelectAdapter extends RecyclerView.Adapter<WheatFeedingSelectAdapter.ViewHolder> {
|
||||
|
||||
private final List<RoomApplyListBean.Special> mData;
|
||||
private final List<Integer> mSelectedPositions = new ArrayList<>();
|
||||
private SparseBooleanArray selectedPositions = new SparseBooleanArray();
|
||||
public WheatFeedingSelectAdapter(List<RoomApplyListBean.Special> data) {
|
||||
this.mData = data;
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
|
||||
View view = LayoutInflater.from(parent.getContext())
|
||||
.inflate(R.layout.item_wheat_feeding_select, parent, false);
|
||||
return new ViewHolder(view);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
|
||||
RoomApplyListBean.Special item = mData.get(position);
|
||||
boolean isSelected = selectedPositions.get(position, false);
|
||||
holder.nickname.setText(item.getNickname());
|
||||
holder.jin_e.setText(item.getRank_value());
|
||||
ImageUtils.loadHeadCC(item.getAvatar(), holder.userAvatar);
|
||||
|
||||
|
||||
holder.checkbox.setSelected(isSelected);
|
||||
holder.checkbox.setOnClickListener(v -> {
|
||||
boolean newState = !isSelected;
|
||||
selectedPositions.put(position, newState);
|
||||
holder.checkbox.setSelected(newState);
|
||||
notifyItemChanged(position); // 刷新当前项
|
||||
if (newState) {
|
||||
mSelectedPositions.add(position);
|
||||
} else {
|
||||
mSelectedPositions.remove(position);
|
||||
}
|
||||
});
|
||||
holder.tv_bm.setOnClickListener(v -> {
|
||||
if (onItemClickListener != null) {
|
||||
onItemClickListener.onTvBmClick(item,position);
|
||||
}
|
||||
});
|
||||
// holder.itemView.setOnClickListener(v -> toggleSelection(position));
|
||||
|
||||
}
|
||||
public interface OnItemClickListener {
|
||||
void onTvBmClick(RoomApplyListBean.Special item,int position);
|
||||
}
|
||||
private OnItemClickListener onItemClickListener;
|
||||
public void setOnItemClickListener(OnItemClickListener listener) {
|
||||
this.onItemClickListener = listener;
|
||||
}
|
||||
|
||||
|
||||
public void toggleSelection(int position) {
|
||||
if (mSelectedPositions.contains(position)) {
|
||||
mSelectedPositions.remove(Integer.valueOf(position));
|
||||
} else {
|
||||
mSelectedPositions.add(position);
|
||||
}
|
||||
notifyItemChanged(position);
|
||||
}
|
||||
|
||||
public List<String> getSelectedItems() {
|
||||
List<String> selected = new ArrayList<>();
|
||||
for (int pos : mSelectedPositions) {
|
||||
selected.add(mData.get(pos).getUser_id());
|
||||
}
|
||||
return selected;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getItemCount() {
|
||||
return mData.size();
|
||||
}
|
||||
|
||||
static class ViewHolder extends RecyclerView.ViewHolder {
|
||||
RoundedImageView userAvatar;
|
||||
TextView nickname;
|
||||
TextView jin_e;
|
||||
TextView tv_bm;
|
||||
View checkbox ;
|
||||
|
||||
public ViewHolder(@NonNull View itemView) {
|
||||
super(itemView);
|
||||
userAvatar = itemView.findViewById(R.id.user_avatar);
|
||||
nickname = itemView.findViewById(R.id.nick_name);
|
||||
jin_e = itemView.findViewById(R.id.jin_e);
|
||||
tv_bm = itemView.findViewById(R.id.tv_bm);
|
||||
checkbox = itemView.findViewById(R.id.v_checkbox);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
package com.example.moduleroom.contacts;
|
||||
|
||||
import android.app.Activity;
|
||||
|
||||
import com.qxcm.moduleutil.activity.IPresenter;
|
||||
import com.qxcm.moduleutil.activity.IView;
|
||||
import com.qxcm.moduleutil.bean.CharmRankingResp;
|
||||
import com.qxcm.moduleutil.bean.RoomAuctionABean;
|
||||
import com.qxcm.moduleutil.bean.room.RoomAuction;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class BidListContacts {
|
||||
|
||||
public interface View extends IView<Activity> {
|
||||
void roomAuctionList(List<RoomAuction.AuctionListBean> auctionListBean);
|
||||
void setNo1(RoomAuction.AuctionListBean listsBean);
|
||||
void setNo2(RoomAuction.AuctionListBean listsBean);
|
||||
void setNo3(RoomAuction.AuctionListBean listsBean);
|
||||
void setCharmEmpty();
|
||||
|
||||
}
|
||||
|
||||
public interface IRoomPre extends IPresenter {
|
||||
void roomAuctionList(String auction_id);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
package com.example.moduleroom.contacts;
|
||||
|
||||
import android.app.Activity;
|
||||
|
||||
import com.qxcm.moduleutil.activity.IPresenter;
|
||||
import com.qxcm.moduleutil.activity.IView;
|
||||
import com.qxcm.moduleutil.bean.RoomRelationBean;
|
||||
import com.qxcm.moduleutil.bean.RoomTime;
|
||||
import com.qxcm.moduleutil.bean.RoonGiftModel;
|
||||
import com.qxcm.moduleutil.bean.room.AuctionBean;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class CardRelationshipContacts {
|
||||
public interface View extends IView<Activity> {
|
||||
void roomRelationList(List<RoomRelationBean> roomRelationBeans);
|
||||
void setGiftList(List<RoonGiftModel> roonGiftModels);
|
||||
void roomAuction(AuctionBean auctionBean);
|
||||
void roomAuctionTime(RoomTime roomTime);
|
||||
}
|
||||
public interface IRoomPre extends IPresenter {
|
||||
void roomRelationList(String type);
|
||||
|
||||
void getGiftList(String id);
|
||||
|
||||
void roomAuction(String roomId, String userId,String giftId, String relation_id, String auction_type, String time_day);
|
||||
void roomAuctionTime(String gift_id);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
package com.example.moduleroom.contacts;
|
||||
|
||||
import android.app.Activity;
|
||||
|
||||
|
||||
import com.qxcm.moduleutil.activity.IPresenter;
|
||||
import com.qxcm.moduleutil.activity.IView;
|
||||
import com.qxcm.moduleutil.bean.CharmRankingResp;
|
||||
import com.qxcm.moduleutil.bean.WealthRankingResp;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
*@author qx
|
||||
*@data 2025/6/10
|
||||
*@description: 排行榜对应的接口
|
||||
*/
|
||||
public class DataListContacts {
|
||||
|
||||
public interface View extends IView<Activity> {
|
||||
|
||||
//榜一更新
|
||||
void setNo1(CharmRankingResp.ListsBean listsBean);
|
||||
void setNo1(WealthRankingResp.ListsBean listsBean);
|
||||
|
||||
//榜二更新
|
||||
void setNo2(CharmRankingResp.ListsBean listsBean);
|
||||
void setNo2(WealthRankingResp.ListsBean listsBean);
|
||||
|
||||
//榜三更新
|
||||
void setNo3(CharmRankingResp.ListsBean listsBean);
|
||||
void setNo3(WealthRankingResp.ListsBean listsBean);
|
||||
|
||||
//魅力榜和魅力榜界面更新
|
||||
void setCharmView(List<CharmRankingResp.ListsBean> listsBeans);
|
||||
void setWealthView(List<WealthRankingResp.ListsBean> listsBeans);
|
||||
|
||||
void setCharmEmpty();
|
||||
|
||||
void setWealthEmpty();
|
||||
}
|
||||
public interface IRoomDataListPre extends IPresenter {
|
||||
|
||||
//定义魅力榜数据访问接口
|
||||
void getCharmListInfo(String roomId,int type);
|
||||
|
||||
//定义财富榜数据访问接口
|
||||
void getWealthListInfo(String roomId,int type);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package com.example.moduleroom.contacts;
|
||||
|
||||
import android.app.Activity;
|
||||
|
||||
import com.qxcm.moduleutil.activity.IPresenter;
|
||||
import com.qxcm.moduleutil.activity.IView;
|
||||
|
||||
public class PkTimeContract {
|
||||
public interface View extends IView<Activity> {
|
||||
void startPk();
|
||||
}
|
||||
|
||||
public interface IRoomPre extends IPresenter {
|
||||
void startPk(String pk_id,String pk_times);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package com.example.moduleroom.contacts;
|
||||
|
||||
import android.app.Activity;
|
||||
|
||||
import com.qxcm.moduleutil.activity.IPresenter;
|
||||
import com.qxcm.moduleutil.activity.IView;
|
||||
|
||||
public class PublishCommentContacts {
|
||||
public interface View extends IView<Activity> {
|
||||
|
||||
}
|
||||
public interface IRoomPre extends IPresenter {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
package com.example.moduleroom.contacts;
|
||||
|
||||
import android.app.Activity;
|
||||
|
||||
import com.qxcm.moduleutil.activity.IPresenter;
|
||||
import com.qxcm.moduleutil.activity.IView;
|
||||
import com.qxcm.moduleutil.bean.MusicSongBean;
|
||||
import com.qxcm.moduleutil.bean.SongMusicBean;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import io.agora.musiccontentcenter.Music;
|
||||
|
||||
public class RequestContacts {
|
||||
public interface View extends IView<Activity> {
|
||||
void songList(List<MusicSongBean> musicSongBeans);
|
||||
|
||||
void upSong(String s);
|
||||
|
||||
void song(List<SongMusicBean> music);
|
||||
|
||||
}
|
||||
public interface IRoomPre extends IPresenter {
|
||||
void songList(String roomId);
|
||||
|
||||
void upSong(String did,String type);
|
||||
|
||||
void song(String roomId,String user_id,String song_code,String song_name,String singer,String poster,String duration);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
package com.example.moduleroom.contacts;
|
||||
|
||||
import android.app.Activity;
|
||||
|
||||
import com.qxcm.moduleutil.activity.IPresenter;
|
||||
import com.qxcm.moduleutil.activity.IView;
|
||||
import com.qxcm.moduleutil.bean.RoomTime;
|
||||
import com.qxcm.moduleutil.bean.room.AuctionBean;
|
||||
|
||||
public class RoomAuctionContacts {
|
||||
public interface View extends IView<Activity> {
|
||||
void applyPit();
|
||||
|
||||
void roomAuction(AuctionBean auctionBean);
|
||||
|
||||
void auctionDelay();
|
||||
void auctionEnd();
|
||||
void auctionMode();
|
||||
}
|
||||
|
||||
public interface IRoomDataListPre extends IPresenter {
|
||||
void applyPit(String roomId, String pitNumber);
|
||||
|
||||
void roomAuction(String roomId, String userId,String giftId, String relation_id, String auction_type, String time_day);
|
||||
|
||||
void auctionDelay(String auctionId);
|
||||
void auctionEnd(String auctionId);
|
||||
|
||||
void auctionMode(String roomId,String labelId);
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
package com.example.moduleroom.contacts;
|
||||
|
||||
import android.app.Activity;
|
||||
|
||||
import com.qxcm.moduleutil.activity.IPresenter;
|
||||
import com.qxcm.moduleutil.activity.IView;
|
||||
import com.qxcm.moduleutil.bean.RoomBgBean;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.List;
|
||||
|
||||
public class RoomBackgroundContacts {
|
||||
public interface View extends IView<Activity> {
|
||||
void getBackgroundList(RoomBgBean list);
|
||||
void upLoadSuccess(String url, int type, int index, int total);
|
||||
void uploadBgImage();
|
||||
void editRoom();
|
||||
}
|
||||
|
||||
public interface RoomBackgroudPre extends IPresenter {
|
||||
void getBackgroundList();
|
||||
|
||||
void uploadFile(File file, int type, int index, int sice);
|
||||
|
||||
void uploadBgImage(String id, String image_url);
|
||||
|
||||
void editRoom(String room_id, String room_name, String room_cover, String room_intro,String room_background_id);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package com.example.moduleroom.contacts;
|
||||
|
||||
import android.app.Activity;
|
||||
|
||||
import com.qxcm.moduleutil.activity.IPresenter;
|
||||
import com.qxcm.moduleutil.activity.IView;
|
||||
|
||||
public class RoomCabinContacts {
|
||||
|
||||
public interface View extends IView<Activity> {
|
||||
void quitRoom();
|
||||
}
|
||||
|
||||
public interface IRoomPre extends IPresenter {
|
||||
void quitRoom(String roomId, String userId);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,8 +4,64 @@ import android.app.Activity;
|
||||
|
||||
import com.qxcm.moduleutil.activity.IPresenter;
|
||||
import com.qxcm.moduleutil.activity.IView;
|
||||
import com.qxcm.moduleutil.bean.RoomCharmRankBean;
|
||||
import com.qxcm.moduleutil.bean.room.RoomInfoResp;
|
||||
import com.qxcm.moduleutil.bean.room.RoomOnline;
|
||||
import com.qxcm.moduleutil.bean.room.RoomOnlineBean;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class RoomContacts {
|
||||
public interface View extends IView<Activity> {}
|
||||
public interface IRoomPre extends IPresenter {}
|
||||
public interface View extends IView<Activity> {
|
||||
void roomInfo(RoomInfoResp resp);
|
||||
void showPasswordDialog();
|
||||
void enterFail();
|
||||
void getRoomOnline(RoomOnline onlineBean);
|
||||
void applyPit();
|
||||
void downPit();
|
||||
|
||||
void applySong();
|
||||
|
||||
void agreeSong();
|
||||
void postRoomInfo(RoomInfoResp resp);
|
||||
void getCharmRank(List<RoomCharmRankBean> list);
|
||||
|
||||
void changeSong();
|
||||
|
||||
void hostUserPit();
|
||||
|
||||
void quitRoom();
|
||||
|
||||
void userGuanzSuccess(String s);
|
||||
void acceptPk();
|
||||
}
|
||||
public interface IRoomPre extends IPresenter {
|
||||
void getRoomIn(String roomId, String password);//加入房间
|
||||
|
||||
void getRoomOnline(String roomId,String page, String page_limit);
|
||||
|
||||
void applyPit(String roomId, String pitNumber);
|
||||
|
||||
void downPit(String roomId, String pitNumber);
|
||||
|
||||
void applySong(String roomId);
|
||||
|
||||
void agreeSong(String roomId,String type);//申请点唱模式 type:1同意 2拒绝
|
||||
|
||||
void endSong(String roomId);
|
||||
|
||||
void postRoomInfo(String roomId);
|
||||
|
||||
void getCharmRank(String roomId);
|
||||
|
||||
void changeSong(String roomId,String now_did);
|
||||
|
||||
void hostUserPit(String roomId,String pitNumber,String userId,String type);
|
||||
|
||||
void quitRoom(String roomId,String userId);
|
||||
|
||||
void userGuanz(String userId,String type);
|
||||
|
||||
void acceptPk(String pkId,String type);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
package com.example.moduleroom.contacts;
|
||||
|
||||
import android.app.Activity;
|
||||
|
||||
|
||||
import com.qxcm.moduleutil.activity.IPresenter;
|
||||
import com.qxcm.moduleutil.activity.IView;
|
||||
import com.qxcm.moduleutil.bean.HostBean;
|
||||
import com.qxcm.moduleutil.bean.RoomHostUserBean;
|
||||
import com.qxcm.moduleutil.bean.RoomSearchResp;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class RoomHostContacts {
|
||||
|
||||
public interface View extends IView<Activity> {
|
||||
void setHostrList(List<HostBean> list);
|
||||
|
||||
void getUserHostList(List<RoomSearchResp> list);
|
||||
|
||||
void postHostAdd(String s,String type,String is_add);
|
||||
|
||||
void postPresidedRatio(String s);
|
||||
|
||||
void postPresidedDel(String s);
|
||||
void doDismiss();
|
||||
}
|
||||
|
||||
public interface IRoomToolPre extends IPresenter {
|
||||
void clearHostList(String roomId,String type);
|
||||
|
||||
void setUserHostList(String roomId,String type);
|
||||
void setPresidedRatio(String room_id,String id, String ratio);
|
||||
|
||||
void postHostAdd(String roomId, String userId,String type,String is_add);
|
||||
|
||||
// void presidedDel(String id);
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
package com.example.moduleroom.contacts;
|
||||
|
||||
import android.app.Activity;
|
||||
|
||||
import com.qxcm.moduleutil.activity.IPresenter;
|
||||
import com.qxcm.moduleutil.activity.IView;
|
||||
|
||||
|
||||
public final class RoomPasswordSetContacts {
|
||||
|
||||
|
||||
public interface View extends IView<Activity> {
|
||||
void roomPasswordSettingSuccess();
|
||||
}
|
||||
|
||||
public interface IRoomPasswordSetPre extends IPresenter {
|
||||
void setRoomPassword(String roomId, String password);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
package com.example.moduleroom.contacts;
|
||||
|
||||
import android.app.Activity;
|
||||
|
||||
import com.qxcm.moduleutil.activity.IPresenter;
|
||||
import com.qxcm.moduleutil.activity.IView;
|
||||
import com.qxcm.moduleutil.bean.room.RoomBean;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class RoomPkContacts {
|
||||
public interface View extends IView<Activity> {
|
||||
void searchPkRoom(List<RoomBean> roomBeans);
|
||||
|
||||
void sendPk();
|
||||
void refusePk();
|
||||
}
|
||||
public interface IRoomPre extends IPresenter {
|
||||
void searchPkRoom(String roomId,String page,String limit);
|
||||
|
||||
void sendPk(String roomIda,String createUserId, String roomIdb);
|
||||
|
||||
void refusePk(String roomId,String is_pk);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
package com.example.moduleroom.contacts;
|
||||
|
||||
import android.app.Activity;
|
||||
|
||||
import com.qxcm.moduleutil.activity.IPresenter;
|
||||
import com.qxcm.moduleutil.activity.IView;
|
||||
import com.qxcm.moduleutil.bean.room.RoomSettingBean;
|
||||
|
||||
public class RoomSettingContacts {
|
||||
public interface View extends IView<Activity> {
|
||||
void changeRoomSuccess(String s,int position,RoomSettingBean bean);
|
||||
|
||||
void changeRoomType(String s);
|
||||
}
|
||||
|
||||
public interface IRoomPre extends IPresenter {
|
||||
|
||||
void changeRoom(String roomId, String userId, int position, RoomSettingBean bean);
|
||||
|
||||
void changeRoomType(String roomId,String type);//修改房间类型 type:1点唱、2拍卖、3男神、4女神
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
package com.example.moduleroom.contacts;
|
||||
|
||||
import android.app.Activity;
|
||||
|
||||
import com.qxcm.moduleutil.activity.IPresenter;
|
||||
import com.qxcm.moduleutil.activity.IView;
|
||||
import com.qxcm.moduleutil.bean.UserInfo;
|
||||
|
||||
public class RoomUserContacts {
|
||||
public interface View extends IView<Activity> {
|
||||
void getRoomUserInfo(UserInfo userInfo);
|
||||
|
||||
void downPit();
|
||||
|
||||
void kickOutRoom();
|
||||
void postHostAdd(String s,String type,String is_add);
|
||||
void setMutePit(String pitNumber, String is_mute);
|
||||
void addBlackList();
|
||||
void userGuanzSuccess(String s);
|
||||
void hostUserPit();
|
||||
}
|
||||
|
||||
public interface IEmotionRoomPre extends IPresenter {
|
||||
void getRoomUserInfo(String roomId,String userId);
|
||||
|
||||
void downPit(String roomId, String pitNumber);//下麦
|
||||
|
||||
void kickOutRoom(String roomId, String userId);
|
||||
|
||||
void postHostAdd(String roomId, String userId,String type,String is_add);
|
||||
|
||||
void setMutePit(String roomId, String pitNumber,String is_mute);// 禁言 禁麦 \解禁
|
||||
|
||||
void addBlackList(String userId);
|
||||
void userGuanz(String userId,String type);
|
||||
|
||||
void hostUserPit(String roomId,String pitNumber,String userId,String type);
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@@ -4,13 +4,29 @@ import android.app.Activity;
|
||||
|
||||
import com.qxcm.moduleutil.activity.IPresenter;
|
||||
import com.qxcm.moduleutil.activity.IView;
|
||||
import com.qxcm.moduleutil.bean.room.RoomInfoResp;
|
||||
|
||||
public class SingSongContacts {
|
||||
public interface View extends IView<Activity> {
|
||||
void applyPit();
|
||||
void setMutePit(String pitNumber, String is_mute);
|
||||
void setLockPit(String pitNumber, String is_lock);
|
||||
|
||||
void postRoomInfo(RoomInfoResp resp);
|
||||
void postRoomInfoPk(RoomInfoResp resp);
|
||||
|
||||
void endPk();
|
||||
}
|
||||
|
||||
public interface IEmotionRoomPre extends IPresenter {
|
||||
void applyPit(String roomId, String pitNumber);
|
||||
|
||||
void setMutePit(String roomId, String pitNumber,String is_mute);//禁麦
|
||||
|
||||
void setLockPit(String roomId, String pitNumber, String is_lock);
|
||||
|
||||
void postRoomInfo(String roomId,String number,int type);
|
||||
|
||||
void endPk(String pk_id,String type,String user_id);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
package com.example.moduleroom.contacts;
|
||||
|
||||
import android.app.Activity;
|
||||
|
||||
import com.qxcm.moduleutil.activity.IPresenter;
|
||||
import com.qxcm.moduleutil.activity.IView;
|
||||
import com.qxcm.moduleutil.bean.room.RoomApplyListBean;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class WheatContacts {
|
||||
public interface View extends IView<Activity> {
|
||||
void roomApplyListBean(RoomApplyListBean roomApplyListBeans);
|
||||
void clearApply();
|
||||
void agreePit();
|
||||
void applyPit();
|
||||
}
|
||||
|
||||
public interface IRoomPre extends IPresenter {
|
||||
void roomApplyListBean(String roomId);
|
||||
|
||||
void clearApply(String roomId);//清空申请上面列表
|
||||
|
||||
void agreePit(String roomId,String userId);//同意上麦
|
||||
|
||||
void refusePit(String roomId,String userId);//拒绝上麦
|
||||
|
||||
void helpApply(String roomId,String userId);
|
||||
|
||||
void applyPit(String roomId, String pitNumber);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,177 @@
|
||||
package com.example.moduleroom.dialog;
|
||||
|
||||
import static com.qxcm.moduleutil.utils.UtilConfig.getContext;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.view.Gravity;
|
||||
import android.view.Window;
|
||||
import android.view.WindowManager;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.LinearLayout;
|
||||
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
|
||||
import com.example.moduleroom.R;
|
||||
import com.example.moduleroom.adapter.RankingAutcionAdapter;
|
||||
import com.example.moduleroom.adapter.RankingCharmListAdapter;
|
||||
import com.example.moduleroom.contacts.BidListContacts;
|
||||
import com.example.moduleroom.databinding.DialogRoomBidListBinding;
|
||||
import com.example.moduleroom.fragment.RoomChartsFragment;
|
||||
import com.example.moduleroom.presenter.BidListPresenter;
|
||||
import com.qxcm.moduleutil.base.BaseMvpDialogFragment;
|
||||
import com.qxcm.moduleutil.bean.room.RoomAuction;
|
||||
import com.qxcm.moduleutil.utils.ImageUtils;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
*@author qx
|
||||
*@data 2025/6/28
|
||||
*@description: 出价榜单
|
||||
*/
|
||||
public class BidListDialogFragment extends BaseMvpDialogFragment<BidListPresenter, DialogRoomBidListBinding> implements BidListContacts.View {
|
||||
private RankingAutcionAdapter cAdapter;//魅力适配器
|
||||
|
||||
@Override
|
||||
protected BidListPresenter bindPresenter() {
|
||||
return new BidListPresenter( this, getActivity());
|
||||
}
|
||||
public static BidListDialogFragment newInstance(String auction_id) {
|
||||
BidListDialogFragment roomRankingFragment = new BidListDialogFragment();
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putString("auction_id", auction_id);
|
||||
roomRankingFragment.setArguments(bundle);
|
||||
return roomRankingFragment;
|
||||
}
|
||||
@Override
|
||||
protected void initData() {
|
||||
MvpPre.roomAuctionList(getArguments().getString("auction_id"));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initView() {
|
||||
cAdapter = new RankingAutcionAdapter();
|
||||
mBinding.rankRecycleView.setLayoutManager(new LinearLayoutManager(getContext()));
|
||||
mBinding.rankRecycleView.setAdapter(cAdapter);
|
||||
cAdapter.bindToRecyclerView(mBinding.rankRecycleView);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getLayoutId() {
|
||||
return R.layout.dialog_room_bid_list;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initDialogStyle(Window window) {
|
||||
super.initDialogStyle(window);
|
||||
window.setGravity(Gravity.BOTTOM);
|
||||
WindowManager.LayoutParams lp = window.getAttributes();
|
||||
lp.dimAmount = 0.4f;
|
||||
int screenHeight = getResources().getDisplayMetrics().heightPixels;
|
||||
lp.height = (int) (screenHeight * 0.8f); // 80% 高度
|
||||
lp.width = WindowManager.LayoutParams.MATCH_PARENT; // 宽度撑满
|
||||
window.setAttributes(lp);
|
||||
window.addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void roomAuctionList(List<RoomAuction.AuctionListBean> auctionListBean) {
|
||||
cAdapter.setNewData(auctionListBean);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setNo1(RoomAuction.AuctionListBean listsBean) {
|
||||
ImageUtils.loadHeadCC(listsBean.getAvatar(), mBinding.roomRankTop1HeadIcon);
|
||||
mBinding.roomTop1Name.setText(listsBean.getNickname());
|
||||
LinearLayout llContainer =mBinding.llVip1;
|
||||
llContainer.removeAllViews(); // 清空旧的 ImageView
|
||||
|
||||
List<String> images = listsBean.getIcon(); // 获取图片列表
|
||||
|
||||
for (String url : images) {
|
||||
if (url.contains("http")) {
|
||||
ImageView imageView1 = new ImageView(getContext());
|
||||
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
|
||||
getContext().getResources().getDimensionPixelSize(com.qxcm.moduleutil.R.dimen.dp_37),
|
||||
getContext().getResources().getDimensionPixelSize(com.qxcm.moduleutil.R.dimen.dp_15)
|
||||
);
|
||||
params.setMargins(0, 0, getContext().getResources().getDimensionPixelSize(com.qxcm.moduleutil.R.dimen.dp_5), 0); // 右边距
|
||||
imageView1.setLayoutParams(params);
|
||||
imageView1.setScaleType(ImageView.ScaleType.CENTER_CROP);
|
||||
|
||||
// 使用 Glide 加载图片
|
||||
ImageUtils.loadHeadCC(url, imageView1);
|
||||
|
||||
llContainer.addView(imageView1);
|
||||
}
|
||||
}
|
||||
|
||||
mBinding.roomHeadTop1Label.setText(listsBean.getGift_price());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setNo2(RoomAuction.AuctionListBean listsBean) {
|
||||
ImageUtils.loadHeadCC(listsBean.getAvatar(), mBinding.roomRankTop2HeadIcon);
|
||||
mBinding.roomTop2Name.setText(listsBean.getNickname());
|
||||
LinearLayout llContainer =mBinding.llVip2;
|
||||
llContainer.removeAllViews(); // 清空旧的 ImageView
|
||||
|
||||
List<String> images = listsBean.getIcon(); // 获取图片列表
|
||||
|
||||
for (String url : images) {
|
||||
if (url.contains("http")) {
|
||||
ImageView imageView1 = new ImageView(getContext());
|
||||
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
|
||||
getContext().getResources().getDimensionPixelSize(com.qxcm.moduleutil.R.dimen.dp_37),
|
||||
getContext().getResources().getDimensionPixelSize(com.qxcm.moduleutil.R.dimen.dp_15)
|
||||
);
|
||||
params.setMargins(0, 0, getContext().getResources().getDimensionPixelSize(com.qxcm.moduleutil.R.dimen.dp_5), 0); // 右边距
|
||||
imageView1.setLayoutParams(params);
|
||||
imageView1.setScaleType(ImageView.ScaleType.CENTER_CROP);
|
||||
|
||||
// 使用 Glide 加载图片
|
||||
ImageUtils.loadHeadCC(url, imageView1);
|
||||
|
||||
llContainer.addView(imageView1);
|
||||
}
|
||||
}
|
||||
|
||||
mBinding.roomHeadTop2Label.setText(listsBean.getGift_price());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setNo3(RoomAuction.AuctionListBean listsBean) {
|
||||
ImageUtils.loadHeadCC(listsBean.getAvatar(), mBinding.roomRankTop3HeadIcon);
|
||||
mBinding.roomTop3Name.setText(listsBean.getNickname());
|
||||
LinearLayout llContainer =mBinding.llVip3;
|
||||
llContainer.removeAllViews(); // 清空旧的 ImageView
|
||||
|
||||
List<String> images = listsBean.getIcon(); // 获取图片列表
|
||||
|
||||
for (String url : images) {
|
||||
if (url.contains("http")) {
|
||||
ImageView imageView1 = new ImageView(getContext());
|
||||
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
|
||||
getContext().getResources().getDimensionPixelSize(com.qxcm.moduleutil.R.dimen.dp_37),
|
||||
getContext().getResources().getDimensionPixelSize(com.qxcm.moduleutil.R.dimen.dp_15)
|
||||
);
|
||||
params.setMargins(0, 0, getContext().getResources().getDimensionPixelSize(com.qxcm.moduleutil.R.dimen.dp_5), 0); // 右边距
|
||||
imageView1.setLayoutParams(params);
|
||||
imageView1.setScaleType(ImageView.ScaleType.CENTER_CROP);
|
||||
|
||||
// 使用 Glide 加载图片
|
||||
ImageUtils.loadHeadCC(url, imageView1);
|
||||
|
||||
llContainer.addView(imageView1);
|
||||
}
|
||||
}
|
||||
|
||||
mBinding.roomHeadTop3Label.setText(listsBean.getGift_price());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setCharmEmpty() {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,238 @@
|
||||
package com.example.moduleroom.dialog;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
import android.view.Gravity;
|
||||
import android.view.View;
|
||||
import android.view.Window;
|
||||
import android.view.WindowManager;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.fragment.app.DialogFragment;
|
||||
import androidx.fragment.app.FragmentManager;
|
||||
import androidx.recyclerview.widget.GridLayoutManager;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.example.moduleroom.R;
|
||||
import com.example.moduleroom.adapter.CardRelationAdapter;
|
||||
import com.example.moduleroom.contacts.CardRelationshipContacts;
|
||||
import com.example.moduleroom.databinding.DialogCardRelationBinding;
|
||||
import com.example.moduleroom.presenter.CardRelationshipPresenter;
|
||||
import com.hjq.toast.ToastUtils;
|
||||
import com.qxcm.moduleutil.RoomAutionTimeBean;
|
||||
import com.qxcm.moduleutil.base.BaseMvpDialogFragment;
|
||||
import com.qxcm.moduleutil.bean.RoomAuctionABean;
|
||||
import com.qxcm.moduleutil.bean.RoomRelationBean;
|
||||
import com.qxcm.moduleutil.bean.RoomTime;
|
||||
import com.qxcm.moduleutil.bean.RoonGiftModel;
|
||||
import com.qxcm.moduleutil.bean.ViewItem;
|
||||
import com.qxcm.moduleutil.bean.room.AuctionBean;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
*@author qx
|
||||
*@data 2025/6/28
|
||||
*@description: 卡关系弹框
|
||||
*/
|
||||
public class CardRelationshipFragment extends BaseMvpDialogFragment<CardRelationshipPresenter, DialogCardRelationBinding> implements CardRelationshipContacts.View{
|
||||
|
||||
private String type;
|
||||
private String roomId;
|
||||
private String userId;
|
||||
private CardRelationAdapter adapter;
|
||||
private List<ViewItem> viewItems = new ArrayList<>();
|
||||
|
||||
private RoomAuctionABean roomAuctionABean;
|
||||
RoomRelationBean roomRelationBean;
|
||||
RoomAutionTimeBean roomAutionTimeBean;
|
||||
RoonGiftModel roonGiftModel;
|
||||
|
||||
@Override
|
||||
protected CardRelationshipPresenter bindPresenter() {
|
||||
return new CardRelationshipPresenter(this, getActivity());
|
||||
}
|
||||
|
||||
|
||||
public static void show(String roomId, String userId,String type, FragmentManager fragmentManager) {
|
||||
CardRelationshipFragment dialogFragment = new CardRelationshipFragment();
|
||||
Bundle args = new Bundle();
|
||||
args.putString("roomId", roomId);
|
||||
args.putString("userId", userId);
|
||||
args.putString("type", type);
|
||||
dialogFragment.setArguments(args);
|
||||
dialogFragment.show(fragmentManager, "PublishCommentDialogFragment");
|
||||
}
|
||||
@Override
|
||||
public void onAttach(@NonNull Context context) {
|
||||
super.onAttach(context);
|
||||
type = getArguments().getString("type");
|
||||
roomId = getArguments().getString("roomId");
|
||||
userId = getArguments().getString("userId");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initData() {
|
||||
MvpPre.roomRelationList(type);
|
||||
|
||||
}
|
||||
@Override
|
||||
public void onStart() {
|
||||
super.onStart();
|
||||
Window window = getDialog().getWindow();
|
||||
if (window != null) {
|
||||
// 设置固定高度为 500dp
|
||||
int screenHeight = getResources().getDisplayMetrics().heightPixels;
|
||||
int heightInDp = (int) (screenHeight * 0.6f);;
|
||||
int heightInPx = (int) heightInDp;
|
||||
window.setLayout(WindowManager.LayoutParams.MATCH_PARENT, heightInPx);
|
||||
|
||||
// 可选:设置动画样式(从底部弹出)
|
||||
window.setWindowAnimations(com.qxcm.moduleutil.R.style.CommonShowDialogBottom);
|
||||
}
|
||||
}
|
||||
@Override
|
||||
protected void initDialogStyle(Window window) {
|
||||
super.initDialogStyle(window);
|
||||
window.setGravity(Gravity.BOTTOM);
|
||||
setStyle(DialogFragment.STYLE_NORMAL, com.qxcm.moduleutil.R.style.CustomDialogFragmentTheme);
|
||||
}
|
||||
@Override
|
||||
protected void initView() {
|
||||
RecyclerView recyclerView = mBinding.recycleView;
|
||||
GridLayoutManager layoutManager = new GridLayoutManager(requireContext(), 4); // 最大支持 4 列
|
||||
recyclerView.setLayoutManager(layoutManager);
|
||||
// 设置 SpanSizeLookup 控制不同 item 占据的列数
|
||||
layoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
|
||||
@Override
|
||||
public int getSpanSize(int position) {
|
||||
int viewType = adapter.getItemViewType(position);
|
||||
switch (viewType) {
|
||||
case ViewItem.TYPE_TEXT: // 文本占满整行
|
||||
return 4;
|
||||
case ViewItem.TYPE_RELATION: // 每行 2 个
|
||||
return 1;
|
||||
case ViewItem.TYPE_GIFT: // 每行 3 个
|
||||
return 1; // 3 个时,总列数 3,则每项占 1 列;若总列数为 4,则需调整
|
||||
case ViewItem.TYPE_IMAGE_SELECTION: // 每行 4 个
|
||||
return 1;
|
||||
default:
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
});
|
||||
adapter = new CardRelationAdapter();
|
||||
recyclerView.setAdapter(adapter);
|
||||
roomAuctionABean=new RoomAuctionABean();
|
||||
|
||||
// 模拟从网络获取 RoomAuctionABean 数据
|
||||
|
||||
// 构建 ViewItem 列表
|
||||
|
||||
mBinding.tvWheatQd.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
roomRelationBean = adapter.getSelectedRelation();
|
||||
roomAutionTimeBean = adapter.getSelectedTime();
|
||||
roonGiftModel = adapter.getSelectedGift();
|
||||
if (type.equals("2")){
|
||||
if (roomRelationBean != null && roomAutionTimeBean != null && roonGiftModel != null) {
|
||||
// 创建一个 RoomAuctionABean 对象
|
||||
MvpPre.roomAuction(roomId, userId, roonGiftModel.getGift_id(), roomRelationBean.getRelation_id(), "2", roomAutionTimeBean.getHours()+"");
|
||||
}else {
|
||||
ToastUtils.show("请选择竞拍信息");
|
||||
}
|
||||
}else {
|
||||
if (roomRelationBean != null&& roonGiftModel != null){
|
||||
|
||||
MvpPre.roomAuctionTime(roonGiftModel.getGift_id());
|
||||
|
||||
}else {
|
||||
ToastUtils.show("请选择竞拍信息");
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getLayoutId() {
|
||||
return R.layout.dialog_card_relation;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void roomRelationList(List<RoomRelationBean> roomRelationBeans) {
|
||||
if (roomRelationBeans!=null) {
|
||||
roomAuctionABean.setRoomRelationBeanList(roomRelationBeans);
|
||||
MvpPre.getGiftList("99");
|
||||
}else {
|
||||
ToastUtils.show("数据接口错误");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setGiftList(List<RoonGiftModel> roonGiftModels) {
|
||||
if (roonGiftModels!=null) {
|
||||
roomAuctionABean.setRoomGiftBeanList(roonGiftModels);
|
||||
upList();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void roomAuction(AuctionBean auctionBean) {
|
||||
dismiss();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void roomAuctionTime(RoomTime roomTime) {
|
||||
MvpPre.roomAuction(roomId, userId, roonGiftModel.getGift_id(), roomRelationBean.getRelation_id(), "1", roomTime.getTime_day());
|
||||
|
||||
}
|
||||
|
||||
|
||||
private void upList(){
|
||||
if (roomAuctionABean != null) {
|
||||
// 添加文本项
|
||||
viewItems.add(new ViewItem(ViewItem.TYPE_TEXT, "选择关系"));
|
||||
|
||||
// 添加关系列表
|
||||
for (RoomRelationBean bean : roomAuctionABean.getRoomRelationBeanList()) {
|
||||
viewItems.add(new ViewItem(ViewItem.TYPE_RELATION, bean));
|
||||
}
|
||||
|
||||
if (type.equals("2")){
|
||||
viewItems.add(new ViewItem(ViewItem.TYPE_TEXT, "选择时长"));
|
||||
for (RoomAutionTimeBean bean : getDefaultTimeOptions()) {
|
||||
viewItems.add(new ViewItem(ViewItem.TYPE_IMAGE_SELECTION, bean));
|
||||
}
|
||||
}
|
||||
|
||||
viewItems.add(new ViewItem(ViewItem.TYPE_TEXT, "选择礼物"));
|
||||
// 添加礼物列表
|
||||
for (RoonGiftModel bean : roomAuctionABean.getRoomGiftBeanList()) {
|
||||
viewItems.add(new ViewItem(ViewItem.TYPE_GIFT, bean));
|
||||
}
|
||||
|
||||
adapter.submitList(viewItems);
|
||||
}
|
||||
}
|
||||
|
||||
public static List<RoomAutionTimeBean> getDefaultTimeOptions() {
|
||||
List<RoomAutionTimeBean> list = new ArrayList<>();
|
||||
list.add(new RoomAutionTimeBean(1));
|
||||
list.add(new RoomAutionTimeBean(3));
|
||||
list.add(new RoomAutionTimeBean(5));
|
||||
list.add(new RoomAutionTimeBean(10));
|
||||
list.add(new RoomAutionTimeBean(15));
|
||||
list.add(new RoomAutionTimeBean(20));
|
||||
list.add(new RoomAutionTimeBean(25));
|
||||
list.add(new RoomAutionTimeBean(30));
|
||||
return list;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,100 @@
|
||||
package com.example.moduleroom.dialog;
|
||||
|
||||
import android.app.Dialog;
|
||||
import android.content.Context;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.drawable.ColorDrawable;
|
||||
import android.os.Bundle;
|
||||
import android.view.Gravity;
|
||||
import android.view.Window;
|
||||
import android.view.WindowManager;
|
||||
import android.view.animation.Animation;
|
||||
import android.view.animation.AnimationUtils;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.fragment.app.DialogFragment;
|
||||
import androidx.fragment.app.FragmentManager;
|
||||
|
||||
import com.example.moduleroom.R;
|
||||
import com.qxcm.moduleutil.bean.room.RoomAuction;
|
||||
import com.qxcm.moduleutil.bean.room.RoomInfoResp;
|
||||
import com.qxcm.moduleutil.utils.ImageUtils;
|
||||
import com.qxcm.moduleutil.widget.GifAvatarOvalView;
|
||||
|
||||
public class CustomCenterDialogFragment extends DialogFragment {
|
||||
|
||||
private int animStyle = com.qxcm.moduleutil.R.anim.anim_scale_in; // 默认使用透明度动画
|
||||
|
||||
RoomAuction.AuctionListBean recipient;
|
||||
RoomAuction.AuctionUserBean auction_user;
|
||||
private OnDialogActionListener listener;
|
||||
GifAvatarOvalView avatar1;
|
||||
GifAvatarOvalView avatar2;
|
||||
private TextView tv_tname;
|
||||
private TextView tv_name1;
|
||||
private TextView tv_name2;
|
||||
|
||||
public interface OnDialogActionListener {
|
||||
void onKnowClicked();
|
||||
}
|
||||
|
||||
public static void show(RoomAuction.AuctionListBean recipient,RoomAuction.AuctionUserBean auction_user, FragmentManager fragmentManager) {
|
||||
CustomCenterDialogFragment fragment = new CustomCenterDialogFragment();
|
||||
Bundle args = new Bundle();
|
||||
args.putSerializable("recipient", recipient);
|
||||
args.putSerializable("auction_user", auction_user);
|
||||
fragment.setArguments(args);
|
||||
fragment.show(fragmentManager, "CustomCenterDialogFragment");
|
||||
}
|
||||
public void setAnimationStyle(int animStyle) {
|
||||
this.animStyle = animStyle;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAttach(@NonNull Context context) {
|
||||
super.onAttach(context);
|
||||
recipient = (RoomAuction.AuctionListBean) getArguments().getSerializable("recipient");
|
||||
auction_user = (RoomAuction.AuctionUserBean) getArguments().getSerializable("auction_user");
|
||||
}
|
||||
|
||||
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public Dialog onCreateDialog(Bundle savedInstanceState) {
|
||||
Dialog dialog = new Dialog(requireContext());
|
||||
dialog.setContentView(R.layout.dialog_room_auction);
|
||||
|
||||
Window window = dialog.getWindow();
|
||||
if (window != null) {
|
||||
window.setLayout(WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.WRAP_CONTENT);
|
||||
window.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
|
||||
window.setGravity(Gravity.CENTER);
|
||||
}
|
||||
|
||||
avatar1= dialog.findViewById(R.id.avatar1);
|
||||
avatar2= dialog.findViewById(R.id.avatar2);
|
||||
tv_name1= dialog.findViewById(R.id.tv_name1);
|
||||
tv_name2= dialog.findViewById(R.id.tv_name2);
|
||||
tv_tname= dialog.findViewById(R.id.tv_tname);
|
||||
|
||||
ImageUtils.loadHeadCC(recipient.getAvatar(),avatar1);
|
||||
ImageUtils.loadHeadCC(auction_user.getAvatar(),avatar2);
|
||||
tv_name1.setText(recipient.getNickname());
|
||||
tv_name2.setText(auction_user.getNickname());
|
||||
tv_tname.setText(auction_user.getRelation_name()+"关系竞拍成功");
|
||||
|
||||
return dialog;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
Window window = getDialog().getWindow();
|
||||
if (window != null) {
|
||||
Animation animation = AnimationUtils.loadAnimation(requireContext(), animStyle);
|
||||
window.getDecorView().startAnimation(animation);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,67 @@
|
||||
package com.example.moduleroom.dialog;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
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: 底部弹框,退出房间选择
|
||||
*/
|
||||
public class ExitRoomBottomSheet extends BottomSheetDialogFragment {
|
||||
|
||||
public interface OnOptionSelectedListener {
|
||||
void onMinimize(); // 最小化
|
||||
void onExitRoom(); // 退出房间
|
||||
void onCancel(); // 取消
|
||||
}
|
||||
|
||||
private OnOptionSelectedListener listener;
|
||||
|
||||
public static ExitRoomBottomSheet newInstance() {
|
||||
return new ExitRoomBottomSheet();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreate(@Nullable Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setStyle(STYLE_NORMAL, com.qxcm.moduleutil.R.style.AppBottomSheetDialogTheme); // 自定义样式(可选)
|
||||
setCancelable(true); // 点击外部可关闭
|
||||
}
|
||||
|
||||
@SuppressLint("MissingInflatedId")
|
||||
@Nullable
|
||||
@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);
|
||||
|
||||
view.findViewById(R.id.tv_minimize).setOnClickListener(v -> {
|
||||
if (listener != null) listener.onMinimize();
|
||||
dismiss();
|
||||
});
|
||||
|
||||
view.findViewById(R.id.tv_exit_room).setOnClickListener(v -> {
|
||||
if (listener != null) listener.onExitRoom();
|
||||
dismiss();
|
||||
});
|
||||
|
||||
view.findViewById(R.id.tv_cancel).setOnClickListener(v -> {
|
||||
if (listener != null) listener.onCancel();
|
||||
dismiss();
|
||||
});
|
||||
|
||||
return view;
|
||||
}
|
||||
|
||||
public void setOnOptionSelectedListener(OnOptionSelectedListener listener) {
|
||||
this.listener = listener;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,87 @@
|
||||
package com.example.moduleroom.dialog;
|
||||
|
||||
import android.app.Dialog;
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
import android.view.Gravity;
|
||||
import android.view.Window;
|
||||
import android.view.WindowManager;
|
||||
import android.widget.CompoundButton;
|
||||
import android.widget.Switch;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import com.example.moduleroom.R;
|
||||
|
||||
/**
|
||||
*@author qx
|
||||
*@data 2025/7/3
|
||||
*@description: 直播对战设置
|
||||
*/
|
||||
public class LiveBattleSettingsDialog extends Dialog {
|
||||
|
||||
private Switch switchFriendInvitation;
|
||||
private Switch switchRecommendInvitation;
|
||||
private OnSettingsChangeListener listener;
|
||||
private int is_pk;
|
||||
|
||||
public LiveBattleSettingsDialog(@NonNull Context context,int is_pk, OnSettingsChangeListener listener) {
|
||||
super(context);
|
||||
this.listener = listener;
|
||||
this.is_pk = is_pk;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
requestWindowFeature(Window.FEATURE_NO_TITLE); // 隐藏标题栏
|
||||
setContentView(R.layout.dialog_live_battle_settings);
|
||||
|
||||
// 初始化视图
|
||||
switchFriendInvitation = findViewById(R.id.switch_friend_invitation);
|
||||
switchRecommendInvitation = findViewById(R.id.switch_recommend_invitation);
|
||||
|
||||
// 设置初始状态(根据需要)
|
||||
switchFriendInvitation.setChecked(false);
|
||||
switchRecommendInvitation.setChecked(false);
|
||||
|
||||
if (is_pk==1){
|
||||
switchFriendInvitation.setChecked(true);
|
||||
}else {
|
||||
switchFriendInvitation.setChecked(false);
|
||||
}
|
||||
// 添加开关监听器
|
||||
switchFriendInvitation.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
|
||||
@Override
|
||||
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
|
||||
if (listener != null) {
|
||||
listener.onFriendInvitationChanged(isChecked);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
switchRecommendInvitation.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
|
||||
@Override
|
||||
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
|
||||
if (listener != null) {
|
||||
listener.onRecommendInvitationChanged(isChecked);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void show() {
|
||||
Window window = getWindow();
|
||||
if (window != null) {
|
||||
window.setGravity(Gravity.CENTER); // 居中显示
|
||||
window.setBackgroundDrawableResource(com.qxcm.moduleutil.R.drawable.bg_r16_fff); // 透明背景
|
||||
}
|
||||
super.show();
|
||||
}
|
||||
|
||||
public interface OnSettingsChangeListener {
|
||||
void onFriendInvitationChanged(boolean isChecked);
|
||||
void onRecommendInvitationChanged(boolean isChecked);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,66 @@
|
||||
package com.example.moduleroom.dialog;
|
||||
|
||||
import android.content.Context;
|
||||
import android.view.View;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import com.example.moduleroom.R;
|
||||
import com.example.moduleroom.databinding.FragmentPkResultDialogBinding;
|
||||
import com.qxcm.moduleutil.bean.RoomMessageEvent;
|
||||
import com.qxcm.moduleutil.utils.ImageUtils;
|
||||
import com.qxcm.moduleutil.widget.dialog.BaseDialog;
|
||||
|
||||
/**
|
||||
*@author qx
|
||||
*@data 2025/7/4
|
||||
*@description: pk结果弹窗
|
||||
*/
|
||||
public class PkResultDialogFragment extends BaseDialog<FragmentPkResultDialogBinding> {
|
||||
private RoomMessageEvent messageEvent;
|
||||
public PkResultDialogFragment(@NonNull Context context, RoomMessageEvent messageEvent) {
|
||||
super(context);
|
||||
this.messageEvent = messageEvent;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getLayoutId() {
|
||||
return R.layout.fragment_pk_result_dialog;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initView() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initData() {
|
||||
if (messageEvent != null){
|
||||
if(messageEvent.getText().getType()==0){
|
||||
mBinding.clPk.setBackgroundResource(com.qxcm.moduleutil.R.mipmap.pk_sb);
|
||||
ImageUtils.loadHeadCC(messageEvent.getText().getDefeated_cover(),mBinding.userAvatar1);
|
||||
ImageUtils.loadHeadCC(messageEvent.getText().getVictory_cover(),mBinding.userAvatar2);
|
||||
mBinding.tvName1.setText(messageEvent.getText().getDefeated_name());
|
||||
mBinding.tvName2.setText(messageEvent.getText().getVictory_name());
|
||||
mBinding.ivStart1.setImageResource(com.qxcm.moduleutil.R.mipmap.fail);
|
||||
mBinding.ivStart2.setImageResource(com.qxcm.moduleutil.R.mipmap.victory);
|
||||
}else if (messageEvent.getText().getType()==1){
|
||||
mBinding.clPk.setBackgroundResource(com.qxcm.moduleutil.R.mipmap.pk_sl);
|
||||
ImageUtils.loadHeadCC(messageEvent.getText().getDefeated_cover(),mBinding.userAvatar2);
|
||||
ImageUtils.loadHeadCC(messageEvent.getText().getVictory_cover(),mBinding.userAvatar1);
|
||||
mBinding.tvName1.setText(messageEvent.getText().getVictory_name());
|
||||
mBinding.tvName2.setText(messageEvent.getText().getDefeated_name());
|
||||
mBinding.ivStart1.setImageResource(com.qxcm.moduleutil.R.mipmap.victory);
|
||||
mBinding.ivStart2.setImageResource(com.qxcm.moduleutil.R.mipmap.fail);
|
||||
}else if (messageEvent.getText().getType()==2){
|
||||
mBinding.clPk.setBackgroundResource(com.qxcm.moduleutil.R.mipmap.pk_pj);
|
||||
ImageUtils.loadHeadCC(messageEvent.getText().getDefeated_cover(),mBinding.userAvatar2);
|
||||
ImageUtils.loadHeadCC(messageEvent.getText().getVictory_cover(),mBinding.userAvatar1);
|
||||
mBinding.tvName1.setText(messageEvent.getText().getVictory_name());
|
||||
mBinding.tvName2.setText(messageEvent.getText().getDefeated_name());
|
||||
mBinding.ivStart1.setVisibility(View.GONE);
|
||||
mBinding.ivStart2.setVisibility(View.GONE);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,138 @@
|
||||
package com.example.moduleroom.dialog;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
import android.view.Gravity;
|
||||
import android.view.View;
|
||||
import android.view.Window;
|
||||
import android.view.WindowManager;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.fragment.app.DialogFragment;
|
||||
import androidx.fragment.app.FragmentManager;
|
||||
import androidx.recyclerview.widget.GridLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.example.moduleroom.R;
|
||||
import com.example.moduleroom.adapter.PkTimeAdapter;
|
||||
import com.example.moduleroom.contacts.PkTimeContract;
|
||||
import com.example.moduleroom.databinding.FragmentPkTimeFragmentBinding;
|
||||
import com.example.moduleroom.presenter.PkTimePresenter;
|
||||
import com.hjq.toast.ToastUtils;
|
||||
import com.qxcm.moduleutil.RoomAutionTimeBean;
|
||||
import com.qxcm.moduleutil.base.BaseMvpDialogFragment;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
/**
|
||||
*@author qx
|
||||
*@data 2025/7/3
|
||||
*@description: pk点击开始选择时间
|
||||
*/
|
||||
public class PkTimeDialogFragment extends BaseMvpDialogFragment<PkTimePresenter, FragmentPkTimeFragmentBinding> implements PkTimeContract.View {
|
||||
private String pk_id;
|
||||
private PkTimeAdapter mAdapter;
|
||||
|
||||
@Override
|
||||
protected PkTimePresenter bindPresenter() {
|
||||
return new PkTimePresenter(this, getActivity());
|
||||
}
|
||||
|
||||
public static void show(String pk_id, FragmentManager fragmentManager) {
|
||||
PkTimeDialogFragment dialogFragment = new PkTimeDialogFragment();
|
||||
Bundle args = new Bundle();
|
||||
args.putString("pk_id", pk_id);
|
||||
dialogFragment.setArguments(args);
|
||||
dialogFragment.show(fragmentManager, "PkTimeDialogFragment");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAttach(@NonNull Context context) {
|
||||
super.onAttach(context);
|
||||
pk_id = getArguments().getString("pk_id");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStart() {
|
||||
super.onStart();
|
||||
Window window = getDialog().getWindow();
|
||||
if (window != null) {
|
||||
// 设置固定高度为 500dp
|
||||
int screenHeight = getResources().getDisplayMetrics().heightPixels;
|
||||
int heightInDp = (int) (screenHeight * 0.6f);
|
||||
;
|
||||
int heightInPx = (int) heightInDp;
|
||||
window.setLayout(WindowManager.LayoutParams.MATCH_PARENT, heightInPx);
|
||||
|
||||
// 可选:设置动画样式(从底部弹出)
|
||||
window.setWindowAnimations(com.qxcm.moduleutil.R.style.CommonShowDialogBottom);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initDialogStyle(Window window) {
|
||||
super.initDialogStyle(window);
|
||||
window.setGravity(Gravity.BOTTOM);
|
||||
setStyle(DialogFragment.STYLE_NORMAL, com.qxcm.moduleutil.R.style.CustomDialogFragmentTheme);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initData() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initView() {
|
||||
RecyclerView recyclerView = mBinding.recycleView;
|
||||
GridLayoutManager layoutManager = new GridLayoutManager(requireContext(), 4); // 最大支持 4 列
|
||||
recyclerView.setLayoutManager(layoutManager);
|
||||
mAdapter = new PkTimeAdapter();
|
||||
recyclerView.setAdapter(mAdapter);
|
||||
mAdapter.setNewData(getDefaultTimeOptions());
|
||||
mBinding.tvWheatQd.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
RoomAutionTimeBean roomAutionTimeBean = mAdapter.getSelectedTime();
|
||||
if (roomAutionTimeBean != null) {
|
||||
MvpPre.startPk(pk_id, roomAutionTimeBean.getDays() + "");
|
||||
dismiss();
|
||||
}else {
|
||||
ToastUtils.show("请选择时间");
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
mBinding.tvWheatCancel.setOnClickListener(new View.OnClickListener() {
|
||||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
dismiss();
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getLayoutId() {
|
||||
return R.layout.fragment_pk_time_fragment;
|
||||
}
|
||||
|
||||
|
||||
public static List<RoomAutionTimeBean> getDefaultTimeOptions() {
|
||||
List<RoomAutionTimeBean> list = new ArrayList<>();
|
||||
list.add(new RoomAutionTimeBean(5));
|
||||
list.add(new RoomAutionTimeBean(10));
|
||||
list.add(new RoomAutionTimeBean(15));
|
||||
list.add(new RoomAutionTimeBean(20));
|
||||
list.add(new RoomAutionTimeBean(25));
|
||||
list.add(new RoomAutionTimeBean(30));
|
||||
list.add(new RoomAutionTimeBean(35));
|
||||
list.add(new RoomAutionTimeBean(40));
|
||||
return list;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void startPk() {
|
||||
dismiss();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,68 @@
|
||||
package com.example.moduleroom.dialog;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.view.Gravity;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.Window;
|
||||
import android.view.WindowManager;
|
||||
|
||||
import androidx.fragment.app.FragmentManager;
|
||||
|
||||
import com.example.moduleroom.R;
|
||||
import com.example.moduleroom.contacts.PublishCommentContacts;
|
||||
import com.example.moduleroom.databinding.DialogPublishCommentBinding;
|
||||
import com.example.moduleroom.presenter.PublishCommentPresenter;
|
||||
import com.qxcm.moduleutil.base.BaseMvpDialogFragment;
|
||||
|
||||
/**
|
||||
*@author qx
|
||||
*@data 2025/6/27
|
||||
*@description: 发布头条的弹出框
|
||||
*/
|
||||
public class PublishCommentDialogFragment extends BaseMvpDialogFragment<PublishCommentPresenter, DialogPublishCommentBinding> implements PublishCommentContacts.View{
|
||||
@Override
|
||||
protected PublishCommentPresenter bindPresenter() {
|
||||
return new PublishCommentPresenter(this, getActivity());
|
||||
}
|
||||
|
||||
public static void show( FragmentManager fragmentManager) {
|
||||
PublishCommentDialogFragment dialogFragment = new PublishCommentDialogFragment();
|
||||
Bundle args = new Bundle();
|
||||
|
||||
dialogFragment.setArguments(args);
|
||||
dialogFragment.show(fragmentManager, "PublishCommentDialogFragment");
|
||||
}
|
||||
@Override
|
||||
public void onStart() {
|
||||
super.onStart();
|
||||
Window window = getDialog().getWindow();
|
||||
if (window != null) {
|
||||
// 设置固定高度为 500dp
|
||||
// int heightInPx = (int) (heightInDp * getResources().getDisplayMetrics().density);
|
||||
window.setLayout(WindowManager.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
|
||||
|
||||
// 可选:设置动画样式(从底部弹出)
|
||||
// window.setWindowAnimations(com.qxcm.moduleutil.R.style.CommonShowDialogBottom);
|
||||
}
|
||||
}
|
||||
@Override
|
||||
protected void initDialogStyle(Window window) {
|
||||
super.initDialogStyle(window);
|
||||
window.setGravity(Gravity.CENTER);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initData() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initView() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getLayoutId() {
|
||||
return R.layout.dialog_publish_comment;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,200 @@
|
||||
package com.example.moduleroom.dialog;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.fragment.app.DialogFragment;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.fragment.app.FragmentActivity;
|
||||
import androidx.fragment.app.FragmentManager;
|
||||
import androidx.fragment.app.FragmentStatePagerAdapter;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
import androidx.viewpager2.adapter.FragmentStateAdapter;
|
||||
import androidx.viewpager2.widget.ViewPager2;
|
||||
|
||||
import android.view.Gravity;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.Window;
|
||||
import android.view.WindowManager;
|
||||
|
||||
import com.blankj.utilcode.util.ToastUtils;
|
||||
import com.example.moduleroom.R;
|
||||
import com.example.moduleroom.adapter.RoomOnlineAdapter;
|
||||
import com.example.moduleroom.contacts.RequestContacts;
|
||||
import com.example.moduleroom.contacts.RoomContacts;
|
||||
import com.example.moduleroom.databinding.FragmentRequestDialogBinding;
|
||||
import com.example.moduleroom.databinding.FragmentRoomOnlineDialogBinding;
|
||||
import com.example.moduleroom.fragment.MusicSongListFragment;
|
||||
import com.example.moduleroom.fragment.RankingChildFragment;
|
||||
import com.example.moduleroom.fragment.RequestFragment;
|
||||
import com.example.moduleroom.presenter.RequestPresenter;
|
||||
import com.example.moduleroom.presenter.RoomPresenter;
|
||||
import com.google.android.material.tabs.TabLayoutMediator;
|
||||
import com.qxcm.moduleutil.adapter.MyFragmentPagerAdapter;
|
||||
import com.qxcm.moduleutil.base.BaseMvpDialogFragment;
|
||||
import com.qxcm.moduleutil.bean.MusicSongBean;
|
||||
import com.qxcm.moduleutil.bean.SongMusicBean;
|
||||
import com.qxcm.moduleutil.bean.room.RoomInfoResp;
|
||||
import com.qxcm.moduleutil.rtc.AgoraManager;
|
||||
import com.qxcm.moduleutil.utils.SpUtil;
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import io.agora.musiccontentcenter.Music;
|
||||
|
||||
/**
|
||||
*@author qx
|
||||
*@data 2025/6/10
|
||||
*@description: 点唱选歌弹框
|
||||
*/
|
||||
public class RequestDialogFragment extends BaseMvpDialogFragment<RequestPresenter, FragmentRequestDialogBinding> implements
|
||||
RequestContacts.View {
|
||||
private int page;
|
||||
private static String roomId;
|
||||
private RoomInfoResp roomInfoResp;
|
||||
@Override
|
||||
protected RequestPresenter bindPresenter() {
|
||||
return new RequestPresenter(this, getActivity());
|
||||
}
|
||||
public static void show(String id,RoomInfoResp roomInfoResp, FragmentManager fragmentManager) {
|
||||
RequestDialogFragment dialogFragment = new RequestDialogFragment();
|
||||
Bundle args = new Bundle();
|
||||
args.putString("roomId", id); // 可选:传递参数
|
||||
args.putSerializable("roomInfo", roomInfoResp);
|
||||
dialogFragment.setArguments(args);
|
||||
dialogFragment.show(fragmentManager, "RequestDialogFragment");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAttach(@NonNull Context context) {
|
||||
super.onAttach(context);
|
||||
roomId=getArguments().getString("roomId");
|
||||
roomInfoResp= (RoomInfoResp) getArguments().getSerializable("roomInfo");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initData() {
|
||||
|
||||
}
|
||||
@Override
|
||||
public void onStart() {
|
||||
super.onStart();
|
||||
Window window = getDialog().getWindow();
|
||||
if (window != null) {
|
||||
// 设置固定高度为 500dp
|
||||
int screenHeight = getResources().getDisplayMetrics().heightPixels;
|
||||
int heightInDp = (int) (screenHeight * 0.6f);;
|
||||
int heightInPx = (int) heightInDp;
|
||||
window.setLayout(WindowManager.LayoutParams.MATCH_PARENT, heightInPx);
|
||||
|
||||
// 可选:设置动画样式(从底部弹出)
|
||||
window.setWindowAnimations(com.qxcm.moduleutil.R.style.CommonShowDialogBottom);
|
||||
// 强制支持 adjustResize 行为
|
||||
// window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
|
||||
|
||||
setStyle(DialogFragment.STYLE_NORMAL, com.qxcm.moduleutil.R.style.CustomDialogFragmentTheme);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStop() {
|
||||
super.onStop();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initView() {
|
||||
String[] title = new String[]{"点歌", "已点"};
|
||||
List<Fragment> fragments = new ArrayList<>();
|
||||
// 创建子 Fragment 并设置回调监听器
|
||||
RequestFragment dataFragment = RequestFragment.newInstance(roomId, RequestFragment.TYPE_DATA);
|
||||
dataFragment.setOnRequestFragmentListener(new RequestFragment.OnRequestFragmentListener() {
|
||||
@Override
|
||||
public void onCloseDialog(Music musicSongBean) {
|
||||
// AgoraManager.getInstance(getContext()).isPreload(musicSongBean.getSongCode(),1);
|
||||
MvpPre.song(roomId, SpUtil.getUserId()+"", musicSongBean.getSongCode()+"", musicSongBean.getName(), musicSongBean.getSinger(), musicSongBean.getPoster(), String.valueOf(musicSongBean.getDurationS()));
|
||||
}
|
||||
});
|
||||
|
||||
MusicSongListFragment weekFragment = MusicSongListFragment.newInstance(roomId,roomInfoResp, RequestFragment.TYPE_WEEK);
|
||||
weekFragment.setOnRequestFragmentListener(() -> dismiss());
|
||||
|
||||
fragments.add(dataFragment);
|
||||
fragments.add(weekFragment);
|
||||
mBinding.vpRequest.setAdapter(new MyFragmentPagerAdapter(getActivity(), title,roomId,roomInfoResp));
|
||||
|
||||
// 绑定 TabLayout
|
||||
new TabLayoutMediator(mBinding.slidingTabLayout, mBinding.vpRequest,
|
||||
(tab, position) -> tab.setText(title[position])
|
||||
).attach();
|
||||
}
|
||||
|
||||
public interface Refreshable {
|
||||
void refresh();
|
||||
}
|
||||
@Override
|
||||
protected void initDialogStyle(Window window) {
|
||||
super.initDialogStyle(window);
|
||||
window.setGravity(Gravity.BOTTOM);
|
||||
setStyle(DialogFragment.STYLE_NORMAL, com.qxcm.moduleutil.R.style.CustomDialogFragmentTheme);
|
||||
}
|
||||
@Override
|
||||
protected int getLayoutId() {
|
||||
return R.layout.fragment_request_dialog;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void songList(List<MusicSongBean> musicSongBeans) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void upSong(String S) {
|
||||
com.hjq.toast.ToastUtils.show(S);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void song(List<SongMusicBean> music) {
|
||||
com.hjq.toast.ToastUtils.show("操作成功");
|
||||
}
|
||||
private static class MyFragmentPagerAdapter extends FragmentStateAdapter {
|
||||
|
||||
private String[] list;
|
||||
private String roomId;
|
||||
private RoomInfoResp roomInfoResp;
|
||||
|
||||
public MyFragmentPagerAdapter(@NonNull FragmentActivity fragmentActivity, String[] list,String roomId,RoomInfoResp roomInfoResp) {
|
||||
super(fragmentActivity);
|
||||
this.list = list;
|
||||
this.roomId=roomId;
|
||||
this.roomInfoResp=roomInfoResp;
|
||||
}
|
||||
|
||||
|
||||
public CharSequence getPageTitle(int position) {
|
||||
return list[position];
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public Fragment createFragment(int position) {
|
||||
if (position == 1)
|
||||
return MusicSongListFragment.newInstance(roomId,roomInfoResp, RequestFragment.TYPE_WEEK);
|
||||
else {
|
||||
return RequestFragment.newInstance(roomId, RequestFragment.TYPE_DATA);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getItemCount() {
|
||||
return list.length;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,461 @@
|
||||
package com.example.moduleroom.dialog;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
import android.view.Gravity;
|
||||
import android.view.View;
|
||||
import android.view.Window;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.fragment.app.FragmentManager;
|
||||
import androidx.fragment.app.FragmentStatePagerAdapter;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
|
||||
import com.chad.library.adapter.base.BaseQuickAdapter;
|
||||
import com.chad.library.adapter.base.BaseViewHolder;
|
||||
import com.example.moduleroom.R;
|
||||
import com.example.moduleroom.adapter.GiftUserAdapter;
|
||||
import com.example.moduleroom.databinding.RoomGiftDialogBinding;
|
||||
import com.hjq.toast.ToastUtils;
|
||||
import com.qxcm.moduleutil.adapter.GiftTwoDetailsFragment;
|
||||
import com.qxcm.moduleutil.base.BaseMvpDialogFragment;
|
||||
import com.qxcm.moduleutil.bean.GiftLabelBean;
|
||||
import com.qxcm.moduleutil.bean.GiftNumBean;
|
||||
import com.qxcm.moduleutil.bean.RewardUserBean;
|
||||
import com.qxcm.moduleutil.bean.RoonGiftModel;
|
||||
import com.qxcm.moduleutil.bean.UserInfo;
|
||||
import com.qxcm.moduleutil.bean.WalletBean;
|
||||
import com.qxcm.moduleutil.bean.room.RoomAuction;
|
||||
import com.qxcm.moduleutil.bean.room.RoomInfoResp;
|
||||
import com.qxcm.moduleutil.bean.room.RoomPitBean;
|
||||
import com.qxcm.moduleutil.dialog.RechargeDialogFragment;
|
||||
import com.qxcm.moduleutil.event.GiftDoubleClickEvent;
|
||||
import com.qxcm.moduleutil.event.GiftUserRefreshEvent;
|
||||
import com.qxcm.moduleutil.event.RoomGiftGiveEvent;
|
||||
import com.qxcm.moduleutil.presenter.RewardGiftContacts;
|
||||
import com.qxcm.moduleutil.presenter.RewardGiftPresenter;
|
||||
import com.qxcm.moduleutil.utils.ImageUtils;
|
||||
import com.qxcm.moduleutil.utils.SpUtil;
|
||||
import com.qxcm.moduleutil.widget.dialog.KeyboardPopupWindow;
|
||||
import com.qxcm.moduleutil.widget.dialog.SelectGiftNumPopupWindow;
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
import org.greenrobot.eventbus.Subscribe;
|
||||
import org.greenrobot.eventbus.ThreadMode;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author qx
|
||||
* @data 2025/6/16
|
||||
* @description: 送礼物的dialog
|
||||
*/
|
||||
public class RoomGiftDialogFragment extends BaseMvpDialogFragment<RewardGiftPresenter, RoomGiftDialogBinding> implements RewardGiftContacts.View {
|
||||
|
||||
private GiftUserAdapter gifyuseradapter;
|
||||
private SelectGiftNumPopupWindow mSelectGiftNumPopupWindow;
|
||||
private KeyboardPopupWindow mKeyboardPopupWindow;
|
||||
private List<GiftNumBean> mGiftNumList;
|
||||
private RoonGiftModel roonGiftModel = null;
|
||||
private RoomInfoResp roomInfoResp;
|
||||
private String label_id;
|
||||
List<RewardUserBean> rewardUserBeanList;
|
||||
private List<Fragment> fragmentList = new ArrayList<>();
|
||||
private UserInfo userInfo;
|
||||
|
||||
private boolean all = false;
|
||||
private String roomId;
|
||||
private final List<String> oldSelectedIds = new LinkedList<>();
|
||||
|
||||
|
||||
@Override
|
||||
protected RewardGiftPresenter bindPresenter() {
|
||||
return new RewardGiftPresenter(this, getActivity());
|
||||
}
|
||||
|
||||
public static void show(RoomInfoResp roomInfoResp, UserInfo userInfo, String roomId, FragmentManager fragmentManager) {
|
||||
RoomGiftDialogFragment dialogFragment = new RoomGiftDialogFragment();
|
||||
Bundle args = new Bundle();
|
||||
args.putSerializable("roomInfoResp", roomInfoResp);
|
||||
args.putSerializable("userInfo", userInfo);
|
||||
args.putString("roomId", roomId);
|
||||
dialogFragment.setArguments(args);
|
||||
dialogFragment.show(fragmentManager, "RewardGiftDialogFragment");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAttach(@NonNull Context context) {
|
||||
super.onAttach(context);
|
||||
roomInfoResp = (RoomInfoResp) getArguments().getSerializable("roomInfoResp");
|
||||
userInfo = (UserInfo) getArguments().getSerializable("userInfo");
|
||||
roomId = getArguments().getString("roomId");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initDialogStyle(Window window) {
|
||||
super.initDialogStyle(window);
|
||||
window.setGravity(Gravity.BOTTOM);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initData() {
|
||||
// MvpPre.getRewardList("1", 1, 10);
|
||||
MvpPre.getGiftLabel("1");
|
||||
MvpPre.wallet();
|
||||
|
||||
mGiftNumList = new ArrayList<>();
|
||||
mGiftNumList.add(new GiftNumBean("20", "x20"));
|
||||
mGiftNumList.add(new GiftNumBean("15", "x15"));
|
||||
mGiftNumList.add(new GiftNumBean("10", "x10"));
|
||||
mGiftNumList.add(new GiftNumBean("5", "x5"));
|
||||
mGiftNumList.add(new GiftNumBean("1", "x1"));
|
||||
|
||||
rewardUserBeanList = new ArrayList<>();
|
||||
if (roomInfoResp == null) {
|
||||
RewardUserBean rewardUserBean = new RewardUserBean();
|
||||
rewardUserBean.setUser_id(userInfo.getUser_id() + "");
|
||||
rewardUserBean.setNickname(userInfo.getNickname());
|
||||
rewardUserBean.setAvatar(userInfo.getAvatar());
|
||||
rewardUserBean.setPit_number(userInfo.getPit_number());
|
||||
rewardUserBean.setSelect(true);
|
||||
rewardUserBeanList.add(rewardUserBean);
|
||||
} else {
|
||||
|
||||
rewardUserBeanList = getSortedRewardUserList(roomInfoResp.getRoom_info().getPit_list(), "9", "10");
|
||||
// for (int i = 0; i < roomInfoResp.getRoom_info().getPit_list().size(); i++) {
|
||||
// if (!(SpUtil.getUserId() + "").equals(roomInfoResp.getRoom_info().getPit_list().get(i).getUser_id()) && !roomInfoResp.getRoom_info().getPit_list().get(i).getPit_number().equals("0") && !roomInfoResp.getRoom_info().getPit_list().get(i).getUser_id().equals("0")) {
|
||||
// RewardUserBean rewardUserBean = new RewardUserBean();
|
||||
// rewardUserBean.setUser_id(roomInfoResp.getRoom_info().getPit_list().get(i).getUser_id());
|
||||
// rewardUserBean.setNickname(roomInfoResp.getRoom_info().getPit_list().get(i).getNickname());
|
||||
// rewardUserBean.setAvatar(roomInfoResp.getRoom_info().getPit_list().get(i).getAvatar());
|
||||
// rewardUserBean.setPit_number(roomInfoResp.getRoom_info().getPit_list().get(i).getPit_number());
|
||||
// rewardUserBeanList.add(rewardUserBean);
|
||||
// }
|
||||
// }
|
||||
}
|
||||
mBinding.rvGiftUser.setLayoutManager(new LinearLayoutManager(getContext(), LinearLayoutManager.HORIZONTAL, false));
|
||||
gifyuseradapter = new GiftUserAdapter();
|
||||
mBinding.rvGiftUser.setAdapter(gifyuseradapter);
|
||||
gifyuseradapter.setNewData(rewardUserBeanList);
|
||||
|
||||
gifyuseradapter.setOnItemClickListener((adapter, view, position) -> {
|
||||
RewardUserBean item = (RewardUserBean) adapter.getItem(position);
|
||||
if (item != null) {
|
||||
item.setSelect(!item.isSelect());
|
||||
}
|
||||
// mBinding.tvOneKeyAllGive.setVisibility(currentPage == 1 && giftUserAdapter.getSelectCount() == 1 ?
|
||||
// View.VISIBLE : View.INVISIBLE);//选中了两个以上麦位,一键送礼隐藏
|
||||
all = gifyuseradapter.isAll();
|
||||
if (all) {
|
||||
mBinding.tvAllWheat.setVisibility(View.GONE);
|
||||
} else {
|
||||
mBinding.tvAllWheat.setVisibility(View.VISIBLE);
|
||||
}
|
||||
gifyuseradapter.notifyItemChanged(position, item);
|
||||
oldSelectedIds.clear();
|
||||
oldSelectedIds.addAll(gifyuseradapter.getAllSelectedIds());
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
private List<RewardUserBean> getSortedRewardUserList(List<RoomPitBean> pitList, String... priorityPits) {
|
||||
List<RewardUserBean> result = new ArrayList<>();
|
||||
List<String> added = new ArrayList<>();
|
||||
|
||||
// 优先添加指定麦位
|
||||
for (String targetPit : priorityPits) {
|
||||
for (RoomPitBean bean : pitList) {
|
||||
if (bean.getPit_number().equals(targetPit) &&
|
||||
!bean.getUser_id().equals("0") && !bean.getUser_id().equals("") &&
|
||||
!bean.getUser_id().equals(SpUtil.getUserId())) {
|
||||
|
||||
RewardUserBean rewardUserBean = new RewardUserBean();
|
||||
rewardUserBean.setUser_id(bean.getUser_id());
|
||||
rewardUserBean.setNickname(bean.getNickname());
|
||||
rewardUserBean.setAvatar(bean.getAvatar());
|
||||
rewardUserBean.setPit_number(bean.getPit_number());
|
||||
|
||||
result.add(rewardUserBean);
|
||||
added.add(bean.getPit_number());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 添加剩余的
|
||||
for (RoomPitBean bean : pitList) {
|
||||
String pitNumber = bean.getPit_number();
|
||||
if (!added.contains(pitNumber) &&
|
||||
!bean.getUser_id().equals("0") && !bean.getUser_id().equals("") &&
|
||||
!bean.getUser_id().equals(SpUtil.getUserId())) {
|
||||
|
||||
RewardUserBean rewardUserBean = new RewardUserBean();
|
||||
rewardUserBean.setUser_id(bean.getUser_id());
|
||||
rewardUserBean.setNickname(bean.getNickname());
|
||||
rewardUserBean.setAvatar(bean.getAvatar());
|
||||
rewardUserBean.setPit_number(bean.getPit_number());
|
||||
|
||||
result.add(rewardUserBean);
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initView() {
|
||||
// mBinding.rvGiftUser.setLayoutManager(new LinearLayoutManager(getContext(), LinearLayoutManager.HORIZONTAL, false));
|
||||
// adapter = new BaseQuickAdapter<RewardUserBean, BaseViewHolder>(com.qxcm.moduleutil.R.layout.item_reward, null) {
|
||||
// @Override
|
||||
// protected void convert(BaseViewHolder helper, RewardUserBean item) {
|
||||
// ImageUtils.loadHeadCC(item.getAvatar(), helper.getView(com.qxcm.moduleutil.R.id.im_reward));
|
||||
// }
|
||||
// };
|
||||
|
||||
mBinding.tvGiveCoinNum.setOnClickListener(this::onClisk);
|
||||
mBinding.tvGive.setOnClickListener(this::onClisk);
|
||||
mBinding.cz.setOnClickListener(this::onClisk);
|
||||
mBinding.tvAllWheat.setOnClickListener(this::onClisk);
|
||||
|
||||
}
|
||||
|
||||
private void onClisk(View view1) {
|
||||
if (view1.getId() == R.id.tv_give_coin_num) {
|
||||
|
||||
if (mSelectGiftNumPopupWindow == null) {
|
||||
|
||||
mSelectGiftNumPopupWindow = new SelectGiftNumPopupWindow(getSelfActivity(), (adapter, view, position) -> {
|
||||
GiftNumBean giftNumBean = (GiftNumBean) adapter.getItem(position);
|
||||
if ("0".equals(giftNumBean.getNumber())) {//自定义
|
||||
mKeyboardPopupWindow = new KeyboardPopupWindow(getSelfActivity(), getView());
|
||||
mKeyboardPopupWindow.refreshKeyboardOutSideTouchable(false);//false开启键盘 ,true关闭键盘
|
||||
mKeyboardPopupWindow.addRoomPasswordListener(new KeyboardPopupWindow.KeyboardCompleteListener() {//监听自定键盘的完成
|
||||
@Override
|
||||
public void inputComplete(String inputContent) {
|
||||
mBinding.tvGiveCoinNum.setText(inputContent);
|
||||
mKeyboardPopupWindow.releaseResources();
|
||||
}
|
||||
});
|
||||
} else {
|
||||
mBinding.tvGiveCoinNum.setText(giftNumBean.getText());
|
||||
}
|
||||
mSelectGiftNumPopupWindow.dismiss();
|
||||
});
|
||||
}
|
||||
mSelectGiftNumPopupWindow.setData(mGiftNumList);
|
||||
mSelectGiftNumPopupWindow.showAtLocation(mBinding.tvGiveCoinNum, Gravity.BOTTOM | Gravity.RIGHT, 100, 230);
|
||||
|
||||
|
||||
} else if (view1.getId() == R.id.tv_give) {
|
||||
for (int i = 0; i < mGiftNumList.size(); i++) {
|
||||
if (mBinding.tvGiveCoinNum.getText().toString().equals(mGiftNumList.get(i).getText())) {
|
||||
giftNumber = mGiftNumList.get(i).getNumber();
|
||||
}
|
||||
}
|
||||
giveGift(giftNumber);
|
||||
} else if (view1.getId() == R.id.cz) {
|
||||
RechargeDialogFragment.show(roomId, getActivity().getSupportFragmentManager());
|
||||
} else if (view1.getId() == R.id.tv_all_wheat) {//全麦
|
||||
if (all) {
|
||||
gifyuseradapter.allElection(false);
|
||||
// mBinding.tvAllWheat.setVisibility(View.VISIBLE);
|
||||
} else {
|
||||
gifyuseradapter.allElection(true);
|
||||
// mBinding.tvAllWheat.setVisibility(View.GONE);
|
||||
}
|
||||
all = !all;
|
||||
oldSelectedIds.clear();
|
||||
oldSelectedIds.addAll(gifyuseradapter.getAllSelectedIds());
|
||||
}
|
||||
}
|
||||
|
||||
private String giftNumber = "";
|
||||
private RoomGiftGiveEvent roomGiftGiveEvent;
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
public void onGiftDoubleClickEvent(GiftDoubleClickEvent event) {
|
||||
getSelectedGift();
|
||||
giveGift("1");
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
public void userRefresh(GiftUserRefreshEvent event) {
|
||||
|
||||
roonGiftModel = event.gift;
|
||||
}
|
||||
|
||||
private int getSelectedGift() {
|
||||
int currentItem = mBinding.viewPager.getCurrentItem();
|
||||
// if (currentItem < 1) { //比2小是才是礼物
|
||||
GiftTwoDetailsFragment fragment = (GiftTwoDetailsFragment) fragmentList.get(currentItem);
|
||||
roonGiftModel = fragment.getGiftList();
|
||||
// }
|
||||
// else {
|
||||
// GiftFragment fragment = (GiftFragment) fragmentList.get(currentItem);
|
||||
// giftModel = fragment.getmData();
|
||||
// }
|
||||
return currentItem;
|
||||
}
|
||||
|
||||
private void giveGift(String num) {
|
||||
getSelectedGift();
|
||||
int currentItem = mBinding.viewPager.getCurrentItem();
|
||||
String userId = gifyuseradapter.getUserIdToString();
|
||||
String pit = gifyuseradapter.getUserPitToString();
|
||||
if (currentItem < 1) {
|
||||
if (roonGiftModel == null) {
|
||||
ToastUtils.show("请选择礼物");
|
||||
return;
|
||||
}
|
||||
int count = gifyuseradapter.getSelectCount();
|
||||
if (count <= 0) {
|
||||
ToastUtils.show("请选择打赏对象");
|
||||
return;
|
||||
}
|
||||
|
||||
if (TextUtils.isEmpty(num)) {
|
||||
ToastUtils.show("请选择打赏礼物数量");
|
||||
return;
|
||||
}
|
||||
if (Integer.valueOf(num) <= 0) {
|
||||
ToastUtils.show("请选择打赏礼物数量");
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
if (roonGiftModel == null) {
|
||||
ToastUtils.show("请选择礼物");
|
||||
return;
|
||||
}
|
||||
int count = gifyuseradapter.getSelectCount();
|
||||
if (count <= 0) {
|
||||
ToastUtils.show("请选择打赏对象");
|
||||
return;
|
||||
}
|
||||
|
||||
if (TextUtils.isEmpty(num)) {
|
||||
ToastUtils.show("请选择打赏礼物数量");
|
||||
return;
|
||||
}
|
||||
if (Integer.valueOf(num) <= 0) {
|
||||
ToastUtils.show("请选择打赏礼物数量");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (currentItem == 0) {
|
||||
//礼物打赏
|
||||
giftNumber = num;
|
||||
roomGiftGiveEvent = new RoomGiftGiveEvent(userId, roomId, pit, num, 0, null, roonGiftModel);
|
||||
if (userInfo!=null) {
|
||||
if (userInfo.getPit_number() != null && userInfo.getPit_number().equals("888") || userInfo.getPit_number().equals("")) {
|
||||
if (userInfo.getPit_number().isEmpty()) {
|
||||
MvpPre.roomGift(roomId, roonGiftModel.getGift_id(), giftNumber, userId, "1", pit);
|
||||
} else {
|
||||
MvpPre.roomAuctionJoin(userInfo.getAuction_id(), userInfo.getUser_id() + "", roonGiftModel.getGift_id(), num, "1");
|
||||
}
|
||||
}else {
|
||||
MvpPre.roomGift(roomId, roonGiftModel.getGift_id(), giftNumber, userId, "1", pit);
|
||||
}
|
||||
}
|
||||
else {
|
||||
MvpPre.roomGift(roomId, roonGiftModel.getGift_id(), giftNumber, userId, "1", pit);
|
||||
}
|
||||
} else {
|
||||
//背包礼物打赏
|
||||
// giftNumber = num;
|
||||
// roomGiftGiveEvent = new RoomGiftGiveEvent(userId, roomId, pit, num, 1, giftModel, null);
|
||||
//
|
||||
// MvpPre.giveBackGift(userId, giftModel.getGift_id(), roomId, pit, num, giftModel, 1);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getLayoutId() {
|
||||
return R.layout.room_gift_dialog;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void getRewardList(List<RewardUserBean> rewardUserBeanList) {
|
||||
if (rewardUserBeanList != null && !rewardUserBeanList.isEmpty()) {
|
||||
mBinding.rvGiftUser.setVisibility(View.VISIBLE);
|
||||
int limit = Math.min(rewardUserBeanList.size(), 6);
|
||||
List<RewardUserBean> limitedList = rewardUserBeanList.subList(0, limit);
|
||||
gifyuseradapter.setNewData(limitedList);
|
||||
} else {
|
||||
gifyuseradapter.setNewData(null);
|
||||
mBinding.rvGiftUser.setVisibility(View.INVISIBLE);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void getGiftLabel(List<GiftLabelBean> giftLabelBeans) {
|
||||
mBinding.viewPager.setAdapter(new MyFragmentPagerAdapter(getChildFragmentManager(), giftLabelBeans, fragmentList));
|
||||
mBinding.slidingTabLayout.setViewPager(mBinding.viewPager);
|
||||
mBinding.slidingTabLayout.setCurrentTab(0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setGiftList(List<RoonGiftModel> roonGiftModels, int type) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void giveGift() {
|
||||
// dismiss();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void wallet(WalletBean walletBean) {
|
||||
mBinding.tvRewardGift.setText(walletBean.getCoin());
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void reward_zone() {
|
||||
com.blankj.utilcode.util.ToastUtils.showShort("打赏成功");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void roomAuctionJoin(RoomAuction.AuctionListBean auctionListBean) {
|
||||
com.blankj.utilcode.util.ToastUtils.showShort("竞拍成功");
|
||||
dismiss();
|
||||
}
|
||||
|
||||
private static class MyFragmentPagerAdapter extends FragmentStatePagerAdapter {
|
||||
|
||||
private List<GiftLabelBean> list;
|
||||
private List<Fragment> fragmentList;
|
||||
|
||||
|
||||
public MyFragmentPagerAdapter(FragmentManager fm, List<GiftLabelBean> list, List<Fragment> fragmentList) {
|
||||
super(fm);
|
||||
this.list = list;
|
||||
this.fragmentList = fragmentList;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Fragment getItem(int position) {
|
||||
GiftLabelBean model = list.get(position);
|
||||
Fragment fragment = GiftTwoDetailsFragment.newInstance(model.getId(), 1);
|
||||
fragmentList.add(fragment); // 保存 Fragment 实例
|
||||
return fragment;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getCount() {
|
||||
return list.size();
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public CharSequence getPageTitle(int position) {
|
||||
GiftLabelBean model = list.get(position);
|
||||
return model.getName();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,243 @@
|
||||
package com.example.moduleroom.dialog;
|
||||
|
||||
import android.content.DialogInterface;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.text.Editable;
|
||||
import android.text.TextWatcher;
|
||||
import android.view.Gravity;
|
||||
import android.view.View;
|
||||
import android.view.Window;
|
||||
import android.view.WindowManager;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.LinearLayout;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
|
||||
import com.alibaba.android.arouter.facade.annotation.Route;
|
||||
import com.blankj.utilcode.util.StringUtils;
|
||||
import com.chad.library.adapter.base.BaseQuickAdapter;
|
||||
import com.chad.library.adapter.base.BaseViewHolder;
|
||||
import com.example.moduleroom.R;
|
||||
import com.example.moduleroom.contacts.RoomHostContacts;
|
||||
import com.example.moduleroom.databinding.RoomHostAddFragmentBinding;
|
||||
import com.example.moduleroom.presenter.RoomHostPresenter;
|
||||
import com.hjq.toast.ToastUtils;
|
||||
import com.lihang.ShadowLayout;
|
||||
import com.qxcm.moduleutil.base.BaseMvpDialogFragment;
|
||||
import com.qxcm.moduleutil.bean.HostBean;
|
||||
import com.qxcm.moduleutil.bean.RefreshEvent;
|
||||
import com.qxcm.moduleutil.bean.RoomHostUserBean;
|
||||
import com.qxcm.moduleutil.bean.RoomMessageEvent;
|
||||
import com.qxcm.moduleutil.bean.RoomSearchResp;
|
||||
import com.qxcm.moduleutil.utils.ImageUtils;
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
import org.greenrobot.eventbus.Subscribe;
|
||||
import org.greenrobot.eventbus.ThreadMode;
|
||||
|
||||
import java.util.List;
|
||||
/**
|
||||
*@author qx
|
||||
*@data 2025/6/21
|
||||
*@description: 设置主持人
|
||||
*/
|
||||
public class RoomHostAddFragment extends BaseMvpDialogFragment<RoomHostPresenter, RoomHostAddFragmentBinding> implements RoomHostContacts.View {
|
||||
private String mRoomId ;
|
||||
private BaseQuickAdapter<RoomSearchResp, BaseViewHolder> mAdapter;
|
||||
|
||||
// TODO: Customize parameter initialization
|
||||
@SuppressWarnings("unused")
|
||||
public static RoomHostAddFragment newInstance(String roomId) {
|
||||
RoomHostAddFragment fragment = new RoomHostAddFragment();
|
||||
Bundle args = new Bundle();
|
||||
args.putString("roomId", roomId);
|
||||
fragment.setArguments(args);
|
||||
return fragment;
|
||||
}
|
||||
@Override
|
||||
public void initArgs(Bundle arguments) {
|
||||
super.initArgs(arguments);
|
||||
mRoomId = arguments.getString("roomId");
|
||||
}
|
||||
// TODO: 2025/3/7 固定dialog显示的位置和大小
|
||||
@Override
|
||||
protected void initDialogStyle(Window window) {
|
||||
super.initDialogStyle(window);
|
||||
window.setGravity(Gravity.BOTTOM);
|
||||
WindowManager.LayoutParams lp = window.getAttributes();
|
||||
lp.dimAmount = 0.4f;
|
||||
// 固定对话框的宽度和高度
|
||||
lp.width = WindowManager.LayoutParams.MATCH_PARENT; // 宽度设置为屏幕宽度
|
||||
lp.height = WindowManager.LayoutParams.WRAP_CONTENT; // 高度设置为内容高度
|
||||
|
||||
window.setAttributes(lp);
|
||||
window.addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected RoomHostPresenter bindPresenter() {
|
||||
return new RoomHostPresenter(this, getContext());
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected void initData() {
|
||||
|
||||
mBinding.editQuery.addTextChangedListener(new TextWatcher() {
|
||||
private Handler handler = new Handler();
|
||||
private final long DELAY = 1500; // 1秒延迟
|
||||
|
||||
@Override
|
||||
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
|
||||
handler.removeCallbacksAndMessages(null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterTextChanged(Editable editable) {
|
||||
handler.postDelayed(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
String keyWord = editable.toString();
|
||||
if (!StringUtils.isEmpty(keyWord)) {
|
||||
MvpPre.setUserHostList(keyWord,"1");
|
||||
}
|
||||
}
|
||||
}, DELAY);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initView() {
|
||||
mBinding.rvHostAdd.setLayoutManager(new LinearLayoutManager(getContext()));
|
||||
mAdapter = new BaseQuickAdapter<RoomSearchResp, BaseViewHolder>(R.layout.room_host_add_item, null) {
|
||||
@Override
|
||||
protected void convert(BaseViewHolder helper, RoomSearchResp item) {
|
||||
helper.setText(R.id.tv_name, item.getName());
|
||||
ImageUtils.loadHeadCC(item.getPictrue(), helper.getView(R.id.image));
|
||||
helper.setText(R.id.tv_id, item.getCode());
|
||||
// if (item.getSex().equals("1")){
|
||||
// helper.setBackgroundRes(R.id.tv_gender, com.qxcm.moduleutil.R.mipmap.boyb);
|
||||
// }else {
|
||||
// helper.setBackgroundRes(R.id.tv_gender, com.qxcm.moduleutil.R.mipmap.girl);
|
||||
// }
|
||||
// helper.setText(R.id.tv_gender, item.getAge()+"");
|
||||
// ImageUtils.loadImageView(item.getLevel_icon(), helper.getView(R.id.iv_rd));
|
||||
LinearLayout llContainer = helper.getView(R.id.ll);
|
||||
llContainer.removeAllViews(); // 清空旧的 ImageView
|
||||
if (!item.getIcon().isEmpty()||item.getIcon().size()>0){
|
||||
for (String url : item.getIcon()) {
|
||||
if (url.contains("http")) {
|
||||
ImageView imageView = new ImageView(getContext());
|
||||
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
|
||||
getContext().getResources().getDimensionPixelSize(com.qxcm.moduleutil.R.dimen.dp_37),
|
||||
getContext().getResources().getDimensionPixelSize(com.qxcm.moduleutil.R.dimen.dp_15)
|
||||
);
|
||||
params.setMargins(0, 0, getContext().getResources().getDimensionPixelSize(com.qxcm.moduleutil.R.dimen.dp_5), 0); // 右边距
|
||||
imageView.setLayoutParams(params);
|
||||
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
|
||||
|
||||
// 使用 Glide 加载图片
|
||||
ImageUtils.loadHeadCC(url, imageView);
|
||||
|
||||
llContainer.addView(imageView);
|
||||
}
|
||||
}
|
||||
}
|
||||
ShadowLayout layout = helper.getView(R.id.shadow_layout);
|
||||
// layout.setShadowColor(R.color.picture_color_fa632d);
|
||||
layout.setShadowHiddenBottom(false);
|
||||
layout.setShadowHidden(false);
|
||||
layout.setShadowOffsetY(1);
|
||||
layout.setShadowOffsetX(1);
|
||||
|
||||
|
||||
|
||||
helper.getView(R.id.iv_add).setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
// TODO: 2025/3/17 添加主持人
|
||||
MvpPre.postHostAdd(mRoomId, item.getId(), "1", "1");
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
};
|
||||
mBinding.rvHostAdd.setAdapter(mAdapter);
|
||||
mAdapter.bindToRecyclerView(mBinding.rvHostAdd);
|
||||
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getLayoutId() {
|
||||
return R.layout.room_host_add_fragment;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void setHostrList(List<HostBean> list) {
|
||||
// mAdapter.setNewData(list);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void getUserHostList(List<RoomSearchResp> list) {
|
||||
mAdapter.setNewData(list);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void postHostAdd(String s, String type, String is_add) {
|
||||
ToastUtils.show("添加成功");
|
||||
}
|
||||
|
||||
// @Override
|
||||
// public void getUserHostList(List<RoomHostUserBean> list) {
|
||||
// mAdapter.setNewData(list);
|
||||
// }
|
||||
|
||||
// @Override
|
||||
// public void postHostAdd(String s) {
|
||||
// Logger.d("@@@@",s);
|
||||
// ToastUtils.showShort("添加成功");
|
||||
//
|
||||
// }
|
||||
|
||||
// @Override
|
||||
// public void setHostrList(List<HostBean> list) {
|
||||
//
|
||||
// }
|
||||
|
||||
@Override
|
||||
public void postPresidedRatio(String s) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void postPresidedDel(String s) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void doDismiss() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDismiss(@NonNull DialogInterface dialog) {
|
||||
super.onDismiss(dialog);
|
||||
EventBus.getDefault().post(new RefreshEvent(mRoomId)); // 发送刷新事件
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,221 @@
|
||||
package com.example.moduleroom.dialog;
|
||||
|
||||
import android.content.DialogInterface;
|
||||
import android.os.Bundle;
|
||||
import android.view.Gravity;
|
||||
import android.view.View;
|
||||
import android.view.Window;
|
||||
import android.view.WindowManager;
|
||||
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
|
||||
import com.alibaba.android.arouter.facade.annotation.Route;
|
||||
import com.blankj.utilcode.util.ToastUtils;
|
||||
import com.chad.library.adapter.base.BaseQuickAdapter;
|
||||
import com.chad.library.adapter.base.BaseViewHolder;
|
||||
import com.example.moduleroom.R;
|
||||
import com.example.moduleroom.contacts.RoomHostContacts;
|
||||
import com.example.moduleroom.databinding.RoomFragmentItemListBinding;
|
||||
import com.example.moduleroom.presenter.RoomHostPresenter;
|
||||
import com.lihang.ShadowLayout;
|
||||
import com.qxcm.moduleutil.base.BaseMvpDialogFragment;
|
||||
import com.qxcm.moduleutil.bean.HostBean;
|
||||
import com.qxcm.moduleutil.bean.RefreshEvent;
|
||||
import com.qxcm.moduleutil.bean.RoomHostUserBean;
|
||||
import com.qxcm.moduleutil.bean.RoomMessageEvent;
|
||||
import com.qxcm.moduleutil.bean.RoomSearchResp;
|
||||
import com.qxcm.moduleutil.utils.ImageUtils;
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
import org.greenrobot.eventbus.Subscribe;
|
||||
import org.greenrobot.eventbus.ThreadMode;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* A fragment representing a list of Items.
|
||||
* 主持弹窗
|
||||
*/
|
||||
public class RoomHostFragment extends BaseMvpDialogFragment<RoomHostPresenter, RoomFragmentItemListBinding> implements RoomHostContacts.View {
|
||||
private String mRoomId;
|
||||
private BaseQuickAdapter<HostBean, BaseViewHolder> mAdapter;
|
||||
|
||||
// TODO: Customize parameter initialization
|
||||
@SuppressWarnings("unused")
|
||||
public static RoomHostFragment newInstance(String roomId) {
|
||||
RoomHostFragment fragment = new RoomHostFragment();
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putString("roomId", roomId);
|
||||
fragment.setArguments(bundle);
|
||||
return fragment;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initArgs(Bundle arguments) {
|
||||
super.initArgs(arguments);
|
||||
mRoomId = arguments.getString("roomId");
|
||||
}
|
||||
|
||||
// TODO: 2025/3/7 固定dialog显示的位置和大小
|
||||
@Override
|
||||
protected void initDialogStyle(Window window) {
|
||||
super.initDialogStyle(window);
|
||||
window.setGravity(Gravity.BOTTOM);
|
||||
WindowManager.LayoutParams lp = window.getAttributes();
|
||||
lp.dimAmount = 0.4f;
|
||||
// 固定对话框的宽度和高度
|
||||
lp.width = WindowManager.LayoutParams.MATCH_PARENT; // 宽度设置为屏幕宽度
|
||||
lp.height = WindowManager.LayoutParams.WRAP_CONTENT; // 高度设置为内容高度
|
||||
|
||||
window.setAttributes(lp);
|
||||
window.addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected RoomHostPresenter bindPresenter() {
|
||||
return new RoomHostPresenter(this, getContext());
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected void initData() {
|
||||
EventBus.getDefault().register(this); // 注册EventBus
|
||||
|
||||
// MvpPre.clearHostList(mRoomId, "1");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initView() {
|
||||
mBinding.tvTj.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
// TODO: 2025/3/7 点击弹出设置主持人模式
|
||||
RoomHostAddFragment.newInstance(mRoomId).show(getChildFragmentManager(), "RoomHostAddFragment");
|
||||
}
|
||||
});
|
||||
|
||||
mBinding.rvHostList.setLayoutManager(new LinearLayoutManager(getContext()));
|
||||
mAdapter = new BaseQuickAdapter<HostBean, BaseViewHolder>(R.layout.room_fragment_item, null) {
|
||||
@Override
|
||||
protected void convert(BaseViewHolder helper, HostBean item) {
|
||||
helper.setText(R.id.tv_name, item.getNickname());
|
||||
ImageUtils.loadHeadCC(item.getAvatar(), helper.getView(R.id.image));
|
||||
if (item.getRatio() == null || item.getRatio().isEmpty()) {
|
||||
helper.setText(R.id.tv_proportion, "未设置");
|
||||
} else {
|
||||
helper.setText(R.id.tv_proportion, item.getRatio() + "%");
|
||||
}
|
||||
helper.setText(R.id.tv_shouyi,item.getEarnings()!=null&&!item.getEarnings().isEmpty()?item.getEarnings():"0.00");
|
||||
// helper.setText(R.id.tv_income, "¥" + item.getEarnings());
|
||||
ShadowLayout layout = helper.getView(R.id.shadow_layout);
|
||||
// layout.setShadowColor(R.color.picture_color_fa632d);
|
||||
layout.setShadowHiddenBottom(false);
|
||||
layout.setShadowHidden(false);
|
||||
layout.setShadowOffsetY(1);
|
||||
layout.setShadowOffsetX(1);
|
||||
|
||||
helper.getView(R.id.tv_yc).setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
// TODO: 2025/3/7 点击移除主持人
|
||||
MvpPre.postHostAdd(mRoomId, item.getUser_id(), "1", "2");
|
||||
}
|
||||
});
|
||||
|
||||
helper.getView(R.id.tv_sz).setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
// TODO: 2025/3/7 点击设置收益比例
|
||||
RoomHostIncomeDialog dialog = new RoomHostIncomeDialog(getContext());
|
||||
dialog.setListener(new RoomHostIncomeDialog.OnConfirmClickListener() {
|
||||
@Override
|
||||
public void onConfirm(String proportion) {
|
||||
MvpPre.setPresidedRatio(item.getRoom_id(),item.getUser_id(), proportion);
|
||||
}
|
||||
});
|
||||
dialog.show();
|
||||
// dialog.setListener(new RoomHostIncomeDialog.OnConfirmClickListener() {
|
||||
// @Override
|
||||
// public void onConfirm(String proportion) {
|
||||
// // TODO: 2025/3/7 提交数据
|
||||
// MvpPre.setPresidedRatio(item.getRoom_id(),item.getId(), proportion);
|
||||
// }
|
||||
// });
|
||||
// dialog.show();
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
};
|
||||
mBinding.rvHostList.setAdapter(mAdapter);
|
||||
mAdapter.bindToRecyclerView(mBinding.rvHostList);
|
||||
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getLayoutId() {
|
||||
return R.layout.room_fragment_item_list;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void setHostrList(List<HostBean> list) {
|
||||
mAdapter.setNewData(list);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void getUserHostList(List<RoomSearchResp> list) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void postHostAdd(String s, String type, String is_add) {
|
||||
MvpPre.clearHostList(mRoomId,"1");
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public void postPresidedRatio(String s) {
|
||||
ToastUtils.showShort("设置成功");
|
||||
// MvpPre.clearHostList(mRoomId);
|
||||
MvpPre.clearHostList(mRoomId,"1");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void postPresidedDel(String s) {
|
||||
ToastUtils.showShort("移除成功");
|
||||
// MvpPre.clearHostList(mRoomId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void doDismiss() {
|
||||
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
public void onRefreshEvent(RefreshEvent refreshEvent) {
|
||||
// MvpPre.clearHostList(refreshEvent.getRoomId());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStop() {
|
||||
super.onStop();
|
||||
EventBus.getDefault().unregister(this); // 取消注册EventBus
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
MvpPre.clearHostList(mRoomId,"1");
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
public void refreshEvent(RoomMessageEvent event) {
|
||||
if (event.getMsgType() == 1007){
|
||||
MvpPre.clearHostList(mRoomId,"1");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
package com.example.moduleroom.dialog;
|
||||
|
||||
import android.content.Context;
|
||||
import android.view.View;
|
||||
import android.widget.RadioGroup;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import com.blankj.utilcode.util.ScreenUtils;
|
||||
import com.blankj.utilcode.util.ToastUtils;
|
||||
import com.example.moduleroom.R;
|
||||
import com.example.moduleroom.databinding.RoomHostIncomeDialogBinding;
|
||||
import com.qxcm.moduleutil.widget.dialog.BaseDialog;
|
||||
|
||||
import lombok.Setter;
|
||||
|
||||
@Setter
|
||||
public class RoomHostIncomeDialog extends BaseDialog<RoomHostIncomeDialogBinding> {
|
||||
|
||||
|
||||
public RoomHostIncomeDialog(@NonNull Context context) {
|
||||
super(context);
|
||||
}
|
||||
|
||||
public void setListener(OnConfirmClickListener listener) {
|
||||
this.listener = listener;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getLayoutId() {
|
||||
return R.layout.room_host_income_dialog;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void initView() {
|
||||
getWindow().setLayout((int) (ScreenUtils.getScreenWidth() / 375.0 * 341), RadioGroup.LayoutParams.WRAP_CONTENT);
|
||||
mBinding.btnAction.setOnClickListener(this::onViewClicked);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initData() {
|
||||
|
||||
}
|
||||
|
||||
public OnConfirmClickListener listener;
|
||||
|
||||
public void onViewClicked(View view) {
|
||||
if (listener != null) {
|
||||
if (mBinding.edRoomName.getText().toString().trim().isEmpty()){
|
||||
ToastUtils.showShort("请输入收益比例");
|
||||
}else {
|
||||
listener.onConfirm(mBinding.edRoomName.getText().toString().trim());
|
||||
}
|
||||
}
|
||||
dismiss();
|
||||
}
|
||||
|
||||
public interface OnConfirmClickListener {
|
||||
void onConfirm(String proportion);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,272 @@
|
||||
package com.example.moduleroom.dialog;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.fragment.app.FragmentManager;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
|
||||
import android.view.Gravity;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.Window;
|
||||
import android.view.WindowManager;
|
||||
|
||||
import com.blankj.utilcode.util.ToastUtils;
|
||||
import com.example.moduleroom.R;
|
||||
import com.example.moduleroom.adapter.RoomOnlineAdapter;
|
||||
import com.example.moduleroom.contacts.RoomContacts;
|
||||
import com.example.moduleroom.databinding.FragmentRoomOnlineDialogBinding;
|
||||
import com.example.moduleroom.presenter.RoomPresenter;
|
||||
import com.qxcm.moduleutil.adapter.LikeListAdapter;
|
||||
import com.qxcm.moduleutil.base.BaseMvpDialogFragment;
|
||||
import com.qxcm.moduleutil.bean.CircleListBean;
|
||||
import com.qxcm.moduleutil.bean.RoomCharmRankBean;
|
||||
import com.qxcm.moduleutil.bean.room.RoomInfoResp;
|
||||
import com.qxcm.moduleutil.bean.room.RoomOnline;
|
||||
import com.qxcm.moduleutil.bean.room.RoomOnlineBean;
|
||||
import com.qxcm.moduleutil.databinding.FragmentCommentDialogBinding;
|
||||
import com.qxcm.moduleutil.presenter.CommentContacts;
|
||||
import com.qxcm.moduleutil.presenter.CommentPresenter;
|
||||
import com.qxcm.moduleutil.widget.dialog.CommentDialogFragment;
|
||||
import com.scwang.smartrefresh.layout.api.RefreshLayout;
|
||||
import com.scwang.smartrefresh.layout.listener.OnRefreshLoadMoreListener;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
*@author qx
|
||||
*@data 2025/6/10
|
||||
*@description: 在线列表弹框
|
||||
*/
|
||||
public class RoomOnlineDialogFragment extends BaseMvpDialogFragment<RoomPresenter, FragmentRoomOnlineDialogBinding> implements
|
||||
RoomContacts.View {
|
||||
private int page;
|
||||
private RoomOnlineAdapter roomOnlineAdapter;
|
||||
private RoomOnlineAdapter roomOnlineAdapter2;
|
||||
private String roomId;
|
||||
private String pit_number;
|
||||
@Override
|
||||
protected RoomPresenter bindPresenter() {
|
||||
return new RoomPresenter(this, getActivity());
|
||||
}
|
||||
public static void show(String id,String pit_number, FragmentManager fragmentManager) {
|
||||
RoomOnlineDialogFragment dialogFragment = new RoomOnlineDialogFragment();
|
||||
Bundle args = new Bundle();
|
||||
args.putString("roomId", id); // 可选:传递参数
|
||||
args.putString("pit_number", pit_number);
|
||||
dialogFragment.setArguments(args);
|
||||
dialogFragment.show(fragmentManager, "RoomOnlineDialogFragment");
|
||||
}
|
||||
@Override
|
||||
protected void initData() {
|
||||
MvpPre.getRoomOnline(getArguments().getString("roomId"), "1", "10");
|
||||
}
|
||||
@Override
|
||||
public void onStart() {
|
||||
super.onStart();
|
||||
Window window = getDialog().getWindow();
|
||||
if (window != null) {
|
||||
// 设置固定高度为 500dp
|
||||
int screenHeight = getResources().getDisplayMetrics().heightPixels;
|
||||
int heightInDp = (int) (screenHeight * 0.6f);;
|
||||
// int heightInPx = (int) (heightInDp * getResources().getDisplayMetrics().density);
|
||||
window.setLayout(WindowManager.LayoutParams.MATCH_PARENT, heightInDp);
|
||||
|
||||
// 可选:设置动画样式(从底部弹出)
|
||||
window.setWindowAnimations(com.qxcm.moduleutil.R.style.CommonShowDialogBottom);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAttach(@NonNull Context context) {
|
||||
super.onAttach(context);
|
||||
roomId=getArguments().getString("roomId");
|
||||
pit_number=getArguments().getString("pit_number");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initView() {
|
||||
|
||||
mBinding.srl.setOnRefreshLoadMoreListener(new OnRefreshLoadMoreListener() {
|
||||
@Override
|
||||
public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
|
||||
page++;
|
||||
MvpPre.getRoomOnline(getArguments().getString("roomId"), page+"", "10");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRefresh(@NonNull RefreshLayout refreshLayout) {
|
||||
// EventBus.getDefault().post(new BannerRefreshEvent());
|
||||
page = 1;
|
||||
MvpPre.getRoomOnline(getArguments().getString("roomId"), "1", "10");
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
mBinding.rvComment.setLayoutManager(new LinearLayoutManager(getActivity()));
|
||||
roomOnlineAdapter = new RoomOnlineAdapter();
|
||||
mBinding.rvComment.setAdapter(roomOnlineAdapter);
|
||||
mBinding.rvComment2.setLayoutManager(new LinearLayoutManager(getActivity()));
|
||||
roomOnlineAdapter2 = new RoomOnlineAdapter();
|
||||
mBinding.rvComment2.setAdapter(roomOnlineAdapter2);
|
||||
|
||||
|
||||
roomOnlineAdapter.setListener(new RoomOnlineAdapter.OnJoinButtonClickListener() {
|
||||
@Override
|
||||
public void onJoinButtonClick(RoomOnlineBean item) {
|
||||
MvpPre.hostUserPit(roomId,pit_number,item.getUser_id()+"","1");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onUserInfoClick(RoomOnlineBean item) {
|
||||
RoomUserInfoFragment.show(roomId, item.getUser_id()+"",pit_number,getHostUser(item),false, getChildFragmentManager());
|
||||
}
|
||||
});
|
||||
|
||||
roomOnlineAdapter2.setListener(new RoomOnlineAdapter.OnJoinButtonClickListener() {
|
||||
@Override
|
||||
public void onJoinButtonClick(RoomOnlineBean item) {
|
||||
MvpPre.hostUserPit(roomId,pit_number,item.getUser_id()+"","1");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onUserInfoClick(RoomOnlineBean item) {
|
||||
RoomUserInfoFragment.show(roomId, item.getUser_id()+"",pit_number,0,false, getChildFragmentManager());
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private int getHostUser(RoomOnlineBean item){
|
||||
if (item.getPit_number()==9){
|
||||
if (item.getRole().equals("1")){
|
||||
return 1;
|
||||
}else if (item.getRole().equals("2")){
|
||||
return 2;
|
||||
}else {
|
||||
return 3;
|
||||
}
|
||||
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected void initDialogStyle(Window window) {
|
||||
super.initDialogStyle(window);
|
||||
window.setGravity(Gravity.BOTTOM);
|
||||
}
|
||||
@Override
|
||||
protected int getLayoutId() {
|
||||
return R.layout.fragment_room_online_dialog;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void roomInfo(RoomInfoResp resp) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void showPasswordDialog() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void enterFail() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void getRoomOnline(RoomOnline onlineBean) {
|
||||
int type_pit;
|
||||
if (pit_number.isEmpty()){
|
||||
type_pit=1;
|
||||
}else {
|
||||
type_pit=2;
|
||||
}
|
||||
if (onlineBean.getOn_pit()!=null && onlineBean.getOn_pit().size()>0){
|
||||
for (RoomOnlineBean roomOnlineBean : onlineBean.getOn_pit()){
|
||||
roomOnlineBean.setType(1);
|
||||
roomOnlineBean.setType_pit(0);
|
||||
}
|
||||
roomOnlineAdapter.setNewData(onlineBean.getOn_pit());
|
||||
}
|
||||
if (onlineBean.getOff_pit()!=null && onlineBean.getOff_pit().size()>0){
|
||||
for (RoomOnlineBean roomOnlineBean : onlineBean.getOff_pit()){
|
||||
roomOnlineBean.setType(2);
|
||||
roomOnlineBean.setType_pit(type_pit);
|
||||
}
|
||||
roomOnlineAdapter2.setNewData(onlineBean.getOff_pit());
|
||||
}
|
||||
int total = onlineBean.getOn_pit().size()+onlineBean.getOff_pit().size();
|
||||
|
||||
mBinding.tvNum.setText("在线用户("+total+")人");
|
||||
}
|
||||
|
||||
// @Override
|
||||
// public void getRoomOnline(List<RoomOnlineBean> onlineBean) {
|
||||
// roomOnlineAdapter.setNewData(onlineBean);
|
||||
// mBinding.tvNum.setText("在线用户("+onlineBean.size()+")人");
|
||||
// }
|
||||
|
||||
@Override
|
||||
public void applyPit() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void downPit() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void applySong() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void agreeSong() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void postRoomInfo(RoomInfoResp resp) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void getCharmRank(List<RoomCharmRankBean> list) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void changeSong() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void hostUserPit() {
|
||||
ToastUtils.showShort("抱麦成功");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void quitRoom() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void userGuanzSuccess(String s) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void acceptPk() {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,223 @@
|
||||
package com.example.moduleroom.dialog;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.text.Editable;
|
||||
import android.text.TextWatcher;
|
||||
import android.view.Gravity;
|
||||
import android.view.View;
|
||||
import android.view.Window;
|
||||
import android.view.WindowManager;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.LinearLayout;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
|
||||
import com.blankj.utilcode.util.StringUtils;
|
||||
import com.chad.library.adapter.base.BaseQuickAdapter;
|
||||
import com.chad.library.adapter.base.BaseViewHolder;
|
||||
import com.example.moduleroom.R;
|
||||
import com.example.moduleroom.contacts.RoomPkContacts;
|
||||
import com.example.moduleroom.databinding.FragmentRoomPkBinding;
|
||||
import com.example.moduleroom.presenter.RoomPkPresenter;
|
||||
import com.lihang.ShadowLayout;
|
||||
import com.qxcm.moduleutil.base.BaseMvpDialogFragment;
|
||||
import com.qxcm.moduleutil.bean.RoomSearchResp;
|
||||
import com.qxcm.moduleutil.bean.room.RoomBean;
|
||||
import com.qxcm.moduleutil.dialog.ConfirmDialog;
|
||||
import com.qxcm.moduleutil.utils.ImageUtils;
|
||||
import com.scwang.smartrefresh.layout.api.RefreshLayout;
|
||||
import com.scwang.smartrefresh.layout.listener.OnRefreshLoadMoreListener;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author qx
|
||||
* @data 2025/7/3
|
||||
* @description:
|
||||
*/
|
||||
public class RoomPkDialogFragment extends BaseMvpDialogFragment<RoomPkPresenter, FragmentRoomPkBinding> implements RoomPkContacts.View {
|
||||
|
||||
private int page = 1;
|
||||
private String keyWord = "";
|
||||
|
||||
private String mRoomId;
|
||||
private String mUserId;
|
||||
private int is_pk;
|
||||
private BaseQuickAdapter<RoomBean, BaseViewHolder> mAdapter;
|
||||
|
||||
@Override
|
||||
protected RoomPkPresenter bindPresenter() {
|
||||
return new RoomPkPresenter(this, getActivity());
|
||||
}
|
||||
|
||||
public static RoomPkDialogFragment newInstance(String roomId,String userId,int is_pk) {
|
||||
RoomPkDialogFragment fragment = new RoomPkDialogFragment();
|
||||
Bundle args = new Bundle();
|
||||
args.putString("roomId", roomId);
|
||||
args.putString("userId", userId);
|
||||
args.putInt("is_pk", is_pk);
|
||||
fragment.setArguments(args);
|
||||
return fragment;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initData() {
|
||||
MvpPre.searchPkRoom(keyWord, page + "", "15");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAttach(@NonNull Context context) {
|
||||
super.onAttach(context);
|
||||
mRoomId = getArguments().getString("roomId");
|
||||
mUserId = getArguments().getString("userId");
|
||||
is_pk = getArguments().getInt("is_pk");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initView() {
|
||||
mBinding.editQuery.addTextChangedListener(new TextWatcher() {
|
||||
private Handler handler = new Handler();
|
||||
private final long DELAY = 1500; // 1秒延迟
|
||||
|
||||
@Override
|
||||
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
|
||||
handler.removeCallbacksAndMessages(null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterTextChanged(Editable editable) {
|
||||
handler.postDelayed(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
keyWord = editable.toString();
|
||||
if (!StringUtils.isEmpty(keyWord)) {
|
||||
MvpPre.searchPkRoom(keyWord, "1", "15");
|
||||
}
|
||||
}
|
||||
}, DELAY);
|
||||
}
|
||||
});
|
||||
|
||||
mBinding.srl.setOnRefreshLoadMoreListener(new OnRefreshLoadMoreListener() {
|
||||
@Override
|
||||
public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
|
||||
page++;
|
||||
MvpPre.searchPkRoom(keyWord, page + "", "15");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRefresh(@NonNull RefreshLayout refreshLayout) {
|
||||
// EventBus.getDefault().post(new BannerRefreshEvent());
|
||||
page = 1;
|
||||
MvpPre.searchPkRoom(keyWord, "1", "15");
|
||||
}
|
||||
});
|
||||
|
||||
mBinding.rvPkAdd.setLayoutManager(new LinearLayoutManager(getContext()));
|
||||
mAdapter = new BaseQuickAdapter<RoomBean, BaseViewHolder>(R.layout.room_host_add_item, null) {
|
||||
@Override
|
||||
protected void convert(BaseViewHolder helper, RoomBean item) {
|
||||
helper.setText(R.id.tv_name, item.getRoom_name());
|
||||
ImageUtils.loadHeadCC(item.getRoom_cover(), helper.getView(R.id.image));
|
||||
helper.setText(R.id.tv_id, item.getRoom_number());
|
||||
LinearLayout llContainer = helper.getView(R.id.ll);
|
||||
llContainer.removeAllViews(); // 清空旧的 ImageView
|
||||
ImageView ivAdd = helper.getView(R.id.iv_add);
|
||||
ivAdd.setImageResource(com.qxcm.moduleutil.R.mipmap.yq_pk);
|
||||
ShadowLayout layout = helper.getView(R.id.shadow_layout);
|
||||
// layout.setShadowColor(R.color.picture_color_fa632d);
|
||||
layout.setShadowHiddenBottom(false);
|
||||
layout.setShadowHidden(false);
|
||||
layout.setShadowOffsetY(1);
|
||||
layout.setShadowOffsetX(1);
|
||||
|
||||
|
||||
helper.getView(R.id.iv_add).setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
//发起邀请
|
||||
MvpPre.sendPk(mRoomId, mUserId, item.getRoom_id());
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
};
|
||||
mBinding.rvPkAdd.setAdapter(mAdapter);
|
||||
mAdapter.bindToRecyclerView(mBinding.rvPkAdd);
|
||||
|
||||
mBinding.tvSz.setOnClickListener(v -> {
|
||||
LiveBattleSettingsDialog settingsDialog = new LiveBattleSettingsDialog(getActivity(),is_pk, new LiveBattleSettingsDialog.OnSettingsChangeListener() {
|
||||
@Override
|
||||
public void onFriendInvitationChanged(boolean isChecked) {
|
||||
// 处理好友邀请开关状态变化
|
||||
handleFriendInvitationChange(isChecked);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRecommendInvitationChanged(boolean isChecked) {
|
||||
// 处理推荐邀请开关状态变化
|
||||
handleRecommendInvitationChange(isChecked);
|
||||
}
|
||||
});
|
||||
settingsDialog.show();
|
||||
});
|
||||
}
|
||||
private void handleFriendInvitationChange(boolean isChecked) {
|
||||
// 根据 isChecked 的值更新相关逻辑,并传递参数给服务器
|
||||
// 例如:
|
||||
// MvpPre.updateFriendInvitationSetting(isChecked);
|
||||
if (isChecked){
|
||||
MvpPre.refusePk(mRoomId, "1");
|
||||
}else {
|
||||
MvpPre.refusePk(mRoomId, "2");
|
||||
}
|
||||
}
|
||||
|
||||
private void handleRecommendInvitationChange(boolean isChecked) {
|
||||
// 根据 isChecked 的值更新相关逻辑,并传递参数给服务器
|
||||
// 例如:
|
||||
// MvpPre.updateRecommendInvitationSetting(isChecked);
|
||||
}
|
||||
@Override
|
||||
protected int getLayoutId() {
|
||||
return R.layout.fragment_room_pk;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initDialogStyle(Window window) {
|
||||
super.initDialogStyle(window);
|
||||
window.setGravity(Gravity.BOTTOM);
|
||||
WindowManager.LayoutParams lp = window.getAttributes();
|
||||
lp.dimAmount = 0.6f;
|
||||
// 固定对话框的宽度和高度
|
||||
lp.width = WindowManager.LayoutParams.MATCH_PARENT; // 宽度设置为屏幕宽度
|
||||
lp.height = WindowManager.LayoutParams.WRAP_CONTENT; // 高度设置为内容高度
|
||||
|
||||
window.setAttributes(lp);
|
||||
window.addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void searchPkRoom(List<RoomBean> roomBeans) {
|
||||
mAdapter.setNewData(roomBeans);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendPk() {
|
||||
dismiss();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void refusePk() {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,340 @@
|
||||
package com.example.moduleroom.dialog;
|
||||
|
||||
import static com.qxcm.moduleutil.bean.room.RoomSettingBean.QXRoomSettingTypeRoomOrderMic;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
import android.view.Gravity;
|
||||
import android.view.View;
|
||||
import android.view.Window;
|
||||
import android.view.WindowManager;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.fragment.app.FragmentManager;
|
||||
import androidx.recyclerview.widget.GridLayoutManager;
|
||||
|
||||
import com.blankj.utilcode.util.GsonUtils;
|
||||
import com.chad.library.adapter.base.BaseQuickAdapter;
|
||||
import com.example.moduleroom.R;
|
||||
import com.example.moduleroom.adapter.RoomSettingAdapter;
|
||||
import com.example.moduleroom.contacts.RoomSettingContacts;
|
||||
import com.example.moduleroom.databinding.DialogRoomSettingFragmentBinding;
|
||||
import com.example.moduleroom.fragment.RoomBackgroundDialogFragment;
|
||||
import com.hjq.toast.ToastUtils;
|
||||
import com.qxcm.moduleutil.event.EffectEvent;
|
||||
import com.qxcm.moduleutil.event.MusicEvent;
|
||||
import com.qxcm.moduleutil.event.RoomOutEvent;
|
||||
import com.qxcm.moduleutil.listener.MessageListenerSingleton;
|
||||
import com.example.moduleroom.presenter.RoomSettingPresenter;
|
||||
import com.qxcm.moduleutil.base.BaseMvpDialogFragment;
|
||||
import com.qxcm.moduleutil.bean.RoomMessageEvent;
|
||||
import com.qxcm.moduleutil.bean.RoomSettingEvent;
|
||||
import com.qxcm.moduleutil.bean.room.RoomInfoResp;
|
||||
import com.qxcm.moduleutil.bean.room.RoomSettingBean;
|
||||
import com.qxcm.moduleutil.utils.SpUtil;
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
import org.greenrobot.eventbus.Subscribe;
|
||||
import org.greenrobot.eventbus.ThreadMode;
|
||||
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
*@author qx
|
||||
*@data 2025/6/17
|
||||
*@description: 房间设置弹框
|
||||
*/
|
||||
public class RoomSettingFragment extends BaseMvpDialogFragment<RoomSettingPresenter, DialogRoomSettingFragmentBinding> implements RoomSettingContacts.View{
|
||||
private String userId;
|
||||
private String roomId;
|
||||
RoomSettingAdapter adapter;
|
||||
List<RoomSettingBean> dataList;
|
||||
private RoomInfoResp roomInfoResp;
|
||||
private int read;
|
||||
private boolean isSelected;
|
||||
private boolean effectOn = false;//开启/关闭特效
|
||||
@Override
|
||||
protected RoomSettingPresenter bindPresenter() {
|
||||
return new RoomSettingPresenter(this, getActivity());
|
||||
}
|
||||
|
||||
public static void show(RoomInfoResp roomInfoResp, FragmentManager fragmentManager) {
|
||||
RoomSettingFragment dialogFragment = new RoomSettingFragment();
|
||||
Bundle args = new Bundle();
|
||||
args.putSerializable("roomInfoResp", roomInfoResp);
|
||||
dialogFragment.setArguments(args);
|
||||
dialogFragment.show(fragmentManager, "RoomSettingFragment");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAttach(@NonNull Context context) {
|
||||
super.onAttach(context);
|
||||
// roomId=getArguments().getString("roomId");
|
||||
roomInfoResp = (RoomInfoResp) getArguments().getSerializable("roomInfoResp");
|
||||
roomId= roomInfoResp.getRoom_info().getRoom_id();
|
||||
if (roomInfoResp.getUser_info().getIs_room_owner()!=0){
|
||||
read=1;
|
||||
}else if (roomInfoResp.getUser_info().getIs_host()!=0){
|
||||
read=3;
|
||||
}else if (roomInfoResp.getUser_info().getIs_management()!=0){
|
||||
read=2;
|
||||
}else {
|
||||
read=4;
|
||||
}
|
||||
if (roomInfoResp.getUser_info().getPit_number()!=0){
|
||||
isSelected=true;
|
||||
}else {
|
||||
isSelected=false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected void initDialogStyle(Window window) {
|
||||
super.initDialogStyle(window);
|
||||
window.setGravity(Gravity.BOTTOM);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStart() {
|
||||
super.onStart();
|
||||
EventBus.getDefault().register(this);
|
||||
Window window = getDialog().getWindow();
|
||||
if (window != null) {
|
||||
// 设置固定高度为 500dp
|
||||
int screenHeight = getResources().getDisplayMetrics().heightPixels;
|
||||
int heightInDp = (int) (screenHeight * 0.6f);;
|
||||
// int heightInPx = (int) (heightInDp * getResources().getDisplayMetrics().density);
|
||||
window.setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.WRAP_CONTENT);
|
||||
|
||||
// 可选:设置动画样式(从底部弹出)
|
||||
window.setWindowAnimations(com.qxcm.moduleutil.R.style.CommonShowDialogBottom);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStop() {
|
||||
super.onStop();
|
||||
EventBus.getDefault().unregister(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initData() {
|
||||
dataList = new ArrayList<>();
|
||||
effectOn = (SpUtil.getOpenEffect() == 1) ? true : false;
|
||||
// 添加标题和对应的内容项
|
||||
dataList.add(new RoomSettingBean("房间类型", null, null, null, -1,read,isSelected,false));
|
||||
dataList.add(new RoomSettingBean("点唱", "ic_sing", null, null, RoomSettingBean.QXRoomSettingTypeRoomTypeSing,read,isSelected, false));
|
||||
dataList.add(new RoomSettingBean("拍卖", "ic_auction", null, null, RoomSettingBean.QXRoomSettingTypeRoomTypeAuction,read,isSelected, false));
|
||||
dataList.add(new RoomSettingBean("男神", "ic_boy", null, null, RoomSettingBean.QXRoomSettingTypeRoomTypeBoy,read,isSelected, false));
|
||||
dataList.add(new RoomSettingBean("女神", "ic_girl", null, null, RoomSettingBean.QXRoomSettingTypeRoomTypeGirl,read,isSelected, false));
|
||||
|
||||
dataList.add(new RoomSettingBean("常用工具", null, null, null, -1,read,isSelected, false));
|
||||
dataList.add(new RoomSettingBean("房间补贴", "ic_subsidy", null, null, RoomSettingBean.QXRoomSettingTypeRoomSubsidy,read,isSelected, false));
|
||||
dataList.add(new RoomSettingBean("主持设置", "ic_compere", null, null, RoomSettingBean.QXRoomSettingTypeRoomCompere,read,isSelected, false));
|
||||
dataList.add(new RoomSettingBean("清空消息", "ic_clear_message", null, null, RoomSettingBean.QXRoomSettingTypeRoomClearMessage,read,isSelected, false));
|
||||
dataList.add(new RoomSettingBean("排麦模式", "ic_order_mic", null, null, QXRoomSettingTypeRoomOrderMic,read,isSelected, !roomInfoResp.getRoom_info().getRoom_up_pit_type().equals("1")));
|
||||
dataList.add(new RoomSettingBean("背景音乐", "ic_bg_music", null, null, RoomSettingBean.QXRoomSettingTypeRoomBgMusic,read,isSelected, false));
|
||||
dataList.add(new RoomSettingBean("背景图片", "ic_bg_image", null, null, RoomSettingBean.QXRoomSettingTypeRoomBgImage,read,isSelected, false));
|
||||
|
||||
dataList.add(new RoomSettingBean("更多操作", null, null, null, -1,read,isSelected, false));
|
||||
dataList.add(new RoomSettingBean("离开房间", "ic_leave", null, null, RoomSettingBean.QXRoomSettingTypeRoomLeave,read,isSelected, false));
|
||||
dataList.add(new RoomSettingBean("分享房间", "ic_share", null, null, RoomSettingBean.QXRoomSettingTypeRoomShare,read,isSelected, false));
|
||||
dataList.add(new RoomSettingBean("调音台", "ic_my_dress", null, null, RoomSettingBean.QXRoomSettingTypeRoomMyDress,read,isSelected, false));
|
||||
dataList.add(new RoomSettingBean("房间设置", "ic_room_setting", null, null, RoomSettingBean.QXRoomSettingTypeRoomSetting,read,isSelected, false));
|
||||
// dataList.add(new RoomSettingBean("房间欢迎语", "ic_welcome", null, null, RoomSettingBean.QXRoomSettingTypeRoomWelcome,read,isSelected, false));
|
||||
dataList.add(new RoomSettingBean(effectOn ? "关闭特效" : "打开特效", "ic_close_effects", null, null, RoomSettingBean.QXRoomSettingTypeRoomCloseEffects,read,isSelected, effectOn));
|
||||
dataList.add(new RoomSettingBean("意见反馈", "ic_report", null, null, RoomSettingBean.QXRoomSettingTypeRoomReport,read,isSelected, false));
|
||||
List<RoomSettingBean> filteredList = new ArrayList<>();
|
||||
// 更新 itemType
|
||||
for (RoomSettingBean bean : dataList) {
|
||||
bean.setRead(read);
|
||||
bean.setSelected(isSelected);
|
||||
// 根据角色和状态设置 isVisible
|
||||
if (isItemVisible(bean)) {
|
||||
bean.setStatus(true);
|
||||
} else {
|
||||
bean.setStatus(false);
|
||||
}
|
||||
bean.updateItemType();
|
||||
|
||||
if (bean.isStatus()){
|
||||
filteredList.add(bean);
|
||||
}
|
||||
}
|
||||
adapter = new RoomSettingAdapter(filteredList);
|
||||
mBinding.recycleView.setAdapter(adapter);
|
||||
// 动态设置 GridLayoutManager 的列数
|
||||
GridLayoutManager layoutManager = new GridLayoutManager(getContext(), 6); // 默认每行 4 个 item
|
||||
|
||||
|
||||
layoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
|
||||
@Override
|
||||
public int getSpanSize(int position) {
|
||||
RoomSettingBean item = filteredList.get(position);
|
||||
if (item.getItemType() == RoomSettingBean.ITEM_TYPE_DEFAULT) { // 标题项占满一行
|
||||
return layoutManager.getSpanCount();
|
||||
} else { // 内容项默认每行 4 个
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
});
|
||||
// 根据 itemType 动态调整列数
|
||||
mBinding.recycleView.setLayoutManager(layoutManager);
|
||||
|
||||
adapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
|
||||
@Override
|
||||
public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
|
||||
RoomSettingBean bean = (RoomSettingBean) adapter.getItem(position);
|
||||
|
||||
// 示例:切换选择状态
|
||||
if (bean.getType() == QXRoomSettingTypeRoomOrderMic) {
|
||||
MvpPre.changeRoom(roomId, SpUtil.getUserId()+"",position, bean);
|
||||
|
||||
}else if (bean.getType() == RoomSettingBean.QXRoomSettingTypeRoomClearMessage){
|
||||
RoomMessageEvent.T t = new RoomMessageEvent.T();
|
||||
t.setText("清空消息");
|
||||
RoomMessageEvent roomMessageEvent = new RoomMessageEvent(123, roomId, t);
|
||||
EventBus.getDefault().post(roomMessageEvent);
|
||||
String json = GsonUtils.toJson(roomMessageEvent);
|
||||
// 转换为 byte[]
|
||||
byte[] binaryData = json.getBytes(StandardCharsets.UTF_8);
|
||||
// 创建自定义消息
|
||||
MessageListenerSingleton.getInstance().sendCustomRoomMessage(
|
||||
roomId,
|
||||
binaryData
|
||||
);
|
||||
} else if (bean.getType()==RoomSettingBean.QXRoomSettingTypeRoomMyDress) {
|
||||
TunerDialogFragment.show(roomId, getChildFragmentManager());
|
||||
} else if (bean.getType()==RoomSettingBean.QXRoomSettingTypeRoomCompere) {//主持设置
|
||||
RoomHostFragment.newInstance(roomId).show(getChildFragmentManager(), "RoomHostFragment");
|
||||
}else if (bean.getType()==RoomSettingBean.QXRoomSettingTypeRoomBgImage){//背景图片
|
||||
RoomBackgroundDialogFragment.newInstance(roomId).show(getChildFragmentManager(), "RoomBackgroundDialogFragment");
|
||||
}else if (bean.getType()==RoomSettingBean.QXRoomSettingTypeRoomCloseEffects){//关闭特效
|
||||
if (effectOn) {
|
||||
//关闭
|
||||
effectOn = false;
|
||||
//保存到本地
|
||||
SpUtil.setOpenEffect(0);
|
||||
EventBus.getDefault().post(new EffectEvent(false));
|
||||
bean.setStatus(true);
|
||||
} else {
|
||||
//打开
|
||||
effectOn = true;
|
||||
SpUtil.setOpenEffect(1);
|
||||
EventBus.getDefault().post(new EffectEvent(true));
|
||||
bean.setStatus(false);
|
||||
}
|
||||
adapter.notifyItemChanged(position);
|
||||
}else if (bean.getType()==RoomSettingBean.QXRoomSettingTypeRoomBgMusic){
|
||||
EventBus.getDefault().post(new MusicEvent());
|
||||
|
||||
dismiss();
|
||||
}else if (bean.getType()==RoomSettingBean.QXRoomSettingTypeRoomLeave){
|
||||
EventBus.getDefault().post(new RoomOutEvent());
|
||||
}else if (bean.getType()==RoomSettingBean.QXRoomSettingTypeRoomTypeSing){
|
||||
MvpPre.changeRoomType(roomId, "1");
|
||||
}else if (bean.getType()==RoomSettingBean.QXRoomSettingTypeRoomTypeAuction){
|
||||
MvpPre.changeRoomType(roomId, "2");
|
||||
}else if (bean.getType()==RoomSettingBean.QXRoomSettingTypeRoomTypeBoy){
|
||||
|
||||
}else if (bean.getType()==RoomSettingBean.QXRoomSettingTypeRoomTypeGirl){
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
private boolean isItemVisible(RoomSettingBean bean) {
|
||||
int type = bean.getType();
|
||||
int roleLevel = bean.getRead(); // 角色等级
|
||||
boolean onMic = bean.isSelected(); // 是否在麦位上
|
||||
|
||||
// 房主显示全部
|
||||
if (roleLevel == 1 ) {
|
||||
if (!onMic && type == RoomSettingBean.QXRoomSettingTypeRoomBgMusic ){
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}else if (roleLevel == 3 && onMic) {// 主持且在麦位上
|
||||
if (type == RoomSettingBean.QXRoomSettingTypeRoomSubsidy ||
|
||||
type == RoomSettingBean.QXRoomSettingTypeRoomClearMessage ||
|
||||
type == QXRoomSettingTypeRoomOrderMic ||
|
||||
type == RoomSettingBean.QXRoomSettingTypeRoomBgMusic) {
|
||||
return true;
|
||||
}
|
||||
// 更多操作条目也显示
|
||||
if (type >= RoomSettingBean.QXRoomSettingTypeRoomLeave &&
|
||||
type <= RoomSettingBean.QXRoomSettingTypeRoomReport) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}else if (roleLevel == 3 && !onMic && type == RoomSettingBean.QXRoomSettingTypeRoomBgMusic) { // 主持但不在麦位上时,隐藏背景音乐
|
||||
return false;
|
||||
}else { // 普通用户只显示更多操作中的特定条目
|
||||
return type == RoomSettingBean.QXRoomSettingTypeRoomLeave ||
|
||||
type == RoomSettingBean.QXRoomSettingTypeRoomShare ||
|
||||
type == RoomSettingBean.QXRoomSettingTypeRoomMyDress ||
|
||||
type == RoomSettingBean.QXRoomSettingTypeRoomCloseEffects ||
|
||||
type == RoomSettingBean.QXRoomSettingTypeRoomReport;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected void initView() {
|
||||
mBinding.cl.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
PublishCommentDialogFragment.show(getChildFragmentManager());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
public void onRoomSettingEvent(RoomSettingEvent event) {
|
||||
if (event.getType()==1014){
|
||||
for (int i = 0; i < dataList.size(); i++){
|
||||
RoomSettingBean bean = (RoomSettingBean) adapter.getItem(i);
|
||||
if (bean.getType()==QXRoomSettingTypeRoomOrderMic){
|
||||
if (event.getRoom_up_pit_type()==2){
|
||||
bean.setStatus(true);
|
||||
adapter.notifyItemChanged(i);
|
||||
}else {
|
||||
bean.setStatus(false);
|
||||
adapter.notifyItemChanged(i);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected int getLayoutId() {
|
||||
return R.layout.dialog_room_setting_fragment;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void changeRoomSuccess(String s, int position, RoomSettingBean bean) {
|
||||
// if (bean.getName().contains("排麦")){
|
||||
// bean.setName("自由模式");
|
||||
// bean.setStatus( true);
|
||||
// adapter.notifyItemChanged(position);
|
||||
// }else {
|
||||
// bean.setName("排麦模式");
|
||||
// bean.setStatus( false);
|
||||
// adapter.notifyItemChanged(position);
|
||||
// }
|
||||
}
|
||||
|
||||
@Override
|
||||
public void changeRoomType(String s) {
|
||||
ToastUtils.show(s);
|
||||
dismiss();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,437 @@
|
||||
package com.example.moduleroom.dialog;
|
||||
|
||||
import static android.view.View.GONE;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.fragment.app.FragmentManager;
|
||||
|
||||
import android.view.Gravity;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.Window;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.example.moduleroom.R;
|
||||
import com.example.moduleroom.contacts.RoomUserContacts;
|
||||
import com.example.moduleroom.databinding.FragmentRoomUserInfoBinding;
|
||||
import com.example.moduleroom.fragment.RelationshipFragment;
|
||||
import com.example.moduleroom.fragment.RequestFragment;
|
||||
import com.example.moduleroom.fragment.RoomChartsFragment;
|
||||
import com.example.moduleroom.fragment.RoomFragment;
|
||||
import com.example.moduleroom.presenter.RoomUserPresenter;
|
||||
import com.example.zhouwei.library.CustomPopWindow;
|
||||
import com.hjq.toast.ToastUtils;
|
||||
import com.qxcm.moduleutil.activity.IPresenter;
|
||||
import com.qxcm.moduleutil.adapter.MyFragmentPagerAdapter;
|
||||
import com.qxcm.moduleutil.base.BaseMvpDialogFragment;
|
||||
import com.qxcm.moduleutil.bean.UserInfo;
|
||||
import com.qxcm.moduleutil.utils.ImageUtils;
|
||||
import com.qxcm.moduleutil.utils.SpUtil;
|
||||
import com.tencent.imsdk.v2.V2TIMConversation;
|
||||
import com.tencent.qcloud.tuicore.TUIConstants;
|
||||
import com.tencent.qcloud.tuikit.tuichat.classicui.page.TUIC2CChatActivity;
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author qx
|
||||
* @data 2025/6/13
|
||||
* @description: 点击房间用户展示
|
||||
*/
|
||||
public class RoomUserInfoFragment extends BaseMvpDialogFragment<RoomUserPresenter, FragmentRoomUserInfoBinding> implements RoomUserContacts.View {
|
||||
|
||||
private String room_id, user_id, pit_number;
|
||||
private UserInfo userInfo;
|
||||
CustomPopWindow mCustomPopWindow;
|
||||
private String is_room_owner;//是否是房主
|
||||
private String is_host;//是否是主持
|
||||
private String is_management;//是否是管理
|
||||
private int type;//1:房主并且是在支持麦 2:管理员并且在支持麦 3:主持并且在支持麦 4:普通用户
|
||||
private String value;
|
||||
private View contentView;
|
||||
boolean isPk;
|
||||
|
||||
@Override
|
||||
protected RoomUserPresenter bindPresenter() {
|
||||
return new RoomUserPresenter(this, getActivity());
|
||||
}
|
||||
|
||||
public static void show(String room_id, String user_id, String pit_number, int type,boolean isPk, FragmentManager fragmentManager) {
|
||||
RoomUserInfoFragment dialogFragment = new RoomUserInfoFragment();
|
||||
Bundle args = new Bundle();
|
||||
args.putString("roomId", room_id); // 可选:传递参数
|
||||
args.putString("userId", user_id);
|
||||
args.putString("pit_number", pit_number);
|
||||
args.putInt("type", type);
|
||||
args.putBoolean("isPk", isPk);
|
||||
dialogFragment.setArguments(args);
|
||||
dialogFragment.show(fragmentManager, "RoomUserInfoFragment");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAttach(@NonNull Context context) {
|
||||
super.onAttach(context);
|
||||
room_id = getArguments().getString("roomId");
|
||||
user_id = getArguments().getString("userId");
|
||||
pit_number = getArguments().getString("pit_number");
|
||||
type = getArguments().getInt("type");
|
||||
value = getArguments().getString("value");
|
||||
isPk = getArguments().getBoolean("isPk");
|
||||
if (isPk){
|
||||
type=4;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initDialogStyle(Window window) {
|
||||
super.initDialogStyle(window);
|
||||
window.setGravity(Gravity.BOTTOM);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStart() {
|
||||
super.onStart();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStop() {
|
||||
super.onStop();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initData() {
|
||||
MvpPre.getRoomUserInfo(room_id, user_id);
|
||||
if (type == 0) {
|
||||
mBinding.roomDian.setVisibility(GONE);
|
||||
} else {
|
||||
mBinding.roomDian.setVisibility(View.VISIBLE);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@SuppressLint("UseCompatLoadingForDrawables")
|
||||
@Override
|
||||
protected void initView() {
|
||||
String[] title = new String[]{"关系卡", "关系位"};
|
||||
List<Fragment> fragments = new ArrayList<>();
|
||||
fragments.add(RelationshipFragment.newInstance());
|
||||
fragments.add(RelationshipFragment.newInstance());
|
||||
MyFragmentPagerAdapter myFragmentPagerAdapter = new MyFragmentPagerAdapter(fragments, getChildFragmentManager());
|
||||
mBinding.vpRelationship.setAdapter(myFragmentPagerAdapter);
|
||||
mBinding.slidingTabLayout.setViewPager(mBinding.vpRelationship, title);
|
||||
|
||||
|
||||
|
||||
mBinding.roomMCz.setOnClickListener(this::onClick);
|
||||
mBinding.roomDian.setOnClickListener(this::onClick);
|
||||
mBinding.imRoomT.setOnClickListener(this::onClick);
|
||||
mBinding.imRoomLt.setOnClickListener(this::onClick);
|
||||
mBinding.imRoomGz.setOnClickListener(this::onClick);
|
||||
mBinding.imRoomSl.setOnClickListener(this::onClick);
|
||||
mBinding.roomLh.setOnClickListener(this::onClick);
|
||||
}
|
||||
|
||||
|
||||
private void onClick(View view) {
|
||||
int id = view.getId();
|
||||
if (id == R.id.room_m_cz) {
|
||||
if (mBinding.roomMCz.getText().equals("上麦")) {
|
||||
|
||||
} else {
|
||||
MvpPre.hostUserPit(room_id, pit_number, user_id, "2");
|
||||
}
|
||||
} else if (id == R.id.room_dian) {
|
||||
contentView = LayoutInflater.from(getContext()).inflate(R.layout.pop_menu, null);
|
||||
//处理popWindow 显示内容
|
||||
handleLogic(contentView);
|
||||
//创建并显示popWindow
|
||||
mCustomPopWindow = new CustomPopWindow.PopupWindowBuilder(getContext())
|
||||
.setView(contentView)
|
||||
.create()
|
||||
.showAsDropDown(mBinding.roomMCz, 0, 20);
|
||||
} else if (id == R.id.im_room_t) {
|
||||
EventBus.getDefault().post(userInfo);
|
||||
dismiss();
|
||||
} else if (id == R.id.im_room_lt) {
|
||||
Intent intent=new Intent(getActivity(), TUIC2CChatActivity.class);
|
||||
intent.putExtra(TUIConstants.TUIChat.CHAT_ID, "u"+userInfo.getUser_id());
|
||||
intent.putExtra(TUIConstants.TUIChat.CHAT_TYPE, V2TIMConversation.V2TIM_C2C);
|
||||
startActivity(intent);
|
||||
} else if (id == R.id.im_room_gz) {
|
||||
MvpPre.userGuanz(user_id, "1");
|
||||
}else if (id == R.id.im_room_sl){
|
||||
userInfo.setPit_number(pit_number);
|
||||
RoomGiftDialogFragment.show( null,userInfo, room_id,getParentFragmentManager());
|
||||
dismiss();
|
||||
}else if (id == R.id.room_lh){
|
||||
MvpPre.addBlackList(user_id);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理弹出显示内容、点击事件等逻辑
|
||||
*
|
||||
* @param contentView
|
||||
*/
|
||||
private void handleLogic(View contentView) {
|
||||
View.OnClickListener listener = new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
if (mCustomPopWindow != null) {
|
||||
mCustomPopWindow.dissmiss();
|
||||
}
|
||||
String showContent = "";
|
||||
int id = v.getId();
|
||||
if (id == R.id.action_set_manager) {
|
||||
if (userInfo.getIs_manager().equals("1")) {
|
||||
MvpPre.postHostAdd(room_id, user_id, "2", "2");
|
||||
} else {
|
||||
MvpPre.postHostAdd(room_id, user_id, "2", "1");
|
||||
}
|
||||
} else if (id == R.id.action_set_host) {
|
||||
if (userInfo.getIs_host().equals("1")) {
|
||||
MvpPre.postHostAdd(room_id, user_id, "1", "2");
|
||||
} else {
|
||||
MvpPre.postHostAdd(room_id, user_id, "1", "1");
|
||||
}
|
||||
} else if (id == R.id.action_mute) {
|
||||
if (userInfo.getIs_mute_pit().equals("1")) {
|
||||
MvpPre.setMutePit(room_id, user_id, "4");
|
||||
} else {
|
||||
MvpPre.setMutePit(room_id, user_id, "2");
|
||||
}
|
||||
} else if (id == R.id.action_kick_out) {
|
||||
MvpPre.kickOutRoom(room_id, user_id);
|
||||
} else if (id == R.id.action_ban) {
|
||||
if (userInfo.getIs_mute().equals("1")) {
|
||||
MvpPre.setMutePit(room_id, user_id, "3");
|
||||
} else {
|
||||
MvpPre.setMutePit(room_id, user_id, "1");
|
||||
}
|
||||
} else if (id == R.id.action_report) {
|
||||
showContent = "点击 Item菜单6";
|
||||
} else if (id == R.id.action_blacklist) {
|
||||
MvpPre.addBlackList(user_id);
|
||||
}
|
||||
ToastUtils.show(showContent);
|
||||
mCustomPopWindow.dissmiss();
|
||||
}
|
||||
};
|
||||
((TextView) contentView.findViewById(R.id.action_set_manager)).setText(getValue(type, "is_manager"));
|
||||
((TextView) contentView.findViewById(R.id.action_set_host)).setText(getValue(type, "is_host"));
|
||||
((TextView) contentView.findViewById(R.id.action_mute)).setText(getValue(type, "is_mute"));
|
||||
((TextView) contentView.findViewById(R.id.action_ban)).setText(getValue(type, "is_mute_pit"));
|
||||
|
||||
|
||||
contentView.findViewById(R.id.action_set_manager).setOnClickListener(listener);
|
||||
contentView.findViewById(R.id.action_set_host).setOnClickListener(listener);
|
||||
contentView.findViewById(R.id.action_mute).setOnClickListener(listener);
|
||||
contentView.findViewById(R.id.action_kick_out).setOnClickListener(listener);
|
||||
contentView.findViewById(R.id.action_ban).setOnClickListener(listener);
|
||||
contentView.findViewById(R.id.action_report).setOnClickListener(listener);
|
||||
contentView.findViewById(R.id.action_blacklist).setOnClickListener(listener);
|
||||
|
||||
if (type != 1) {
|
||||
contentView.findViewById(R.id.action_set_manager).setVisibility(GONE);
|
||||
}
|
||||
if (type != 1 && type != 2) {
|
||||
contentView.findViewById(R.id.action_set_host).setVisibility(GONE);
|
||||
}
|
||||
}
|
||||
|
||||
private String getValue(int type, String key) {
|
||||
Map<String, String> textMap = new HashMap<>();
|
||||
textMap.put("is_manager", userInfo.getIs_manager().equals("1") ? "取消管理" : "设为管理");
|
||||
textMap.put("is_host", userInfo.getIs_host().equals("1") ? "取消主持" : "设为主持");
|
||||
textMap.put("is_mute", userInfo.getIs_mute().equals("1") ? "开麦" : "禁麦");
|
||||
textMap.put("is_mute_pit", userInfo.getIs_mute_pit().equals("1") ? "解除禁言" : "禁言");
|
||||
|
||||
switch (type) {
|
||||
case 1:
|
||||
if ("is_manager".equals(key)) return textMap.get("is_manager");
|
||||
if ("is_host".equals(key)) return textMap.get("is_host");
|
||||
if ("is_mute".equals(key)) return textMap.get("is_mute");
|
||||
if ("is_mute_pit".equals(key)) return textMap.get("is_mute_pit");
|
||||
break;
|
||||
case 2:
|
||||
if ("is_host".equals(key)) return textMap.get("is_host");
|
||||
if ("is_mute".equals(key)) return textMap.get("is_mute");
|
||||
if ("is_mute_pit".equals(key)) return textMap.get("is_mute_pit");
|
||||
break;
|
||||
default:
|
||||
if ("is_mute".equals(key)) return textMap.get("is_mute");
|
||||
if ("is_mute_pit".equals(key)) return textMap.get("is_mute_pit");
|
||||
break;
|
||||
}
|
||||
|
||||
return "";
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getLayoutId() {
|
||||
return R.layout.fragment_room_user_info;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void getRoomUserInfo(UserInfo userInfo1) {
|
||||
userInfo = userInfo1;
|
||||
// ImageUtils.loadHeadCC(userInfo.getAvatar(), mBinding.ivAvatar);
|
||||
mBinding.ivAvatar.setData(userInfo.getAvatar(), "", userInfo.getSex() + "");
|
||||
mBinding.tvName.setText(userInfo.getNickname());
|
||||
mBinding.tvId.setText("ID:" + userInfo.getUser_id());
|
||||
if (userInfo.getIs_in_pit() == 1) {
|
||||
mBinding.roomMCz.setText("下麦");
|
||||
} else {
|
||||
mBinding.roomMCz.setText("上麦");
|
||||
}
|
||||
if(userInfo.getIs_follow()==1){
|
||||
mBinding.imRoomGz.setImageDrawable(getResources().getDrawable(com.qxcm.moduleutil.R.mipmap.room_ygz));
|
||||
}else {
|
||||
mBinding.imRoomGz.setImageDrawable(getResources().getDrawable(com.qxcm.moduleutil.R.mipmap.room_gz));
|
||||
}
|
||||
|
||||
// if (userInfo.getRoom_id().equals(room_id)){
|
||||
// mBinding.imGs.setVisibility(GONE);
|
||||
// }else {
|
||||
// mBinding.imGs.setVisibility(View.VISIBLE);
|
||||
// }
|
||||
updateUIBasedOnTypeAndUser();
|
||||
}
|
||||
private void updateUIBasedOnTypeAndUser() {
|
||||
int userId= SpUtil.getUserId();
|
||||
boolean isSelf =userId==userInfo.getUser_id();
|
||||
|
||||
switch (type) {
|
||||
case 1: // 房主
|
||||
case 2: // 管理员
|
||||
case 3: // 主持
|
||||
if (isSelf) {
|
||||
mBinding.roomDian.setVisibility(View.GONE);
|
||||
mBinding.roomJb.setVisibility(View.GONE);
|
||||
mBinding.roomLh.setVisibility(View.GONE);
|
||||
mBinding.roomBo.setVisibility(View.GONE);
|
||||
} else {
|
||||
mBinding.roomDian.setVisibility(View.VISIBLE);
|
||||
mBinding.roomJb.setVisibility(View.GONE);
|
||||
mBinding.roomLh.setVisibility(View.GONE);
|
||||
mBinding.roomBo.setVisibility(View.VISIBLE);
|
||||
}
|
||||
break;
|
||||
case 4: // 普通用户
|
||||
mBinding.roomDian.setVisibility(View.GONE);
|
||||
if (isSelf) {
|
||||
mBinding.roomJb.setVisibility(View.GONE);
|
||||
mBinding.roomLh.setVisibility(View.GONE);
|
||||
mBinding.roomBo.setVisibility(View.GONE);
|
||||
mBinding.roomMCz.setVisibility(View.VISIBLE);
|
||||
} else {
|
||||
mBinding.roomJb.setVisibility(View.VISIBLE);
|
||||
mBinding.roomLh.setVisibility(View.VISIBLE);
|
||||
mBinding.roomBo.setVisibility(View.VISIBLE);
|
||||
mBinding.roomMCz.setVisibility(View.GONE);
|
||||
}
|
||||
break;
|
||||
case 0:
|
||||
mBinding.roomDian.setVisibility(View.GONE);
|
||||
if (isSelf) {
|
||||
mBinding.roomJb.setVisibility(View.GONE);
|
||||
mBinding.roomLh.setVisibility(View.GONE);
|
||||
mBinding.roomBo.setVisibility(View.GONE);
|
||||
mBinding.roomMCz.setVisibility(View.VISIBLE);
|
||||
} else {
|
||||
mBinding.roomJb.setVisibility(View.VISIBLE);
|
||||
mBinding.roomLh.setVisibility(View.VISIBLE);
|
||||
mBinding.roomBo.setVisibility(View.VISIBLE);
|
||||
mBinding.roomMCz.setVisibility(View.GONE);
|
||||
}
|
||||
default:
|
||||
// 默认处理
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void downPit() {
|
||||
dismiss();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void kickOutRoom() {
|
||||
dismiss();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void postHostAdd(String s, String type, String is_add) {
|
||||
if (type.equals("2")) {
|
||||
if (is_add.equals("1")) {
|
||||
userInfo.setIs_manager("1");
|
||||
ToastUtils.show("添加管理员成功");
|
||||
handleLogic(contentView);
|
||||
} else {
|
||||
userInfo.setIs_manager("0");
|
||||
ToastUtils.show("取消管理员");
|
||||
handleLogic(contentView);
|
||||
}
|
||||
} else if (type.equals("1")) {
|
||||
if (is_add.equals("1")) {
|
||||
userInfo.setIs_host("1");
|
||||
ToastUtils.show("添加主持人成功");
|
||||
handleLogic(contentView);
|
||||
} else {
|
||||
userInfo.setIs_host("0");
|
||||
ToastUtils.show("取消主持人成功");
|
||||
handleLogic(contentView);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setMutePit(String user_id, String is_mute) {
|
||||
if (is_mute.equals("1")) {
|
||||
userInfo.setIs_mute("1");
|
||||
} else if (is_mute.equals("3")) {
|
||||
userInfo.setIs_mute("0");
|
||||
} else if (is_mute.equals("2")) {
|
||||
userInfo.setIs_mute_pit("1");
|
||||
} else if (is_mute.equals("4")) {
|
||||
userInfo.setIs_mute_pit("0");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addBlackList() {
|
||||
dismiss();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void userGuanzSuccess(String s) {
|
||||
if (userInfo.getIs_follow()==1){
|
||||
userInfo.setIs_follow(0);
|
||||
mBinding.imRoomGz.setImageDrawable(getResources().getDrawable(com.qxcm.moduleutil.R.mipmap.room_gz));
|
||||
}else {
|
||||
userInfo.setIs_follow(1);
|
||||
mBinding.imRoomGz.setImageDrawable(getResources().getDrawable(com.qxcm.moduleutil.R.mipmap.room_ygz));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void hostUserPit() {
|
||||
dismiss();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,232 @@
|
||||
package com.example.moduleroom.dialog;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
import android.text.TextUtils;
|
||||
import android.view.Gravity;
|
||||
import android.view.View;
|
||||
import android.view.Window;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.fragment.app.FragmentManager;
|
||||
import androidx.fragment.app.FragmentStatePagerAdapter;
|
||||
|
||||
import com.example.moduleroom.R;
|
||||
import com.example.moduleroom.adapter.GiftUserAdapter;
|
||||
import com.example.moduleroom.databinding.DialogRoomWheatGiftBinding;
|
||||
import com.example.moduleroom.databinding.RoomGiftDialogBinding;
|
||||
import com.hjq.toast.ToastUtils;
|
||||
import com.qxcm.moduleutil.adapter.GiftTwoDetailsFragment;
|
||||
import com.qxcm.moduleutil.base.BaseMvpDialogFragment;
|
||||
import com.qxcm.moduleutil.bean.GiftLabelBean;
|
||||
import com.qxcm.moduleutil.bean.GiftNumBean;
|
||||
import com.qxcm.moduleutil.bean.RewardUserBean;
|
||||
import com.qxcm.moduleutil.bean.RoomWheatEvent;
|
||||
import com.qxcm.moduleutil.bean.RoonGiftModel;
|
||||
import com.qxcm.moduleutil.bean.WalletBean;
|
||||
import com.qxcm.moduleutil.bean.room.RoomAuction;
|
||||
import com.qxcm.moduleutil.bean.room.RoomInfoResp;
|
||||
import com.qxcm.moduleutil.dialog.RechargeDialogFragment;
|
||||
import com.qxcm.moduleutil.event.GiftDoubleClickEvent;
|
||||
import com.qxcm.moduleutil.event.GiftUserRefreshEvent;
|
||||
import com.qxcm.moduleutil.event.RoomGiftGiveEvent;
|
||||
import com.qxcm.moduleutil.presenter.RewardGiftContacts;
|
||||
import com.qxcm.moduleutil.presenter.RewardGiftPresenter;
|
||||
import com.qxcm.moduleutil.utils.SpUtil;
|
||||
import com.qxcm.moduleutil.widget.dialog.KeyboardPopupWindow;
|
||||
import com.qxcm.moduleutil.widget.dialog.SelectGiftNumPopupWindow;
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
import org.greenrobot.eventbus.Subscribe;
|
||||
import org.greenrobot.eventbus.ThreadMode;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
*@author qx
|
||||
*@data 2025/6/17
|
||||
*@description: 设置插队礼物
|
||||
*/
|
||||
public class RoomWheatGiftSettingFragment extends BaseMvpDialogFragment<RewardGiftPresenter, DialogRoomWheatGiftBinding> implements RewardGiftContacts.View {
|
||||
private RoonGiftModel roonGiftModel = null;
|
||||
private List<Fragment> fragmentList = new ArrayList<>();
|
||||
private List<GiftNumBean> mGiftNumList;
|
||||
private String roomId;
|
||||
|
||||
@Override
|
||||
protected RewardGiftPresenter bindPresenter() {
|
||||
return new RewardGiftPresenter(this, getActivity());
|
||||
}
|
||||
|
||||
public static void show(String id, FragmentManager fragmentManager) {
|
||||
RoomWheatGiftSettingFragment dialogFragment = new RoomWheatGiftSettingFragment();
|
||||
Bundle args = new Bundle();
|
||||
args.putString("roomId", id); // 可选:传递参数
|
||||
dialogFragment.setArguments(args);
|
||||
dialogFragment.show(fragmentManager, "RewardGiftDialogFragment");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAttach(@NonNull Context context) {
|
||||
super.onAttach(context);
|
||||
roomId = getArguments().getString("roomId");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initDialogStyle(Window window) {
|
||||
super.initDialogStyle(window);
|
||||
window.setGravity(Gravity.BOTTOM);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initData() {
|
||||
// MvpPre.getRewardList("1", 1, 10);
|
||||
|
||||
mBinding.viewPager.setAdapter(new MyFragmentPagerAdapter(getChildFragmentManager(), fragmentList));
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initView() {
|
||||
|
||||
mBinding.tvWheatQx.setOnClickListener(this::onClisk);
|
||||
mBinding.tvWheatQd.setOnClickListener(this::onClisk);
|
||||
|
||||
}
|
||||
|
||||
private void onClisk(View view1) {
|
||||
if (view1.getId() == R.id.tv_wheat_qd) {
|
||||
giveGift("1");
|
||||
} else if (view1.getId() == R.id.tv_wheat_qx) {
|
||||
dismiss();
|
||||
}
|
||||
}
|
||||
|
||||
private String giftNumber = "";
|
||||
private RoomGiftGiveEvent roomGiftGiveEvent;
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
public void onGiftDoubleClickEvent(GiftDoubleClickEvent event) {
|
||||
getSelectedGift();
|
||||
giveGift("1");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStart() {
|
||||
super.onStart();
|
||||
EventBus.getDefault().register(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
super.onDestroy();
|
||||
EventBus.getDefault().unregister(this);
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
public void userRefresh(GiftUserRefreshEvent event) {
|
||||
roonGiftModel = event.gift;
|
||||
}
|
||||
|
||||
private int getSelectedGift() {
|
||||
int currentItem = mBinding.viewPager.getCurrentItem();
|
||||
GiftTwoDetailsFragment fragment = (GiftTwoDetailsFragment) fragmentList.get(currentItem);
|
||||
roonGiftModel = fragment.getGiftList();
|
||||
return currentItem;
|
||||
}
|
||||
|
||||
private void giveGift(String num) {
|
||||
getSelectedGift();
|
||||
int currentItem = mBinding.viewPager.getCurrentItem();
|
||||
if (currentItem < 1) {
|
||||
if (roonGiftModel == null) {
|
||||
ToastUtils.show("请选择礼物");
|
||||
return;
|
||||
}
|
||||
|
||||
} else {
|
||||
if (roonGiftModel == null) {
|
||||
ToastUtils.show("请选择礼物");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (currentItem == 0) {
|
||||
//礼物打赏
|
||||
giftNumber = num;
|
||||
MvpPre.setRoomApply(roomId, roonGiftModel.getGift_id(),roonGiftModel.getGift_price());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getLayoutId() {
|
||||
return R.layout.dialog_room_wheat_gift;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void getRewardList(List<RewardUserBean> rewardUserBeanList) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void getGiftLabel(List<GiftLabelBean> giftLabelBeans) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setGiftList(List<RoonGiftModel> roonGiftModels, int type) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void giveGift() {
|
||||
// dismiss();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void wallet(WalletBean walletBean) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void reward_zone() {
|
||||
EventBus.getDefault().post(new RoomWheatEvent());
|
||||
dismiss();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void roomAuctionJoin(RoomAuction.AuctionListBean auctionListBean) {
|
||||
|
||||
}
|
||||
|
||||
private static class MyFragmentPagerAdapter extends FragmentStatePagerAdapter {
|
||||
|
||||
private List<Fragment> fragmentList;
|
||||
|
||||
|
||||
public MyFragmentPagerAdapter(FragmentManager fm, List<Fragment> fragmentList) {
|
||||
super(fm);
|
||||
this.fragmentList = fragmentList;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Fragment getItem(int position) {
|
||||
Fragment fragment = GiftTwoDetailsFragment.newInstance("5", 1);
|
||||
fragmentList.add(fragment); // 保存 Fragment 实例
|
||||
return fragment;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getCount() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public CharSequence getPageTitle(int position) {
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,230 @@
|
||||
package com.example.moduleroom.dialog;
|
||||
|
||||
import static com.qxcm.moduleutil.utils.ImageUtils.copyAssetToFile;
|
||||
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.os.Environment;
|
||||
import android.view.Gravity;
|
||||
import android.view.View;
|
||||
import android.view.Window;
|
||||
import android.view.WindowManager;
|
||||
import android.widget.Button;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.core.content.ContextCompat;
|
||||
import androidx.fragment.app.FragmentManager;
|
||||
|
||||
import com.example.moduleroom.R;
|
||||
import com.example.moduleroom.adapter.RoomOnlineAdapter;
|
||||
import com.example.moduleroom.contacts.WheatContacts;
|
||||
import com.example.moduleroom.databinding.FragmentSoundDialogBinding;
|
||||
import com.example.moduleroom.databinding.FragmentWheatFeedingDialogBinding;
|
||||
import com.example.moduleroom.presenter.WheatPresenter;
|
||||
import com.qxcm.moduleutil.base.BaseMvpDialogFragment;
|
||||
import com.qxcm.moduleutil.bean.room.RoomApplyListBean;
|
||||
import com.qxcm.moduleutil.rtc.AgoraManager;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
/**
|
||||
*@author qx
|
||||
*@data 2025/6/17
|
||||
*@description: 音效弹框
|
||||
*/
|
||||
public class SoundEffectsDialogFragment extends BaseMvpDialogFragment<WheatPresenter, FragmentSoundDialogBinding> implements
|
||||
WheatContacts.View {
|
||||
private int page;
|
||||
private RoomOnlineAdapter roomOnlineAdapter;
|
||||
@Override
|
||||
protected WheatPresenter bindPresenter() {
|
||||
return new WheatPresenter(this, getActivity());
|
||||
}
|
||||
public static void show(String id, FragmentManager fragmentManager) {
|
||||
SoundEffectsDialogFragment dialogFragment = new SoundEffectsDialogFragment();
|
||||
Bundle args = new Bundle();
|
||||
args.putString("roomId", id); // 可选:传递参数
|
||||
dialogFragment.setArguments(args);
|
||||
dialogFragment.show(fragmentManager, "SoundEffectsDialogFragment");
|
||||
}
|
||||
@Override
|
||||
protected void initData() {
|
||||
// MvpPre.getRoomOnline(getArguments().getString("roomId"), "1", "10");
|
||||
}
|
||||
@Override
|
||||
public void onStart() {
|
||||
super.onStart();
|
||||
Window window = getDialog().getWindow();
|
||||
if (window != null) {
|
||||
// 设置固定高度为 500dp
|
||||
int screenHeight = getResources().getDisplayMetrics().heightPixels;
|
||||
int heightInDp = (int) (screenHeight * 0.4f);;
|
||||
// int heightInPx = (int) (heightInDp * getResources().getDisplayMetrics().density);
|
||||
window.setLayout(WindowManager.LayoutParams.MATCH_PARENT, heightInDp);
|
||||
|
||||
// 可选:设置动画样式(从底部弹出)
|
||||
window.setWindowAnimations(com.qxcm.moduleutil.R.style.CommonShowDialogBottom);
|
||||
}
|
||||
}
|
||||
|
||||
// 用于记录选中的位置
|
||||
private int selectedPosition = -1;
|
||||
|
||||
// 所有点击项的集合
|
||||
private final List<View> clickableViews = new ArrayList<>();
|
||||
|
||||
// 背景资源
|
||||
private static final int BG_DEFAULT = com.qxcm.moduleutil.R.mipmap.suound_bj;
|
||||
private static final int BG_SELECTED = com.qxcm.moduleutil.R.mipmap.suound_bjs;
|
||||
private static final int BTN_BG_SELECTED = com.qxcm.moduleutil.R.mipmap.y_won;
|
||||
private static final int BTN_BG_DEFAULT = com.qxcm.moduleutil.R.mipmap.y_w;
|
||||
|
||||
private static final int TEXT_COLOR_SELECTED = com.qxcm.moduleutil.R.color.color_FF333333;
|
||||
private static final int TEXT_COLOR_DEFAULT = com.qxcm.moduleutil.R.color.white;
|
||||
|
||||
private final List<Button> buttonList = new ArrayList<>();
|
||||
private final List<TextView> textViewList = new ArrayList<>();
|
||||
|
||||
|
||||
@Override
|
||||
protected void initView() {
|
||||
// 添加所有点击项到集合中
|
||||
clickableViews.add(mBinding.cl1);
|
||||
clickableViews.add(mBinding.cl2);
|
||||
clickableViews.add(mBinding.cl3);
|
||||
clickableViews.add(mBinding.cl4);
|
||||
clickableViews.add(mBinding.cl5);
|
||||
|
||||
// 初始化 Button 和 TextView 列表
|
||||
buttonList.add(mBinding.bottom1);
|
||||
buttonList.add(mBinding.bottom2);
|
||||
buttonList.add(mBinding.bottom3);
|
||||
buttonList.add(mBinding.bottom4);
|
||||
buttonList.add(mBinding.bottom5);
|
||||
|
||||
textViewList.add(mBinding.tv1);
|
||||
textViewList.add(mBinding.tv2);
|
||||
textViewList.add(mBinding.tv3);
|
||||
textViewList.add(mBinding.tv4);
|
||||
textViewList.add(mBinding.tv5);
|
||||
|
||||
// 设置统一点击监听
|
||||
for (int i = 0; i < clickableViews.size(); i++) {
|
||||
final int position = i;
|
||||
clickableViews.get(i).setOnClickListener(v -> handleItemClick(position));
|
||||
}
|
||||
|
||||
mBinding.tvSure.setOnClickListener(v -> {
|
||||
if (selectedPosition != -1){
|
||||
if (selectedPosition == 0){
|
||||
AgoraManager.getInstance(getActivity()).potexao(new File(getSavePath() + "xs.mp3").getPath());
|
||||
}else if (selectedPosition == 1){
|
||||
AgoraManager.getInstance(getActivity()).potexao(new File(getSavePath() + "hh.mp3").getPath());
|
||||
}else if (selectedPosition == 2){
|
||||
AgoraManager.getInstance(getActivity()).potexao(new File(getSavePath() + "gg.mp3").getPath());
|
||||
}else if (selectedPosition == 3){
|
||||
AgoraManager.getInstance(getActivity()).potexao(new File(getSavePath() + "zs.mp3").getPath());
|
||||
}else if (selectedPosition == 4){
|
||||
AgoraManager.getInstance(getActivity()).potexao(new File(getSavePath() + "mmd.mp3").getPath());
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
copyAssetToFile("gg.mp3", getSavePath(), "gg.mp3");
|
||||
copyAssetToFile("hh.mp3", getSavePath(), "hh.mp3");
|
||||
copyAssetToFile("mmd.mp3", getSavePath(), "mmd.mp3");
|
||||
copyAssetToFile("xs.mp3", getSavePath(), "xs.mp3");
|
||||
copyAssetToFile("zs.mp3", getSavePath(), "zs.mp3");
|
||||
}
|
||||
|
||||
private String getSavePath() {
|
||||
String path;
|
||||
if (Build.VERSION.SDK_INT > 29) {
|
||||
path = getActivity().getExternalFilesDir(null).getAbsolutePath() + "/app/effects/";
|
||||
} else {
|
||||
path = Environment.getExternalStorageDirectory().getPath() + "/app/effects/";
|
||||
}
|
||||
return path;
|
||||
}
|
||||
/**
|
||||
* 处理点击事件
|
||||
*/
|
||||
private void handleItemClick(int position) {
|
||||
if (selectedPosition == position) {
|
||||
// 再次点击已选项,取消选择
|
||||
selectedPosition = -1;
|
||||
resetBackgrounds();
|
||||
} else {
|
||||
// 更新选中项
|
||||
selectedPosition = position;
|
||||
updateBackgrounds(position);
|
||||
}
|
||||
}
|
||||
/**
|
||||
* 更新所有项的背景状态
|
||||
*/
|
||||
private void updateBackgrounds(int selectedPos) {
|
||||
for (int i = 0; i < clickableViews.size(); i++) {
|
||||
View view = clickableViews.get(i);
|
||||
Button btn = buttonList.get(i);
|
||||
TextView tv = textViewList.get(i);
|
||||
if (i == selectedPos) {
|
||||
view.setBackgroundResource(BG_SELECTED);
|
||||
btn.setBackgroundResource(BTN_BG_SELECTED);
|
||||
tv.setTextColor(ContextCompat.getColor(requireContext(), TEXT_COLOR_SELECTED));
|
||||
} else {
|
||||
view.setBackgroundResource(BG_DEFAULT);
|
||||
btn.setBackgroundResource(BTN_BG_DEFAULT);
|
||||
tv.setTextColor(ContextCompat.getColor(requireContext(), TEXT_COLOR_DEFAULT));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 恢复所有项为默认背景
|
||||
*/
|
||||
private void resetBackgrounds() {
|
||||
for (int i = 0; i < clickableViews.size(); i++) {
|
||||
View view = clickableViews.get(i);
|
||||
Button btn = buttonList.get(i);
|
||||
TextView tv = textViewList.get(i);
|
||||
|
||||
view.setBackgroundResource(BG_DEFAULT);
|
||||
btn.setBackgroundResource(BTN_BG_DEFAULT);
|
||||
tv.setTextColor(ContextCompat.getColor(requireContext(), TEXT_COLOR_DEFAULT));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initDialogStyle(Window window) {
|
||||
super.initDialogStyle(window);
|
||||
window.setGravity(Gravity.BOTTOM);
|
||||
}
|
||||
@Override
|
||||
protected int getLayoutId() {
|
||||
return R.layout.fragment_sound_dialog;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void roomApplyListBean(RoomApplyListBean roomApplyListBeans) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void clearApply() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void agreePit() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void applyPit() {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,274 @@
|
||||
package com.example.moduleroom.dialog;
|
||||
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
import android.view.Gravity;
|
||||
import android.view.SearchEvent;
|
||||
import android.view.View;
|
||||
import android.view.Window;
|
||||
import android.view.WindowManager;
|
||||
import android.widget.CompoundButton;
|
||||
import android.widget.SeekBar;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.fragment.app.FragmentManager;
|
||||
import androidx.recyclerview.widget.GridLayoutManager;
|
||||
|
||||
import com.chad.library.adapter.base.BaseQuickAdapter;
|
||||
import com.example.moduleroom.R;
|
||||
import com.example.moduleroom.adapter.TunerListAdapter;
|
||||
import com.example.moduleroom.contacts.WheatContacts;
|
||||
import com.example.moduleroom.databinding.RoomDialogTunerBinding;
|
||||
import com.example.moduleroom.presenter.WheatPresenter;
|
||||
import com.luck.picture.lib.decoration.GridSpacingItemDecoration;
|
||||
import com.qxcm.moduleutil.base.BaseMvpDialogFragment;
|
||||
import com.qxcm.moduleutil.bean.MixerResp;
|
||||
import com.qxcm.moduleutil.bean.room.RoomApplyListBean;
|
||||
import com.qxcm.moduleutil.rtc.AgoraManager;
|
||||
import com.qxcm.moduleutil.rtc.RtcConstants;
|
||||
import com.qxcm.moduleutil.rtc.RtcManager;
|
||||
import com.qxcm.moduleutil.utils.SpUtil;
|
||||
import com.qxcm.moduleutil.widget.dialog.BaseDialog;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import io.agora.rtc2.Constants;
|
||||
|
||||
|
||||
/**
|
||||
* 调音台弹窗
|
||||
*/
|
||||
public class TunerDialogFragment extends BaseMvpDialogFragment<WheatPresenter, RoomDialogTunerBinding> implements WheatContacts.View {
|
||||
|
||||
private static final String TAG = "TunerSheetDialog";
|
||||
|
||||
private Context mContext;
|
||||
|
||||
|
||||
private String roomId;
|
||||
private int tunerType;
|
||||
private TunerListAdapter tunerAdapter;
|
||||
private TunerListAdapter tunerAdapter2;
|
||||
|
||||
|
||||
public static void show(String id, FragmentManager fragmentManager) {
|
||||
TunerDialogFragment dialogFragment = new TunerDialogFragment();
|
||||
Bundle args = new Bundle();
|
||||
args.putString("roomId", id); // 可选:传递参数
|
||||
dialogFragment.setArguments(args);
|
||||
dialogFragment.show(fragmentManager, "SoundEffectsDialogFragment");
|
||||
}
|
||||
@Override
|
||||
public void onStart() {
|
||||
super.onStart();
|
||||
Window window = getDialog().getWindow();
|
||||
if (window != null) {
|
||||
// 设置固定高度为 500dp
|
||||
int screenHeight = getResources().getDisplayMetrics().heightPixels;
|
||||
int heightInDp = (int) (screenHeight * 0.6f);;
|
||||
// int heightInPx = (int) (heightInDp * getResources().getDisplayMetrics().density);
|
||||
window.setLayout(WindowManager.LayoutParams.MATCH_PARENT, heightInDp);
|
||||
|
||||
// 可选:设置动画样式(从底部弹出)
|
||||
window.setWindowAnimations(com.qxcm.moduleutil.R.style.CommonShowDialogBottom);
|
||||
}
|
||||
}
|
||||
@Override
|
||||
protected void initDialogStyle(Window window) {
|
||||
super.initDialogStyle(window);
|
||||
window.setGravity(Gravity.BOTTOM);
|
||||
}
|
||||
@Override
|
||||
public int getLayoutId() {
|
||||
return R.layout.room_dialog_tuner;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void initView() {
|
||||
// mBinding.rvEffectStyleList.setLayoutManager(new GridLayoutManager(mContext, 4));
|
||||
// mBinding.rvEffectStyleList.setAdapter(tunerAdapter = new TunerListAdapter());
|
||||
// mBinding.rvEffectStyleList.addItemDecoration(new GridSpacingItemDecoration(4, 30, true));
|
||||
// tunerAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
|
||||
// @Override
|
||||
// public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
|
||||
// MixerResp item = tunerAdapter.getItem(position);
|
||||
// tunerAdapter.setIndex(position);
|
||||
// MvpPre.setUserMixer(roomId, item.getId());
|
||||
// RtcManager.getInstance().setTone(item.getId());
|
||||
// }
|
||||
// });
|
||||
mBinding.swMonitoring.setChecked(SpUtil.getAuricularBack() == 1 ? true : false);//设置耳返开启还是关闭
|
||||
mBinding.swMonitoring.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
|
||||
@Override
|
||||
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
|
||||
AgoraManager.getInstance(getContext()).enableHeadphoneMonitor(b);
|
||||
//耳返设置完保存本地
|
||||
SpUtil.setAuricularBack(b ? 1 : 0);
|
||||
}
|
||||
});
|
||||
// 设置 seekBar1 的默认进度为 100
|
||||
mBinding.seekBar1.setProgress(100);
|
||||
// 更新对应的 TextView 显示内容
|
||||
mBinding.tvSeekbarValue.setText("人声100%");
|
||||
|
||||
|
||||
mBinding.seekBar1.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
|
||||
|
||||
@Override
|
||||
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
|
||||
mBinding.tvSeekbarValue.setText("人声" + progress + "%");
|
||||
AgoraManager.getInstance(getContext()).setMusicVolume(progress);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStartTrackingTouch(SeekBar seekBar) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStopTrackingTouch(SeekBar seekBar) {
|
||||
|
||||
}
|
||||
});
|
||||
// 设置 seekBar1 的默认进度为 100
|
||||
mBinding.seekBar2.setProgress(100);
|
||||
// 更新对应的 TextView 显示内容
|
||||
mBinding.tvSeekbarValue2.setText("伴奏100%");
|
||||
|
||||
mBinding.seekBar2.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
|
||||
@Override
|
||||
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
|
||||
mBinding.tvSeekbarValue2.setText("伴奏" + progress + "%");
|
||||
AgoraManager.getInstance(getContext()).settPlayoutVolume(progress);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStartTrackingTouch(SeekBar seekBar) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStopTrackingTouch(SeekBar seekBar) {
|
||||
|
||||
}
|
||||
});
|
||||
mBinding.rvEffectStyleList.setLayoutManager(new GridLayoutManager(mContext, 5));
|
||||
mBinding.rvEffectStyleList.setAdapter(tunerAdapter = new TunerListAdapter(1));
|
||||
mBinding.rvEffectStyleList.addItemDecoration(new GridSpacingItemDecoration(5, 11, true));
|
||||
tunerAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
|
||||
@Override
|
||||
public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
|
||||
// 取消之前选中的项
|
||||
// if (tunerAdapter.get() >= 0) {
|
||||
// tunerAdapter.notifyItemChanged(tunerAdapter.getIndex());
|
||||
// }
|
||||
|
||||
// 设置当前项为选中状态
|
||||
tunerAdapter.setIndex(position);
|
||||
tunerAdapter.notifyItemChanged(position);
|
||||
|
||||
// 执行选中项的操作
|
||||
MixerResp item = tunerAdapter.getItem(position);
|
||||
// MvpPre.setUserMixer(roomId, item.getId());
|
||||
// RtcManager.getInstance().setTone(item.getId());
|
||||
AgoraManager.getInstance(mContext).setTone(item.getId());
|
||||
}
|
||||
});
|
||||
|
||||
mBinding.rvEffectStyleList2.setLayoutManager(new GridLayoutManager(mContext, 5));
|
||||
mBinding.rvEffectStyleList2.setAdapter(tunerAdapter2 = new TunerListAdapter(2));
|
||||
mBinding.rvEffectStyleList2.addItemDecoration(new GridSpacingItemDecoration(5, 20, true));
|
||||
tunerAdapter2.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
|
||||
@Override
|
||||
public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
|
||||
// 取消之前选中的项
|
||||
// if (tunerAdapter.get() >= 0) {
|
||||
// tunerAdapter.notifyItemChanged(tunerAdapter.getIndex());
|
||||
// }
|
||||
// 设置当前项为选中状态
|
||||
tunerAdapter2.setIndex(position);
|
||||
tunerAdapter2.notifyItemChanged(position);
|
||||
// 设置当前项为选中状态
|
||||
|
||||
// 执行选中项的操作
|
||||
MixerResp item = tunerAdapter2.getItem(position);
|
||||
AgoraManager.getInstance(mContext).setTone(item.getId());
|
||||
// MvpPre.setUserMixer(roomId, item.getId());
|
||||
// RtcManager.getInstance().setTone(item.getId());
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected WheatPresenter bindPresenter() {
|
||||
return new WheatPresenter(this, getActivity());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initData() {
|
||||
// roomId = getArguments().getString("roomId");
|
||||
// tunerType = getArguments().getInt("tunerType");
|
||||
|
||||
List<MixerResp> mixerResps = new ArrayList<>();
|
||||
mixerResps.add(new MixerResp(RtcConstants.AUDIO_EFFECT_OFF, "原生", com.qxcm.moduleutil.R.mipmap.yuansheng));
|
||||
mixerResps.add(new MixerResp(RtcConstants.AUDIO_EFFECT_CPJ, "唱片机", com.qxcm.moduleutil.R.mipmap.changpian));
|
||||
mixerResps.add(new MixerResp(RtcConstants.AUDIO_EFFECT_3W, "3维声音", com.qxcm.moduleutil.R.mipmap.sanwei));
|
||||
mixerResps.add(new MixerResp(RtcConstants.AUDIO_EFFECT_XN, "虚拟环绕", com.qxcm.moduleutil.R.mipmap.xuni));
|
||||
mixerResps.add(new MixerResp(RtcConstants.AUDIO_EFFECT_KTV, "KTV", com.qxcm.moduleutil.R.mipmap.ktv));
|
||||
tunerAdapter.setNewData(mixerResps);
|
||||
tunerAdapter.setIndex(0);
|
||||
|
||||
List<MixerResp> mixerResps2 = new ArrayList<>();
|
||||
mixerResps2.add(new MixerResp(RtcConstants.SOUNDEFFECTTYPE_CHANGE_VOICE1, "老人", com.qxcm.moduleutil.R.mipmap.laoren));
|
||||
mixerResps2.add(new MixerResp(RtcConstants.SOUNDEFFECTTYPE_CHANGE_VOICE2, "猪八戒", com.qxcm.moduleutil.R.mipmap.zubj));
|
||||
mixerResps2.add(new MixerResp(RtcConstants.SOUNDEFFECTTYPE_CHANGE_VOICE3, "叔叔", com.qxcm.moduleutil.R.mipmap.dashu));
|
||||
mixerResps2.add(new MixerResp(RtcConstants.SOUNDEFFECTTYPE_CHANGE_VOICE4, "姐姐", com.qxcm.moduleutil.R.mipmap.yujie));
|
||||
mixerResps2.add(new MixerResp(RtcConstants.SOUNDEFFECTTYPE_CHANGE_VOICE5, "女孩", com.qxcm.moduleutil.R.mipmap.nvhai));
|
||||
tunerAdapter2.setNewData(mixerResps2);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void roomApplyListBean(RoomApplyListBean roomApplyListBeans) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void clearApply() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void agreePit() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void applyPit() {
|
||||
|
||||
}
|
||||
|
||||
|
||||
// @Override
|
||||
// protected void initDialogStyle(Window window) {
|
||||
// super.initDialogStyle(window);
|
||||
// window.setGravity(Gravity.BOTTOM);
|
||||
// WindowManager.LayoutParams lp = window.getAttributes();
|
||||
// lp.dimAmount = 0.4f;
|
||||
// window.setAttributes(lp);
|
||||
// window.addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
|
||||
// }
|
||||
|
||||
|
||||
// @Override
|
||||
// public void setMixerData(List<MixerResp> mixerResps) {
|
||||
// tunerAdapter.setNewData(mixerResps);
|
||||
// tunerAdapter.setIndex(tunerType);
|
||||
// }
|
||||
|
||||
}
|
||||
@@ -0,0 +1,266 @@
|
||||
package com.example.moduleroom.dialog;
|
||||
|
||||
import static android.view.View.GONE;
|
||||
import static android.view.View.VISIBLE;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
import android.view.Gravity;
|
||||
import android.view.View;
|
||||
import android.view.Window;
|
||||
import android.view.WindowManager;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.fragment.app.FragmentManager;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
|
||||
import com.blankj.utilcode.util.ToastUtils;
|
||||
import com.chad.library.adapter.base.BaseQuickAdapter;
|
||||
import com.example.moduleroom.R;
|
||||
import com.example.moduleroom.adapter.RoomOnlineAdapter;
|
||||
import com.example.moduleroom.adapter.WheatFeedingSelectAdapter;
|
||||
import com.example.moduleroom.contacts.RoomContacts;
|
||||
import com.example.moduleroom.contacts.WheatContacts;
|
||||
import com.example.moduleroom.databinding.FragmentRoomOnlineDialogBinding;
|
||||
import com.example.moduleroom.databinding.FragmentWheatFeedingDialogBinding;
|
||||
import com.example.moduleroom.presenter.RoomPresenter;
|
||||
import com.example.moduleroom.presenter.WheatPresenter;
|
||||
import com.qxcm.moduleutil.base.BaseMvpDialogFragment;
|
||||
import com.qxcm.moduleutil.bean.HeatedBean;
|
||||
import com.qxcm.moduleutil.bean.RoomWheatEvent;
|
||||
import com.qxcm.moduleutil.bean.room.RoomApplyListBean;
|
||||
import com.qxcm.moduleutil.bean.room.RoomInfoResp;
|
||||
import com.qxcm.moduleutil.bean.room.RoomOnlineBean;
|
||||
import com.qxcm.moduleutil.utils.ImageUtils;
|
||||
import com.qxcm.moduleutil.widget.floatingView.IFloatingView;
|
||||
import com.scwang.smartrefresh.layout.api.RefreshLayout;
|
||||
import com.scwang.smartrefresh.layout.listener.OnRefreshLoadMoreListener;
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
import org.greenrobot.eventbus.Subscribe;
|
||||
import org.greenrobot.eventbus.ThreadMode;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author qx
|
||||
* @data 2025/6/10
|
||||
* @description: 上麦申请dialog弹框,等待申请
|
||||
*/
|
||||
public class WheatFeedingDialogFragment extends BaseMvpDialogFragment<WheatPresenter, FragmentWheatFeedingDialogBinding> implements
|
||||
WheatContacts.View {
|
||||
private int page;
|
||||
private int displayMode; // 用于决定显示模式的参数
|
||||
WheatFeedingSelectAdapter mSpecialAdapter;
|
||||
WheatFeedingSelectAdapter mRegularAdapter;
|
||||
private String roomId;
|
||||
|
||||
@Override
|
||||
protected WheatPresenter bindPresenter() {
|
||||
return new WheatPresenter(this, getActivity());
|
||||
}
|
||||
|
||||
public static void show(String id, int displayMode, FragmentManager fragmentManager) {
|
||||
WheatFeedingDialogFragment dialogFragment = new WheatFeedingDialogFragment();
|
||||
Bundle args = new Bundle();
|
||||
args.putString("roomId", id); // 可选:传递参数
|
||||
args.putInt("displayMode", displayMode);
|
||||
dialogFragment.setArguments(args);
|
||||
dialogFragment.show(fragmentManager, "WheatFeedingDialogFragment");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initData() {
|
||||
// 从 Bundle 中获取 displayMode 参数
|
||||
displayMode = getArguments().getInt("displayMode", 2); // 默认值为 0
|
||||
|
||||
// 根据 displayMode 显示不同的控件
|
||||
updateViewBasedOnDisplayMode();
|
||||
roomId = getArguments().getString("roomId");
|
||||
MvpPre.roomApplyListBean(roomId);
|
||||
}
|
||||
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
public void onRoomApplyListEvent(RoomWheatEvent event) {
|
||||
MvpPre.roomApplyListBean(roomId);
|
||||
}
|
||||
|
||||
private void updateViewBasedOnDisplayMode() {
|
||||
switch (displayMode) {
|
||||
case 1: // 模式房主或者主持模式
|
||||
mBinding.tvLjsq.setVisibility(GONE);
|
||||
mBinding.tvQk.setVisibility(VISIBLE);
|
||||
mBinding.tvWheatRefuse.setVisibility(VISIBLE);
|
||||
mBinding.tvWheatAccept.setVisibility(VISIBLE);
|
||||
mBinding.tvWheatSq.setVisibility(VISIBLE);
|
||||
mBinding.tv3.setText("设置");
|
||||
// ... 设置其他控件的可见性
|
||||
break;
|
||||
case 2: // 模式 2//观众模式
|
||||
mBinding.tvQk.setVisibility(GONE);
|
||||
mBinding.tvWheatRefuse.setVisibility(GONE);
|
||||
mBinding.tvWheatAccept.setVisibility(GONE);
|
||||
mBinding.tvWheatSq.setVisibility(GONE);
|
||||
mBinding.tvLjsq.setVisibility(VISIBLE);
|
||||
mBinding.tv3.setText("赠送");
|
||||
break;
|
||||
// ... 其他模式
|
||||
}
|
||||
}
|
||||
|
||||
public void updateDisplayMode(int newDisplayMode) {
|
||||
if (newDisplayMode == displayMode) {
|
||||
return; // 如果新旧模式相同,直接返回
|
||||
}
|
||||
|
||||
displayMode = newDisplayMode;
|
||||
updateViewBasedOnDisplayMode();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStart() {
|
||||
super.onStart();
|
||||
EventBus.getDefault().register(this);
|
||||
Window window = getDialog().getWindow();
|
||||
if (window != null) {
|
||||
// 设置固定高度为 500dp
|
||||
int screenHeight = getResources().getDisplayMetrics().heightPixels;
|
||||
int heightInDp = (int) (screenHeight * 0.6f);
|
||||
;
|
||||
// int heightInPx = (int) (heightInDp * getResources().getDisplayMetrics().density);
|
||||
window.setLayout(WindowManager.LayoutParams.MATCH_PARENT, heightInDp);
|
||||
|
||||
// 可选:设置动画样式(从底部弹出)
|
||||
window.setWindowAnimations(com.qxcm.moduleutil.R.style.CommonShowDialogBottom);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initView() {
|
||||
mBinding.tv3.setOnClickListener(this::onClick);
|
||||
mBinding.tvWheatAccept.setOnClickListener(this::onClick);
|
||||
mBinding.tvWheatRefuse.setOnClickListener(this::onClick);
|
||||
mBinding.tvWheatSq.setOnClickListener(this::onClick);
|
||||
mBinding.tvLjsq.setOnClickListener(this::onClick);
|
||||
mBinding.tvQk.setOnClickListener(this::onClick);
|
||||
|
||||
mBinding.recycleView.setLayoutManager(new LinearLayoutManager(getActivity(), LinearLayoutManager.HORIZONTAL, false));
|
||||
mBinding.recycleView2.setLayoutManager(new LinearLayoutManager(getActivity(), LinearLayoutManager.HORIZONTAL, false));
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
super.onDestroy();
|
||||
EventBus.getDefault().unregister(this);
|
||||
}
|
||||
|
||||
private void onClick(View view) {
|
||||
int id = view.getId();
|
||||
if (id == R.id.tv_3) {
|
||||
RoomWheatGiftSettingFragment.show(roomId, getChildFragmentManager());
|
||||
} else if (id == R.id.tv_wheat_accept) {
|
||||
// MvpPre.agreePit(roomId,);
|
||||
up(1);
|
||||
} else if (id == R.id.tv_wheat_refuse) {
|
||||
// MvpPre.refusePit(roomId,);
|
||||
up(2);
|
||||
} else if (id == R.id.tv_wheat_sq) {
|
||||
ToastUtils.showShort("点击了申请");
|
||||
} else if (id == R.id.tv_ljsq) {
|
||||
MvpPre.applyPit(roomId,"");
|
||||
} else if (id == R.id.tv_qk) {
|
||||
MvpPre.clearApply(roomId);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param type 1:同意上麦 2:拒绝上麦
|
||||
*/
|
||||
private void up(int type) {
|
||||
List<String> stringList=new ArrayList<>();
|
||||
List<String> selectedTopics = mSpecialAdapter.getSelectedItems();
|
||||
List<String> selectedRegular = mRegularAdapter.getSelectedItems();
|
||||
// 返回结果给调用页面(可使用接口或 onActivityResult 等方式)
|
||||
Log.d("Selected Topics", selectedTopics.toString());
|
||||
if (selectedTopics.size()>0){
|
||||
stringList.addAll(selectedTopics);
|
||||
}
|
||||
if (selectedRegular.size()>0){
|
||||
stringList.addAll(selectedRegular);
|
||||
}
|
||||
if (selectedTopics.size()==0&&selectedRegular.size()==0){
|
||||
ToastUtils.showShort("未选择需要上麦人员");
|
||||
return;
|
||||
}
|
||||
String string=TextUtils.join(",", stringList);
|
||||
if (type==1) {
|
||||
MvpPre.agreePit(roomId, string);
|
||||
}else if (type==2){
|
||||
MvpPre.refusePit(roomId, string);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initDialogStyle(Window window) {
|
||||
super.initDialogStyle(window);
|
||||
window.setGravity(Gravity.BOTTOM);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getLayoutId() {
|
||||
return R.layout.fragment_wheat_feeding_dialog;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void roomApplyListBean(RoomApplyListBean roomApplyListBeans) {
|
||||
if (roomApplyListBeans.getSpecial() != null || !roomApplyListBeans.getSpecial().isEmpty()) {
|
||||
mBinding.tv1.setText("优先通道(" + roomApplyListBeans.getSpecial().size() + "/20)");
|
||||
mSpecialAdapter = new WheatFeedingSelectAdapter(roomApplyListBeans.getSpecial());
|
||||
mBinding.recycleView.setAdapter(mSpecialAdapter);
|
||||
mSpecialAdapter.setOnItemClickListener(new WheatFeedingSelectAdapter.OnItemClickListener() {
|
||||
@Override
|
||||
public void onTvBmClick(RoomApplyListBean.Special item, int position) {
|
||||
MvpPre.helpApply(roomId, item.getUser_id());
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
if (roomApplyListBeans.getRegular() != null || !roomApplyListBeans.getRegular().isEmpty()) {
|
||||
mBinding.tv4.setText("普通通道(" + roomApplyListBeans.getRegular().size() + "/20)");
|
||||
mRegularAdapter = new WheatFeedingSelectAdapter(roomApplyListBeans.getRegular());
|
||||
mBinding.recycleView2.setAdapter(mRegularAdapter);
|
||||
mRegularAdapter.setOnItemClickListener(new WheatFeedingSelectAdapter.OnItemClickListener() {
|
||||
@Override
|
||||
public void onTvBmClick(RoomApplyListBean.Special item, int position) {
|
||||
MvpPre.helpApply(roomId, item.getUser_id());
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
if (roomApplyListBeans.getGift_info() != null) {
|
||||
mBinding.tv2.setText("赠" + roomApplyListBeans.getGift_info().getGift_name() + "礼物插队");
|
||||
ImageUtils.loadHeadCC(roomApplyListBeans.getGift_info().getBase_image(), mBinding.im1);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void clearApply() {
|
||||
MvpPre.roomApplyListBean(roomId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void agreePit() {
|
||||
MvpPre.roomApplyListBean(roomId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void applyPit() {
|
||||
MvpPre.roomApplyListBean(roomId);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,270 @@
|
||||
package com.example.moduleroom.fragment;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
import android.text.Editable;
|
||||
import android.text.TextWatcher;
|
||||
import android.view.View;
|
||||
import android.view.WindowManager;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
|
||||
import com.blankj.utilcode.util.LogUtils;
|
||||
import com.blankj.utilcode.util.ToastUtils;
|
||||
import com.chad.library.adapter.base.BaseQuickAdapter;
|
||||
import com.chad.library.adapter.base.BaseViewHolder;
|
||||
import com.example.moduleroom.R;
|
||||
import com.example.moduleroom.contacts.RequestContacts;
|
||||
import com.example.moduleroom.databinding.FragmentMuiscSongBinding;
|
||||
import com.example.moduleroom.databinding.FragmentRequestBinding;
|
||||
import com.example.moduleroom.presenter.RequestPresenter;
|
||||
import com.qxcm.moduleutil.base.BaseMvpFragment;
|
||||
import com.qxcm.moduleutil.bean.MusicSongBean;
|
||||
import com.qxcm.moduleutil.bean.SongMusicBean;
|
||||
import com.qxcm.moduleutil.bean.room.RoomInfoResp;
|
||||
import com.qxcm.moduleutil.rtc.AgoraManager;
|
||||
import com.qxcm.moduleutil.rtc.MusicBean;
|
||||
import com.qxcm.moduleutil.utils.ImageUtils;
|
||||
import com.qxcm.moduleutil.utils.SpUtil;
|
||||
import com.qxcm.moduleutil.utils.TimeUtils;
|
||||
import com.scwang.smartrefresh.layout.api.RefreshLayout;
|
||||
import com.scwang.smartrefresh.layout.listener.OnRefreshLoadMoreListener;
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
import org.greenrobot.eventbus.Subscribe;
|
||||
import org.greenrobot.eventbus.ThreadMode;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import io.agora.musiccontentcenter.Music;
|
||||
/**
|
||||
*@author qx
|
||||
*@data 2025/6/19
|
||||
*@description: 点唱已点歌曲
|
||||
*/
|
||||
public class MusicSongListFragment extends BaseMvpFragment<RequestPresenter, FragmentMuiscSongBinding> implements RequestContacts.View {
|
||||
|
||||
public static final int TYPE_DATA = 1;//点歌
|
||||
public static final int TYPE_WEEK = 2;//已点
|
||||
private int type;
|
||||
private String roomId;
|
||||
private RoomInfoResp roomInfoResp;
|
||||
BaseQuickAdapter<MusicSongBean, BaseViewHolder> adapter;
|
||||
private int page=1;
|
||||
int status;
|
||||
@Override
|
||||
public void songList(List<MusicSongBean> musicSongBeans) {
|
||||
|
||||
|
||||
if (roomInfoResp.getUser_info().getUser_id().equals(SpUtil.getUserId() + "") && roomInfoResp.getUser_info().getIs_host() == 1 && roomInfoResp.getUser_info().getPit_number() == 9) {
|
||||
status = 1;
|
||||
}
|
||||
if (musicSongBeans != null) {
|
||||
for (MusicSongBean musicSongBean : musicSongBeans) {
|
||||
musicSongBean.setIs_hot(status);
|
||||
}
|
||||
}
|
||||
|
||||
// if (page==1){
|
||||
adapter.setNewData(musicSongBeans);
|
||||
|
||||
// }else {
|
||||
// adapter.addData(musicSongBeans);
|
||||
// }
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void upSong(String S) {
|
||||
ToastUtils.showShort(S);
|
||||
MvpPre.songList(roomId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void song(List<SongMusicBean> music) {
|
||||
com.hjq.toast.ToastUtils.show("操作成功");
|
||||
}
|
||||
|
||||
public interface OnRequestFragmentListener {
|
||||
void onCloseDialog();
|
||||
}
|
||||
private OnRequestFragmentListener listener;
|
||||
|
||||
// 绑定监听器
|
||||
public void setOnRequestFragmentListener(OnRequestFragmentListener listener) {
|
||||
this.listener = listener;
|
||||
}
|
||||
|
||||
public static MusicSongListFragment newInstance(String roomId,RoomInfoResp roomInfoResp,int type) {
|
||||
Bundle args = new Bundle();
|
||||
MusicSongListFragment fragment = new MusicSongListFragment();
|
||||
args.putString("roomId", roomId);
|
||||
args.putInt("type", type);
|
||||
args.putSerializable("roomInfoResp", roomInfoResp);
|
||||
fragment.setArguments(args);
|
||||
return fragment;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStart() {
|
||||
super.onStart();
|
||||
// if (!EventBus.getDefault().isRegistered( this)) {
|
||||
// EventBus.getDefault().register(this);
|
||||
// }
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStop() {
|
||||
super.onStop();
|
||||
if (EventBus.getDefault().isRegistered(this)) {
|
||||
EventBus.getDefault().unregister(this);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected RequestPresenter bindPresenter() {
|
||||
return new RequestPresenter(this, getActivity());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAttach(@NonNull Context context) {
|
||||
super.onAttach(context);
|
||||
roomId = getArguments().getString("roomId");
|
||||
type = getArguments().getInt("type");
|
||||
roomInfoResp = (RoomInfoResp) getArguments().getSerializable("roomInfoResp");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initData() {
|
||||
boolean b= AgoraManager.getInstance(getContext()).isBjMusic();
|
||||
if (b) {
|
||||
List<MusicSongBean> musicSongBeans = new ArrayList<>();
|
||||
List<Music> music = AgoraManager.getInstance(getContext()).getMusicList();
|
||||
if (music != null && music.size() > 0) {
|
||||
for (int i = 0; i < music.size(); i++) {
|
||||
MusicSongBean musicSongBean = new MusicSongBean();
|
||||
musicSongBean.setSong_code(String.valueOf(music.get(i).getSongCode()));
|
||||
musicSongBean.setSong_name(music.get(i).getName());
|
||||
musicSongBean.setSinger(music.get(i).getSinger());
|
||||
musicSongBean.setPoster(music.get(i).getPoster());
|
||||
musicSongBean.setDuration(music.get(i).getDurationS() + "");
|
||||
musicSongBeans.add(musicSongBean);
|
||||
}
|
||||
adapter.setNewData(musicSongBeans);
|
||||
}
|
||||
}else {
|
||||
MvpPre.songList(roomId);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreate(@Nullable Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initView() {
|
||||
mBinding.smartRefreshLayout.setOnRefreshLoadMoreListener(new OnRefreshLoadMoreListener() {
|
||||
@Override
|
||||
public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
|
||||
page++;
|
||||
// AgoraManager.getInstance(getContext()).searchMusic( mBinding.editQuery.getText().toString(),page);
|
||||
MvpPre.songList(roomId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRefresh(@NonNull RefreshLayout refreshLayout) {
|
||||
// EventBus.getDefault().post(new BannerRefreshEvent());
|
||||
page = 1;
|
||||
// AgoraManager.getInstance(getContext()).searchMusic( mBinding.editQuery.getText().toString(),page);
|
||||
MvpPre.songList(roomId);
|
||||
}
|
||||
});
|
||||
|
||||
mBinding.recycleView.setLayoutManager(new LinearLayoutManager(getContext(), LinearLayoutManager.VERTICAL, false));
|
||||
adapter = new BaseQuickAdapter<MusicSongBean, BaseViewHolder>(R.layout.item_song_list, null) {
|
||||
|
||||
@Override
|
||||
protected void convert(BaseViewHolder helper, MusicSongBean item) {
|
||||
|
||||
LogUtils.e("@@@",item);
|
||||
// 获取当前 item 的 position
|
||||
int position = helper.getLayoutPosition();
|
||||
ImageView muisSy=helper.getView(R.id.muis_sy);
|
||||
TextView muisPrice=helper.getView(R.id.muis_price);
|
||||
if(position == 0){
|
||||
helper.setText(R.id.muis_price, "结束");
|
||||
|
||||
muisSy.setVisibility(View.GONE);
|
||||
}
|
||||
else if (position==1){
|
||||
|
||||
muisSy.setVisibility(View.GONE);
|
||||
muisPrice.setVisibility(View.GONE);
|
||||
}else {
|
||||
muisPrice.setVisibility(View.VISIBLE);
|
||||
helper.setText(R.id.muis_price, "置顶");
|
||||
muisSy.setVisibility(View.VISIBLE);
|
||||
}
|
||||
|
||||
helper.setText(R.id.muis_name, item.getSong_name());
|
||||
if (item.getDuration().isEmpty()){
|
||||
helper.setText(R.id.muis_desc, "00:00");
|
||||
}else {
|
||||
helper.setText(R.id.muis_desc, TimeUtils.formatDuration(Long.parseLong(item.getDuration())*1000));
|
||||
}
|
||||
helper.setText(R.id.muis_set, "\t"+item.getSinger());
|
||||
helper.setText(R.id.muis_nickname, item.getNickname());
|
||||
|
||||
ImageUtils.loadHeadCC(item.getPoster(), helper.getView(R.id.muis_avatar));
|
||||
|
||||
helper.getView(R.id.muis_price).setOnClickListener(new View.OnClickListener() {
|
||||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
TextView textView = helper.getView(R.id.muis_price);
|
||||
if (textView.getText().toString().equals("置顶")){
|
||||
MvpPre.upSong(item.getDid(), "2");
|
||||
}else {
|
||||
|
||||
}
|
||||
if (listener != null) {
|
||||
listener.onCloseDialog(); // 触发关闭 DialogFragment
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
helper.getView(R.id.muis_sy).setOnClickListener(new View.OnClickListener() {
|
||||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
MvpPre.upSong(item.getDid(), "1");
|
||||
}
|
||||
});
|
||||
|
||||
if (item.getIs_hot()==1){
|
||||
helper.setVisible(R.id.muis_sy, true);
|
||||
helper.setVisible(R.id.muis_price, true);
|
||||
}else {
|
||||
helper.setVisible(R.id.muis_sy, false);
|
||||
helper.setVisible(R.id.muis_price, false);
|
||||
}
|
||||
}
|
||||
};
|
||||
mBinding.recycleView.setAdapter(adapter);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getLayoutId() {
|
||||
return R.layout.fragment_muisc_song;
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,328 @@
|
||||
package com.example.moduleroom.fragment;
|
||||
|
||||
import android.graphics.Color;
|
||||
import android.os.Bundle;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
|
||||
import com.alibaba.android.arouter.launcher.ARouter;
|
||||
import com.chad.library.adapter.base.BaseQuickAdapter;
|
||||
import com.example.moduleroom.R;
|
||||
import com.example.moduleroom.adapter.RankingCharmListAdapter;
|
||||
import com.example.moduleroom.adapter.RankingWealthListAdapter;
|
||||
import com.example.moduleroom.contacts.DataListContacts;
|
||||
import com.example.moduleroom.databinding.RoomRankingChildBinding;
|
||||
import com.example.moduleroom.presenter.DataListPresenter;
|
||||
import com.qxcm.moduleutil.base.BaseMvpFragment;
|
||||
import com.qxcm.moduleutil.bean.CharmRankingResp;
|
||||
import com.qxcm.moduleutil.bean.WealthRankingResp;
|
||||
import com.qxcm.moduleutil.utils.ImageUtils;
|
||||
import com.qxcm.moduleutil.widget.CommonEmptyView;
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
import org.greenrobot.eventbus.Subscribe;
|
||||
import org.greenrobot.eventbus.ThreadMode;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
*@author qx
|
||||
*@data 2025/6/10
|
||||
*@description:
|
||||
*/
|
||||
public class RankingChildFragment extends BaseMvpFragment<DataListPresenter, RoomRankingChildBinding> implements DataListContacts.View {
|
||||
|
||||
private static final String TAG = "RankingChildFragment";
|
||||
|
||||
public static final int TYPE_DATA = 1;//日榜
|
||||
public static final int TYPE_WEEK = 2;//周榜
|
||||
public static final int TYPE_MON = 3;//月榜
|
||||
private String roomId;
|
||||
private int dataType;
|
||||
private int rankType = 1;
|
||||
private RankingCharmListAdapter cAdapter;//魅力适配器
|
||||
private RankingWealthListAdapter wAdapter;//财富适配器
|
||||
private CommonEmptyView commonEmptyView;
|
||||
|
||||
/**
|
||||
* newInstance 初始化fragment
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public static RankingChildFragment newInstance(String roomId, int dataType, int rankType) {
|
||||
RankingChildFragment rankingChildFragment = new RankingChildFragment();
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putString("roomId", roomId);
|
||||
bundle.putInt("dataType", dataType);
|
||||
bundle.putInt("rankType", rankType);
|
||||
rankingChildFragment.setArguments(bundle);
|
||||
return rankingChildFragment;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected DataListPresenter bindPresenter() {
|
||||
return new DataListPresenter(this, getActivity());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initArgs(Bundle arguments) {
|
||||
super.initArgs(arguments);
|
||||
roomId = getArguments().getString("roomId");
|
||||
dataType = getArguments().getInt("dataType");
|
||||
rankType = getArguments().getInt("rankType");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initData() {
|
||||
if (rankType == 1) {
|
||||
cAdapter = new RankingCharmListAdapter();
|
||||
mBinding.rankRecycleView.setLayoutManager(new LinearLayoutManager(getContext()));
|
||||
mBinding.rankRecycleView.setAdapter(cAdapter);
|
||||
cAdapter.bindToRecyclerView(mBinding.rankRecycleView);
|
||||
} else {
|
||||
wAdapter = new RankingWealthListAdapter();
|
||||
mBinding.rankRecycleView.setLayoutManager(new LinearLayoutManager(getContext()));
|
||||
mBinding.rankRecycleView.setAdapter(wAdapter);
|
||||
wAdapter.bindToRecyclerView(mBinding.rankRecycleView);
|
||||
}
|
||||
// onRefreshEvent(null);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initView() {
|
||||
if (rankType == 1) {
|
||||
setSexBg(mBinding.roomHeadTop1Label, "1");
|
||||
setSexBg(mBinding.roomHeadTop2Label, "1");
|
||||
setSexBg(mBinding.roomHeadTop3Label, "1");
|
||||
}
|
||||
commonEmptyView = new CommonEmptyView(getContext());
|
||||
commonEmptyView.setEmptyText("暂无上榜");
|
||||
}
|
||||
|
||||
/**
|
||||
* 初始化监听
|
||||
*/
|
||||
@Override
|
||||
protected void initListener() {
|
||||
super.initListener();
|
||||
if (rankType == 1) {
|
||||
cAdapter.setOnItemChildClickListener(new BaseQuickAdapter.OnItemChildClickListener() {
|
||||
@Override
|
||||
public void onItemChildClick(BaseQuickAdapter adapter, View view, int position) {
|
||||
if (view.getId() == R.id.room_item_head) {
|
||||
CharmRankingResp.ListsBean item = cAdapter.getItem(position);
|
||||
// ARouter.getInstance().build(ARouteConstants.NEW_HOME_PAGE).withString("userId", item.getUser_id()).withBoolean("returnRoom", true).navigation();
|
||||
}
|
||||
}
|
||||
});
|
||||
} else {
|
||||
wAdapter.setOnItemChildClickListener(new BaseQuickAdapter.OnItemChildClickListener() {
|
||||
@Override
|
||||
public void onItemChildClick(BaseQuickAdapter adapter, View view, int position) {
|
||||
if (view.getId() == R.id.room_item_head) {
|
||||
WealthRankingResp.ListsBean item = wAdapter.getItem(position);
|
||||
// ARouter.getInstance().build(ARouteConstants.NEW_HOME_PAGE).withString("userId", item.getUser_id()).withBoolean("returnRoom", true).navigation();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected int getLayoutId() {
|
||||
Log.d(TAG, "(Start)启动了===========================RankingChildFragment");
|
||||
return R.layout.room_ranking_child;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setNo1(CharmRankingResp.ListsBean listsBean) {//魅力排行榜一数据设值
|
||||
ImageUtils.loadHeadCC(listsBean.getHead_picture(), mBinding.roomRankTop1HeadIcon);
|
||||
setSexBg(mBinding.roomHeadTop1Label, listsBean.getSex());
|
||||
mBinding.roomTop1Name.setText(listsBean.getNickname());
|
||||
// mBinding.bnvFirst.setText(String.format(getString(R.string.room_rank_list_id_formatter), listsBean.getUser_code()));
|
||||
// mBinding.bnvFirst.setTextColor(!TextUtils.isEmpty(listsBean.getId_color()) ? Color.parseColor(listsBean.getId_color()) : getResources().getColor(R.color.color_white));
|
||||
mBinding.bnvFirst.setPlay(!TextUtils.isEmpty(listsBean.getId_color()));
|
||||
mBinding.bnvFirst.setImgVisible("1".equals(listsBean.getGood_number()));
|
||||
mBinding.roomHeadTop1Label.setText(listsBean.getNumber_format());
|
||||
mBinding.roomTop1Label.setVisibility(TextUtils.isEmpty(listsBean.getLevel_icon()) ? View.GONE : View.VISIBLE);
|
||||
ImageUtils.loadImageView(listsBean.getLevel_icon(), mBinding.roomTop1Label);
|
||||
mBinding.roomTop1Grade.setVisibility(TextUtils.isEmpty(listsBean.getNobility_icon()) ? View.GONE : View.VISIBLE);
|
||||
ImageUtils.loadImageView(listsBean.getNobility_icon(), mBinding.roomTop1Grade);
|
||||
mBinding.roomRankTop1HeadIcon.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
// ARouter.getInstance().build(ARouteConstants.NEW_HOME_PAGE).withString("userId", listsBean.getUser_id()).withBoolean("returnRoom", true).navigation();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setNo1(WealthRankingResp.ListsBean listsBean) {//财富排行榜一数据设值
|
||||
ImageUtils.loadHeadCC(listsBean.getHead_picture(), mBinding.roomRankTop1HeadIcon);
|
||||
mBinding.roomTop1Name.setText(listsBean.getNickname());
|
||||
// mBinding.bnvFirst.setText(String.format(getString(R.string.room_rank_list_id_formatter), listsBean.getUser_code()));
|
||||
// mBinding.bnvFirst.setTextColor(!TextUtils.isEmpty(listsBean.getId_color()) ? Color.parseColor(listsBean.getId_color()) : getResources().getColor(R.color.color_white));
|
||||
mBinding.bnvFirst.setPlay(!TextUtils.isEmpty(listsBean.getId_color()));
|
||||
mBinding.bnvFirst.setImgVisible("1".equals(listsBean.getGood_number()));
|
||||
mBinding.roomHeadTop1Label.setText(listsBean.getNumber_format());
|
||||
mBinding.roomTop1Label.setVisibility(TextUtils.isEmpty(listsBean.getLevel_icon()) ? View.GONE : View.VISIBLE);
|
||||
ImageUtils.loadImageView(listsBean.getLevel_icon(), mBinding.roomTop1Label);
|
||||
mBinding.roomTop1Grade.setVisibility(TextUtils.isEmpty(listsBean.getNobility_icon()) ? View.GONE : View.VISIBLE);
|
||||
ImageUtils.loadImageView(listsBean.getNobility_icon(), mBinding.roomTop1Grade);
|
||||
mBinding.roomRankTop1HeadIcon.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
// ARouter.getInstance().build(ARouteConstants.NEW_HOME_PAGE).withString("userId", listsBean.getUser_id()).withBoolean("returnRoom", true).navigation();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setNo2(CharmRankingResp.ListsBean listsBean) {//魅力榜二
|
||||
ImageUtils.loadHeadCC(listsBean.getHead_picture(), mBinding.roomRankTop2HeadIcon);
|
||||
setSexBg(mBinding.roomHeadTop2Label, listsBean.getSex());
|
||||
mBinding.roomTop2Name.setText(listsBean.getNickname());
|
||||
// mBinding.bnvSecond.setText(String.format(getString(R.string.room_rank_list_id_formatter), listsBean.getUser_code()));
|
||||
// mBinding.bnvSecond.setTextColor(!TextUtils.isEmpty(listsBean.getId_color()) ? Color.parseColor(listsBean.getId_color()) : getResources().getColor(R.color.color_white));
|
||||
mBinding.bnvSecond.setPlay(!TextUtils.isEmpty(listsBean.getId_color()));
|
||||
mBinding.bnvSecond.setImgVisible("1".equals(listsBean.getGood_number()));
|
||||
mBinding.roomHeadTop2Label.setText(listsBean.getNumber_format());
|
||||
mBinding.roomTop2Label.setVisibility(TextUtils.isEmpty(listsBean.getLevel_icon()) ? View.GONE : View.VISIBLE);
|
||||
ImageUtils.loadImageView(listsBean.getLevel_icon(), mBinding.roomTop2Label);
|
||||
mBinding.roomTop2Grade.setVisibility(TextUtils.isEmpty(listsBean.getNobility_icon()) ? View.GONE : View.VISIBLE);
|
||||
ImageUtils.loadImageView(listsBean.getNobility_icon(), mBinding.roomTop2Grade);
|
||||
mBinding.roomRankTop2HeadIcon.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
// ARouter.getInstance().build(ARouteConstants.NEW_HOME_PAGE).withString("userId", listsBean.getUser_id()).withBoolean("returnRoom", true).navigation();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setNo2(WealthRankingResp.ListsBean listsBean) {//财富榜二
|
||||
ImageUtils.loadHeadCC(listsBean.getHead_picture(), mBinding.roomRankTop2HeadIcon);
|
||||
mBinding.roomTop2Name.setText(listsBean.getNickname());
|
||||
// mBinding.bnvSecond.setText(String.format(getString(R.string.room_rank_list_id_formatter), listsBean.getUser_code()));
|
||||
// mBinding.bnvSecond.setTextColor(!TextUtils.isEmpty(listsBean.getId_color()) ? Color.parseColor(listsBean.getId_color()) : getResources().getColor(R.color.color_white));
|
||||
mBinding.bnvSecond.setPlay(!TextUtils.isEmpty(listsBean.getId_color()));
|
||||
mBinding.bnvSecond.setImgVisible("1".equals(listsBean.getGood_number()));
|
||||
mBinding.roomHeadTop2Label.setText(listsBean.getNumber_format());
|
||||
mBinding.roomTop2Label.setVisibility(TextUtils.isEmpty(listsBean.getLevel_icon()) ? View.GONE : View.VISIBLE);
|
||||
ImageUtils.loadImageView(listsBean.getLevel_icon(), mBinding.roomTop2Label);
|
||||
mBinding.roomTop2Grade.setVisibility(TextUtils.isEmpty(listsBean.getNobility_icon()) ? View.GONE : View.VISIBLE);
|
||||
ImageUtils.loadImageView(listsBean.getNobility_icon(), mBinding.roomTop2Grade);
|
||||
mBinding.roomRankTop2HeadIcon.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
// ARouter.getInstance().build(ARouteConstants.NEW_HOME_PAGE).withString("userId", listsBean.getUser_id()).withBoolean("returnRoom", true).navigation();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setNo3(CharmRankingResp.ListsBean listsBean) {//魅力榜三
|
||||
ImageUtils.loadHeadCC(listsBean.getHead_picture(), mBinding.roomRankTop3HeadIcon);
|
||||
setSexBg(mBinding.roomHeadTop3Label, listsBean.getSex());
|
||||
mBinding.roomTop3Name.setText(listsBean.getNickname());
|
||||
// mBinding.bnvThird.setText(String.format(getString(R.string.room_rank_list_id_formatter), listsBean.getUser_code()));
|
||||
// mBinding.bnvThird.setTextColor(!TextUtils.isEmpty(listsBean.getId_color()) ? Color.parseColor(listsBean.getId_color()) : getResources().getColor(R.color.color_white));
|
||||
mBinding.bnvThird.setPlay(!TextUtils.isEmpty(listsBean.getId_color()));
|
||||
mBinding.bnvThird.setImgVisible("1".equals(listsBean.getGood_number()));
|
||||
mBinding.roomHeadTop3Label.setText(listsBean.getNumber_format());
|
||||
mBinding.roomTop3Label.setVisibility(TextUtils.isEmpty(listsBean.getLevel_icon()) ? View.GONE : View.VISIBLE);
|
||||
ImageUtils.loadImageView(listsBean.getLevel_icon(), mBinding.roomTop3Label);
|
||||
mBinding.roomTop3Grade.setVisibility(TextUtils.isEmpty(listsBean.getNobility_icon()) ? View.GONE : View.VISIBLE);
|
||||
ImageUtils.loadImageView(listsBean.getNobility_icon(), mBinding.roomTop3Grade);
|
||||
mBinding.roomRankTop3HeadIcon.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
// ARouter.getInstance().build(ARouteConstants.NEW_HOME_PAGE).withString("userId", listsBean.getUser_id()).withBoolean("returnRoom", true).navigation();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setNo3(WealthRankingResp.ListsBean listsBean) {//财富榜三
|
||||
ImageUtils.loadHeadCC(listsBean.getHead_picture(), mBinding.roomRankTop3HeadIcon);
|
||||
mBinding.roomTop3Name.setText(listsBean.getNickname());
|
||||
// mBinding.bnvThird.setText(String.format(getString(R.string.room_rank_list_id_formatter), listsBean.getUser_code()));
|
||||
// mBinding.bnvThird.setTextColor(!TextUtils.isEmpty(listsBean.getId_color()) ? Color.parseColor(listsBean.getId_color()) : getResources().getColor(R.color.color_white));
|
||||
mBinding.bnvThird.setPlay(!TextUtils.isEmpty(listsBean.getId_color()));
|
||||
mBinding.bnvThird.setImgVisible("1".equals(listsBean.getGood_number()));
|
||||
mBinding.roomHeadTop3Label.setText(listsBean.getNumber_format());
|
||||
mBinding.roomTop3Label.setVisibility(TextUtils.isEmpty(listsBean.getLevel_icon()) ? View.GONE : View.VISIBLE);
|
||||
ImageUtils.loadImageView(listsBean.getLevel_icon(), mBinding.roomTop3Label);
|
||||
mBinding.roomTop3Grade.setVisibility(TextUtils.isEmpty(listsBean.getNobility_icon()) ? View.GONE : View.VISIBLE);
|
||||
ImageUtils.loadImageView(listsBean.getNobility_icon(), mBinding.roomTop3Grade);
|
||||
mBinding.roomRankTop3HeadIcon.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
// ARouter.getInstance().build(ARouteConstants.NEW_HOME_PAGE).withString("userId", listsBean.getUser_id()).withBoolean("returnRoom", true).navigation();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setCharmView(List<CharmRankingResp.ListsBean> listsBeans) {
|
||||
cAdapter.setNewData(listsBeans);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setWealthView(List<WealthRankingResp.ListsBean> listsBeans) {
|
||||
wAdapter.setNewData(listsBeans);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setCharmEmpty() {
|
||||
cAdapter.setEmptyView(commonEmptyView);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setWealthEmpty() {
|
||||
wAdapter.setEmptyView(commonEmptyView);
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置头像男神女神热度背景
|
||||
*/
|
||||
private void setSexBg(View view, String sex) {
|
||||
// view.setBackgroundResource(UserBean.MALE.equals(sex) ? R.mipmap.room_bg_wheat_charm_gg_sr : R.mipmap.room_bg_wheat_charm_mm_sr);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据性别设置字体颜色
|
||||
*/
|
||||
private void setSexColor(TextView view, String sex) {
|
||||
// view.setTextColor(UserBean.MALE.equals(sex) ? getContext().getResources().getColor(R.color.color_FF0091FF) : getContext().getResources().getColor(R.color.color_FFFA447D));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
// EventBus.getDefault().register(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroyView() {
|
||||
// EventBus.getDefault().unregister(this);
|
||||
super.onDestroyView();
|
||||
}
|
||||
|
||||
// @Subscribe(threadMode = ThreadMode.MAIN)
|
||||
// public void onRefreshEvent(RankingRefreshEvent event) {
|
||||
// if (rankType == 1) {
|
||||
// MvpPre.getCharmListInfo(roomId, dataType);
|
||||
// } else {
|
||||
// MvpPre.getWealthListInfo(roomId, dataType);
|
||||
// }
|
||||
// }
|
||||
}
|
||||
@@ -0,0 +1,74 @@
|
||||
package com.example.moduleroom.fragment;
|
||||
|
||||
import android.os.Bundle;
|
||||
|
||||
import androidx.fragment.app.Fragment;
|
||||
|
||||
|
||||
import com.example.moduleroom.R;
|
||||
import com.example.moduleroom.databinding.RoomRankingParentBinding;
|
||||
import com.qxcm.moduleutil.activity.IPresenter;
|
||||
import com.qxcm.moduleutil.adapter.MyFragmentPagerAdapter;
|
||||
import com.qxcm.moduleutil.base.BaseMvpFragment;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
*@author qx
|
||||
*@data 2025/6/10
|
||||
*@description:
|
||||
*/
|
||||
public class RankingParentFragment extends BaseMvpFragment<IPresenter, RoomRankingParentBinding> {
|
||||
|
||||
//成员变量 + 全局变量
|
||||
public static final int TYPE_DATA = 1;//日榜
|
||||
public static final int TYPE_WEEK = 2;//周榜
|
||||
public static final int TYPE_MON = 3;//月榜
|
||||
private static String mRoomId;//房间ID
|
||||
private static int rankType = 1;//统计类型(魅力 / 财富)
|
||||
// private static int dataType = 1;//统计周期(日/周/月)
|
||||
|
||||
|
||||
public static RankingParentFragment newInstance(String roomId,int rankType) {
|
||||
Bundle args = new Bundle();
|
||||
args.putString("roomId", roomId);
|
||||
args.putInt("rankType", rankType);
|
||||
RankingParentFragment fragment = new RankingParentFragment();
|
||||
fragment.setArguments(args);
|
||||
return fragment;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initArgs(Bundle arguments) {
|
||||
super.initArgs(arguments);
|
||||
mRoomId = arguments.getString("roomId");
|
||||
rankType = arguments.getInt("rankType");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected IPresenter bindPresenter() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initData() {
|
||||
List<Fragment> fragments = new ArrayList<>();
|
||||
fragments.add(RankingChildFragment.newInstance(mRoomId, TYPE_DATA, rankType));
|
||||
fragments.add(RankingChildFragment.newInstance(mRoomId, TYPE_WEEK, rankType));
|
||||
fragments.add(RankingChildFragment.newInstance(mRoomId, TYPE_MON, rankType));
|
||||
MyFragmentPagerAdapter myFragmentPagerAdapter = new MyFragmentPagerAdapter(fragments, getChildFragmentManager());
|
||||
mBinding.vpRankChild.setAdapter(myFragmentPagerAdapter);
|
||||
String[] title = new String[]{"日榜", "周榜", "月榜"};
|
||||
mBinding.slidingTabLayout.setViewPager(mBinding.vpRankChild, title);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initView() {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getLayoutId() {
|
||||
return R.layout.room_ranking_parent;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,73 @@
|
||||
package com.example.moduleroom.fragment;
|
||||
|
||||
import android.os.Bundle;
|
||||
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.viewpager2.widget.ViewPager2;
|
||||
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import com.example.moduleroom.R;
|
||||
import com.example.moduleroom.adapter.RelationshipAdapter;
|
||||
import com.example.moduleroom.databinding.FragmentRelationshipBinding;
|
||||
import com.qxcm.moduleutil.base.BaseFragment;
|
||||
import com.qxcm.moduleutil.bean.RelationshipBean;
|
||||
import com.zhpan.bannerview.constants.PageStyle;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
*@author qx
|
||||
*@data 2025/6/13
|
||||
*@description: 关系卡和关系位的fragemnt
|
||||
*/
|
||||
public class RelationshipFragment extends BaseFragment<FragmentRelationshipBinding> {
|
||||
|
||||
RelationshipAdapter adapter;
|
||||
public static RelationshipFragment newInstance() {
|
||||
|
||||
Bundle args = new Bundle();
|
||||
|
||||
RelationshipFragment fragment = new RelationshipFragment();
|
||||
fragment.setArguments(args);
|
||||
return fragment;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initData() {
|
||||
List<RelationshipBean> list=new ArrayList<>();
|
||||
for (int i = 0; i < 3; i++){
|
||||
RelationshipBean relationshipBean=new RelationshipBean();
|
||||
relationshipBean.setAvatar("https://img2.baidu.com/it/u=3879116093,1671048885&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500");
|
||||
relationshipBean.setAvatar2("https://img2.baidu.com/it/u=3879116093,1671048885&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500");
|
||||
relationshipBean.setNickname("名称1");
|
||||
relationshipBean.setNickname2("名称2");
|
||||
relationshipBean.setRelation("兄弟");
|
||||
relationshipBean.setTime("5天");
|
||||
list.add(relationshipBean);
|
||||
}
|
||||
adapter=new RelationshipAdapter();
|
||||
mBinding.bannerViewPager
|
||||
.setScrollDuration(0)
|
||||
.setOrientation(ViewPager2.ORIENTATION_VERTICAL)
|
||||
.setAutoPlay(false)
|
||||
.setAdapter(adapter);
|
||||
|
||||
mBinding.bannerViewPager.setIndicatorVisibility(View.GONE);
|
||||
mBinding.bannerViewPager.create(list);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initView() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getLayoutId() {
|
||||
return R.layout.fragment_relationship;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,245 @@
|
||||
package com.example.moduleroom.fragment;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Rect;
|
||||
import android.os.Bundle;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.fragment.app.DialogFragment;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.lifecycle.ViewModelProvider;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
|
||||
import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
import android.text.Editable;
|
||||
import android.text.TextWatcher;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.Window;
|
||||
import android.view.WindowManager;
|
||||
import android.view.animation.Animation;
|
||||
|
||||
import com.blankj.utilcode.util.LogUtils;
|
||||
import com.chad.library.adapter.base.BaseQuickAdapter;
|
||||
import com.chad.library.adapter.base.BaseViewHolder;
|
||||
import com.example.moduleroom.R;
|
||||
import com.example.moduleroom.contacts.RequestContacts;
|
||||
import com.example.moduleroom.databinding.FragmentRequestBinding;
|
||||
import com.example.moduleroom.presenter.RequestPresenter;
|
||||
import com.hjq.toast.ToastUtils;
|
||||
import com.qxcm.moduleutil.base.BaseMvpFragment;
|
||||
import com.qxcm.moduleutil.bean.MusicSongBean;
|
||||
import com.qxcm.moduleutil.bean.SongMusicBean;
|
||||
import com.qxcm.moduleutil.rtc.AgoraManager;
|
||||
import com.qxcm.moduleutil.rtc.MusicBean;
|
||||
import com.qxcm.moduleutil.utils.ImageUtils;
|
||||
import com.qxcm.moduleutil.utils.SpUtil;
|
||||
import com.qxcm.moduleutil.utils.TimeUtils;
|
||||
import com.scwang.smartrefresh.layout.api.RefreshLayout;
|
||||
import com.scwang.smartrefresh.layout.listener.OnRefreshLoadMoreListener;
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
import org.greenrobot.eventbus.Subscribe;
|
||||
import org.greenrobot.eventbus.ThreadMode;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import io.agora.musiccontentcenter.Music;
|
||||
|
||||
/**
|
||||
* @author qx
|
||||
* @data 2025/6/10
|
||||
* @description: 点唱viwPage的fragment
|
||||
*/
|
||||
public class RequestFragment extends BaseMvpFragment<RequestPresenter, FragmentRequestBinding> implements RequestContacts.View {
|
||||
|
||||
public static final int TYPE_DATA = 1;//点歌
|
||||
public static final int TYPE_WEEK = 2;//已点
|
||||
private int type;
|
||||
private String roomId;
|
||||
BaseQuickAdapter<Music, BaseViewHolder> adapter;
|
||||
private int page = 1;
|
||||
String input="";
|
||||
@Override
|
||||
public void songList(List<MusicSongBean> musicSongBeans) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void upSong(String S) {
|
||||
com.hjq.toast.ToastUtils.show(S);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void song(List<SongMusicBean> music) {
|
||||
com.hjq.toast.ToastUtils.show("操作成功");
|
||||
}
|
||||
|
||||
public interface OnRequestFragmentListener {
|
||||
void onCloseDialog(Music musicSongBean);
|
||||
}
|
||||
|
||||
private OnRequestFragmentListener listener;
|
||||
|
||||
// 绑定监听器
|
||||
public void setOnRequestFragmentListener(OnRequestFragmentListener listener) {
|
||||
this.listener = listener;
|
||||
}
|
||||
|
||||
public static RequestFragment newInstance(String roomId, int type) {
|
||||
Bundle args = new Bundle();
|
||||
RequestFragment fragment = new RequestFragment();
|
||||
args.putString("roomId", roomId);
|
||||
args.putInt("type", type);
|
||||
fragment.setArguments(args);
|
||||
return fragment;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStart() {
|
||||
super.onStart();
|
||||
EventBus.getDefault().register(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStop() {
|
||||
super.onStop();
|
||||
EventBus.getDefault().unregister(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected RequestPresenter bindPresenter() {
|
||||
return new RequestPresenter(this, getActivity());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAttach(@NonNull Context context) {
|
||||
super.onAttach(context);
|
||||
roomId = getArguments().getString("roomId");
|
||||
type = getArguments().getInt("type");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initData() {
|
||||
|
||||
// mBinding.editQuery.setOnFocusChangeListener((v, hasFocus) ->{
|
||||
// if (hasFocus) {
|
||||
// new Handler(Looper.getMainLooper()).postDelayed(() -> {
|
||||
// if ( mBinding.scrollView != null) {
|
||||
// mBinding.scrollView.post(() -> mBinding.scrollView.fullScroll(View.FOCUS_DOWN)); // 滚动到底部
|
||||
// }
|
||||
// }, 200);
|
||||
// }
|
||||
// });
|
||||
mBinding.editQuery.setText(SpUtil.getMusicName());
|
||||
|
||||
mBinding.editQuery.addTextChangedListener(new TextWatcher() {
|
||||
@Override
|
||||
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTextChanged(CharSequence s, int start, int before, int count) {
|
||||
|
||||
// SharedViewModel viewModel = new ViewModelProvider(requireActivity()).get(SharedViewModel.class);
|
||||
// onMusicSearchResultEvent(viewModel.getMusicBean());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterTextChanged(Editable s) {
|
||||
input = s.toString();
|
||||
SpUtil.setMusicName( input);
|
||||
AgoraManager.getInstance(getContext()).searchMusic(input, 1);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreate(@Nullable Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
// getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);/**/
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initView() {
|
||||
mBinding.smartRefreshLayout.setOnRefreshLoadMoreListener(new OnRefreshLoadMoreListener() {
|
||||
@Override
|
||||
public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
|
||||
page++;
|
||||
AgoraManager.getInstance(getContext()).searchMusic(mBinding.editQuery.getText().toString(), page);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRefresh(@NonNull RefreshLayout refreshLayout) {
|
||||
// EventBus.getDefault().post(new BannerRefreshEvent());
|
||||
page = 1;
|
||||
AgoraManager.getInstance(getContext()).searchMusic(mBinding.editQuery.getText().toString(), page);
|
||||
}
|
||||
});
|
||||
|
||||
mBinding.recycleView.setLayoutManager(new LinearLayoutManager(getContext(), LinearLayoutManager.VERTICAL, false));
|
||||
adapter = new BaseQuickAdapter<Music, BaseViewHolder>(R.layout.item_reward, null) {
|
||||
|
||||
@Override
|
||||
protected void convert(BaseViewHolder helper, Music item) {
|
||||
LogUtils.e("@@@", item);
|
||||
helper.setText(R.id.muis_name, item.getName());
|
||||
helper.setText(R.id.muis_desc, TimeUtils.formatDuration(item.getReleaseTime().isEmpty() ? 0 : Long.parseLong(item.getReleaseTime())));
|
||||
helper.setText(R.id.muis_desc, "\t" + item.getSinger());
|
||||
ImageUtils.loadHeadCC(item.getPoster(), helper.getView(R.id.muis_avatar));
|
||||
|
||||
helper.getView(R.id.muis_price).setOnClickListener(new View.OnClickListener() {
|
||||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
if (!AgoraManager.getInstance(getContext()).isBjMusic()) {
|
||||
MvpPre.song(roomId, SpUtil.getUserId() + "", item.getSongCode() + "", item.getName(), item.getSinger(), item.getPoster(), String.valueOf(item.getDurationS()));
|
||||
} else {
|
||||
if (AgoraManager.getInstance(getContext()).getMusicList()==null) {
|
||||
// AgoraManager.getInstance(getContext()).isPreload2(item.getSongCode(), 1);
|
||||
List<Music> music = new ArrayList<>();
|
||||
music.add(item);
|
||||
AgoraManager.getInstance(getContext()).setMusicList(music);
|
||||
EventBus.getDefault().post(item);
|
||||
AgoraManager.getInstance(getContext()).nextSong();
|
||||
} else {
|
||||
|
||||
List<Music> music = AgoraManager.getInstance(getContext()).getMusicList();
|
||||
music.add(item);
|
||||
AgoraManager.getInstance(getContext()).setMusicList(music);
|
||||
}
|
||||
// AgoraManager.getInstance(getContext()).isPreload(item.getSongCode(), 1);
|
||||
|
||||
}
|
||||
ToastUtils.show("添加成功");
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
mBinding.recycleView.setAdapter(adapter);
|
||||
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
public void onMusicSearchResultEvent(MusicBean music) {
|
||||
if (music.getMusicList() != null) {
|
||||
if (music.getPage() == 1) {
|
||||
adapter.setNewData(music.getMusicList());
|
||||
} else {
|
||||
adapter.addData(music.getMusicList());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getLayoutId() {
|
||||
return R.layout.fragment_request;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,746 @@
|
||||
package com.example.moduleroom.fragment;
|
||||
|
||||
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;
|
||||
import android.graphics.Color;
|
||||
import android.os.Bundle;
|
||||
import android.os.CountDownTimer;
|
||||
import android.util.TypedValue;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.View;
|
||||
import android.view.ViewStub;
|
||||
import android.view.WindowManager;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.core.content.ContextCompat;
|
||||
|
||||
import com.example.moduleroom.R;
|
||||
import com.example.moduleroom.activity.RoomActivity;
|
||||
import com.example.moduleroom.contacts.RoomAuctionContacts;
|
||||
import com.example.moduleroom.databinding.FragmentRoomAuctionBinding;
|
||||
import com.example.moduleroom.dialog.BidListDialogFragment;
|
||||
import com.example.moduleroom.dialog.CardRelationshipFragment;
|
||||
import com.example.moduleroom.dialog.CustomCenterDialogFragment;
|
||||
import com.example.moduleroom.dialog.RoomGiftDialogFragment;
|
||||
import com.example.moduleroom.dialog.RoomOnlineDialogFragment;
|
||||
import com.example.moduleroom.dialog.RoomUserInfoFragment;
|
||||
import com.example.moduleroom.presenter.RoomAuctionPresenterTow;
|
||||
import com.hjq.toast.ToastUtils;
|
||||
import com.orhanobut.logger.Logger;
|
||||
import com.qxcm.moduleutil.base.BaseMvpFragment;
|
||||
import com.qxcm.moduleutil.bean.RoomMessageEvent;
|
||||
import com.qxcm.moduleutil.bean.RoomTime;
|
||||
import com.qxcm.moduleutil.bean.UserInfo;
|
||||
import com.qxcm.moduleutil.bean.room.AuctionBean;
|
||||
import com.qxcm.moduleutil.bean.room.RoomAuction;
|
||||
import com.qxcm.moduleutil.bean.room.RoomBean;
|
||||
import com.qxcm.moduleutil.bean.room.RoomInfoResp;
|
||||
import com.qxcm.moduleutil.bean.room.RoomPitBean;
|
||||
import com.qxcm.moduleutil.dialog.ConfirmDialog;
|
||||
import com.qxcm.moduleutil.utils.ImageUtils;
|
||||
import com.qxcm.moduleutil.utils.SpUtil;
|
||||
import com.qxcm.moduleutil.widget.RoomMakeWheatView;
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
import org.greenrobot.eventbus.Subscribe;
|
||||
import org.greenrobot.eventbus.ThreadMode;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author qx
|
||||
* @data 2025/6/27
|
||||
* @description: 拍卖房
|
||||
*/
|
||||
public class RoomAuctionFragment extends BaseMvpFragment<RoomAuctionPresenterTow, FragmentRoomAuctionBinding>
|
||||
implements RoomAuctionContacts.View {
|
||||
private RoomInfoResp roomInfoResp;
|
||||
private RoomAuction roomAuction;
|
||||
private RoomBean roomBean;
|
||||
RoomMakeWheatView wheatView;
|
||||
RoomMakeWheatView wheatView2;
|
||||
|
||||
CountDownTimer mCountDownTimer;
|
||||
private long remainingTime;
|
||||
|
||||
private String auctionId = "";
|
||||
private RoomAuction.AuctionUserBean auctionUserBean;
|
||||
private List<RoomAuction.AuctionListBean> auctionList;
|
||||
private ImageView imActionJs, imActionYs;
|
||||
private ViewStub stub;
|
||||
private boolean isButtonsInflated = false;
|
||||
private int type;
|
||||
|
||||
public static RoomAuctionFragment newInstance(RoomInfoResp roomInfoResp, int type) {
|
||||
|
||||
Bundle args = new Bundle();
|
||||
|
||||
RoomAuctionFragment fragment = new RoomAuctionFragment();
|
||||
args.putSerializable("roomInfo", roomInfoResp);
|
||||
args.putInt("type", type);
|
||||
fragment.setArguments(args);
|
||||
return fragment;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAttach(@NonNull Context context) {
|
||||
super.onAttach(context);
|
||||
roomInfoResp = (RoomInfoResp) getArguments().getSerializable("roomInfo");
|
||||
type = getArguments().getInt("type");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected RoomAuctionPresenterTow bindPresenter() {
|
||||
return new RoomAuctionPresenterTow(this, getActivity());
|
||||
}
|
||||
|
||||
public void initOverlayButtons() {
|
||||
if (isButtonsInflated) return;
|
||||
|
||||
ViewStub stub = requireActivity().findViewById(R.id.stub_buttons);
|
||||
if (stub != null) {
|
||||
View inflated = stub.inflate();
|
||||
|
||||
imActionJs = inflated.findViewById(R.id.im_action_ys);
|
||||
imActionYs = inflated.findViewById(R.id.im_action_js);
|
||||
|
||||
if (imActionJs != null && imActionYs != null) {
|
||||
// 设置点击事件
|
||||
imActionJs.setOnClickListener(this::onChock);
|
||||
imActionYs.setOnClickListener(this::onChock);
|
||||
|
||||
isButtonsInflated = true;
|
||||
} else {
|
||||
// 报错提示:说明 top_overlay_buttons.xml 中没有定义这些 id
|
||||
throw new IllegalStateException("im_action_js or im_action_ys not found in overlay layout");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initData() {
|
||||
|
||||
if (getActivity() instanceof RoomActivity) {
|
||||
((RoomActivity) getActivity()).setvisibTop(true);
|
||||
}
|
||||
RoomPitBean roomPitBean = roomInfoResp.getRoom_info().getPit_list().get(0);
|
||||
if (roomPitBean.getUser_id() != null && !roomPitBean.getUser_id().isEmpty() && !roomPitBean.getUser_id().equals("0")) {
|
||||
wheatView.setData(roomPitBean);
|
||||
}
|
||||
|
||||
|
||||
roomAuction = roomInfoResp.getRoom_auction();
|
||||
if (roomAuction != null) {
|
||||
if (roomAuction.getAuction_user() != null) {
|
||||
auctionUserBean = roomAuction.getAuction_user();
|
||||
RoomPitBean roomPitBean1 = new RoomPitBean();
|
||||
roomPitBean1.setUser_id(auctionUserBean.getUser_id());
|
||||
roomPitBean1.setNickname(auctionUserBean.getNickname());
|
||||
roomPitBean1.setAvatar(auctionUserBean.getAvatar());
|
||||
roomPitBean1.setDress(auctionUserBean.getDress());
|
||||
roomPitBean1.setSex(auctionUserBean.getSex());
|
||||
roomPitBean1.setPit_number("888");
|
||||
wheatView2.setData(roomPitBean1);
|
||||
|
||||
countDownTime(auctionUserBean.getDuration());
|
||||
if (auctionUserBean.getUser_id() != null && auctionUserBean.getUser_id().equals(SpUtil.getUserId() + "")) {
|
||||
mBinding.ivJp.setVisibility(INVISIBLE);
|
||||
} else {
|
||||
if(wheatView.pitBean!=null){
|
||||
if (wheatView.pitBean.getUser_id().equals(SpUtil.getUserId() + "")) {
|
||||
imActionJs.setVisibility(VISIBLE);
|
||||
imActionYs.setVisibility(VISIBLE);
|
||||
} else {
|
||||
imActionJs.setVisibility(INVISIBLE);
|
||||
imActionYs.setVisibility(INVISIBLE);
|
||||
}
|
||||
}else {
|
||||
|
||||
imActionJs.setVisibility(INVISIBLE);
|
||||
imActionYs.setVisibility(INVISIBLE);
|
||||
}
|
||||
mBinding.ivJp.setVisibility(VISIBLE);
|
||||
}
|
||||
gengv();
|
||||
auctionId = auctionUserBean.getAuction_id();
|
||||
SpUtil.setAuctionId(auctionId);
|
||||
}
|
||||
if (roomAuction.getAuction_list() != null && roomAuction.getAuction_list().size() > 0) {
|
||||
auctionList = roomAuction.getAuction_list();
|
||||
// for (int i=0; i < roomAuction.getAuction_list().size(); i++){
|
||||
// int j=i++;
|
||||
// RoomAuction.AuctionListBean auctionListBean=roomAuction.getAuction_list().get(i);
|
||||
// RoomPitBean pitBean=new RoomPitBean();
|
||||
// pitBean.setUser_id(auctionListBean.getUser_id());
|
||||
// pitBean.setNickname(auctionListBean.getNickname());
|
||||
// pitBean.setAvatar(auctionListBean.getAvatar());
|
||||
// pitBean.setPit_number(j+"");
|
||||
// if (j==1) {
|
||||
// RoomMakeWheatView wheatView = mBinding.ivAuction1;
|
||||
// wheatView.setData(pitBean);
|
||||
// }else if (j==2){
|
||||
// RoomMakeWheatView wheatView = mBinding.ivAuction2;
|
||||
// wheatView.setData(pitBean);
|
||||
// }else if (j==3){
|
||||
// RoomMakeWheatView wheatView = mBinding.ivAuction3;
|
||||
// wheatView.setData(pitBean);
|
||||
// }else if (j==4){
|
||||
// ImageUtils.loadHeadCC(auctionListBean.getAvatar(), mBinding.avatar4);
|
||||
// }else if (j==5){
|
||||
// ImageUtils.loadHeadCC(auctionListBean.getAvatar(), mBinding.avatar5);
|
||||
// }else if (j==6){
|
||||
// ImageUtils.loadHeadCC(auctionListBean.getAvatar(), mBinding.avatar6);
|
||||
// }
|
||||
//
|
||||
// }
|
||||
gexList();
|
||||
}
|
||||
|
||||
|
||||
} else {
|
||||
RoomPitBean roomPitBean1 = new RoomPitBean();
|
||||
roomPitBean1.setPit_number("888");
|
||||
roomPitBean1.setSex("");
|
||||
roomPitBean1.setUser_id("");
|
||||
roomPitBean1.setNickname("");
|
||||
roomPitBean1.setAvatar("");
|
||||
wheatView2.setData(roomPitBean1);
|
||||
auctionId = "";
|
||||
SpUtil.setAuctionId("");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initView() {
|
||||
wheatView = mBinding.roomMakeWheat;
|
||||
wheatView2 = mBinding.roomMakeWheat2;
|
||||
mBinding.ivJp.setOnClickListener(this::onChock);
|
||||
mBinding.roomMakeWheat.setOnClickListener(this::onChock);
|
||||
mBinding.roomMakeWheat2.setOnClickListener(this::onChock);
|
||||
mBinding.bangdan.setOnClickListener(this::onChock);
|
||||
// imActionJs=mBinding.imActionJs;
|
||||
// imActionYs=mBinding.imActionYs;
|
||||
// imActionJs.setOnClickListener(this::onChock);
|
||||
// imActionYs.setOnClickListener(this::onChock);
|
||||
getTextView();
|
||||
initOverlayButtons();
|
||||
}
|
||||
|
||||
private void onChock(View view) {
|
||||
int id = view.getId();
|
||||
if (id == R.id.iv_jp) {
|
||||
// RoomAuction.AuctionUserBean auctionUserBean = roomInfoResp.getRoom_auction().getAuction_user();
|
||||
// CardRelationshipFragment.show(roomInfoResp.getRoom_info().getRoom_id(), auctionUserBean.getUser_id(), type, getActivity().getSupportFragmentManager());
|
||||
UserInfo userInfo = new UserInfo();
|
||||
userInfo.setUser_id(Integer.parseInt(roomInfoResp.getRoom_auction().getAuction_user().getUser_id()));
|
||||
userInfo.setNickname(roomInfoResp.getRoom_auction().getAuction_user().getNickname());
|
||||
userInfo.setAvatar(roomInfoResp.getRoom_auction().getAuction_user().getAvatar());
|
||||
userInfo.setAuction_id(roomInfoResp.getRoom_auction().getAuction_user().getAuction_id());
|
||||
userInfo.setPit_number("888");
|
||||
RoomGiftDialogFragment.show(null, userInfo, roomInfoResp.getRoom_info().getRoom_id(), getParentFragmentManager());
|
||||
|
||||
} else if (id == R.id.room_make_wheat) {
|
||||
if (!wheatView.getUserId().equals("")) {
|
||||
RoomUserInfoFragment.show(roomInfoResp.getRoom_info().getRoom_id(), wheatView.getUserId(), wheatView.pitNumber, getHostUser(),false, getChildFragmentManager());
|
||||
} else {
|
||||
MvpPre.applyPit(roomInfoResp.getRoom_info().getRoom_id(), "9");
|
||||
}
|
||||
} else if (id == R.id.room_make_wheat2) {
|
||||
if (wheatView2.getUserId().equals("")) {
|
||||
RoomOnlineDialogFragment.show(roomInfoResp.getRoom_info().getRoom_id(), 888 + "", getChildFragmentManager());
|
||||
} else {
|
||||
RoomUserInfoFragment.show(roomInfoResp.getRoom_info().getRoom_id(), wheatView2.getUserId(), wheatView2.pitNumber, getHostUser(),false, getChildFragmentManager());
|
||||
|
||||
}
|
||||
} else if (id == R.id.im_action_ys) {
|
||||
MvpPre.auctionDelay(SpUtil.getauctionId());
|
||||
} else if (id == R.id.im_action_js) {
|
||||
MvpPre.auctionEnd(SpUtil.getauctionId());
|
||||
}else if (id == R.id.bangdan){
|
||||
BidListDialogFragment.newInstance(SpUtil.getauctionId()).show(getChildFragmentManager(), "BidListDialogFragment");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void getTextView() {
|
||||
int defaultColor = ContextCompat.getColor(requireContext(), com.qxcm.moduleutil.R.color.color_0DFFB9); // 原亲密拍颜色
|
||||
int selectedColor = Color.WHITE; // 原真爱拍颜色
|
||||
|
||||
float defaultSize = 24f; // 亲密拍默认字体大小
|
||||
float selectedSize = 16f; // 真爱拍默认字体大小
|
||||
|
||||
// if (type == 2) {
|
||||
toggleTextStyles(mBinding.qinmi, mBinding.zhenai, defaultColor, selectedColor, defaultSize, selectedSize,type);
|
||||
// } else if (type == 1) {
|
||||
// toggleTextStyles( mBinding.zhenai,mBinding.qinmi, defaultColor, selectedColor, defaultSize, selectedSize);
|
||||
// }
|
||||
|
||||
|
||||
mBinding.zhenai.setOnClickListener(v -> {
|
||||
// type = 1;
|
||||
// toggleTextStyles(mBinding.qinmi, mBinding.zhenai, defaultColor, selectedColor, defaultSize, selectedSize);
|
||||
if (wheatView.getUserId().equals(SpUtil.getUserId()+"")) {
|
||||
// 判断 wheatView2 是否有人
|
||||
if (wheatView2 != null && wheatView2.getUserId() != null && !wheatView2.getUserId().isEmpty()) {
|
||||
// 显示提示:竞拍进行中
|
||||
// showAlertDialog("提示", "竞拍正在进行中,请稍后再操作");
|
||||
ToastUtils.show("竞拍正在进行中,请稍后再操作");
|
||||
} else {
|
||||
// 显示确认对话框
|
||||
// showConfirmDialog(1);
|
||||
queren(1);
|
||||
}
|
||||
}else {
|
||||
ToastUtils.show("请联系主持进行切换");
|
||||
}
|
||||
});
|
||||
|
||||
mBinding.qinmi.setOnClickListener(v -> {
|
||||
if (wheatView.getUserId().equals(SpUtil.getUserId()+"")) {
|
||||
|
||||
if (wheatView2 != null && wheatView2.getUserId() != null && !wheatView2.getUserId().isEmpty()) {
|
||||
// 显示提示:竞拍进行中
|
||||
// showAlertDialog("提示", "竞拍正在进行中,请稍后再操作");
|
||||
ToastUtils.show("竞拍正在进行中,请稍后再操作");
|
||||
} else {
|
||||
// 显示确认对话框
|
||||
// showConfirmDialog(2);
|
||||
queren(2);
|
||||
}
|
||||
}else{
|
||||
ToastUtils.show("请联系主持进行切换");
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
private void queren(int newType) {
|
||||
// 创建并显示确认对话框
|
||||
new ConfirmDialog(requireContext(),
|
||||
"温馨提示",
|
||||
newType==1?"确定要切换为真爱拍吗":"确认切换为亲密拍吗",
|
||||
"确认",
|
||||
"取消",
|
||||
v -> {
|
||||
// 点击“确认”按钮时执行
|
||||
// MvpPre.agreeSong(roomId, "1");
|
||||
MvpPre.auctionMode(roomInfoResp.getRoom_info().getRoom_id(), newType == 1 ? "1" : "2");
|
||||
// type = newType;
|
||||
// toggleTextStyles(mBinding.qinmi, mBinding.zhenai,
|
||||
// ContextCompat.getColor(requireContext(), com.qxcm.moduleutil.R.color.color_0DFFB9),
|
||||
// Color.WHITE, 24f, 16f);
|
||||
},
|
||||
v -> {
|
||||
// 点击“取消”按钮时什么都不做
|
||||
// MvpPre.agreeSong(roomId, "2");
|
||||
},false,0).show();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getLayoutId() {
|
||||
return R.layout.fragment_room_auction;
|
||||
}
|
||||
|
||||
/* 这是判断当前用户是否是麦上房主、管理员、主持,不在主持麦的都是不同用户
|
||||
* @return
|
||||
*/
|
||||
private int getHostUser() {
|
||||
if (roomInfoResp.getUser_info().getPit_number() == 9) {
|
||||
if (roomInfoResp.getUser_info().getIs_room_owner() == 1) {
|
||||
return 1;
|
||||
} else if (roomInfoResp.getUser_info().getIs_management() == 1) {
|
||||
return 2;
|
||||
} else {
|
||||
return 3;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void applyPit() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void roomAuction(AuctionBean auctionBean) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void auctionDelay() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void auctionEnd() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void auctionMode() {
|
||||
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
public void roomInfoEvent(RoomMessageEvent messageEvent) {
|
||||
if (messageEvent.getMsgType() == 1003) {//上麦
|
||||
if (messageEvent.getText().getPit_number().equals("9")) {
|
||||
wheatView.setData(getPitBean(messageEvent));
|
||||
imActionJs.setVisibility(View.VISIBLE);
|
||||
imActionYs.setVisibility(View.VISIBLE);
|
||||
}
|
||||
} else if (messageEvent.getMsgType() == 1004) {
|
||||
if (messageEvent.getText().getPit_number().equals("9")) {
|
||||
wheatView.setData(getPitBean2(messageEvent));
|
||||
imActionJs.setVisibility(GONE);
|
||||
imActionYs.setVisibility(GONE);
|
||||
} else if (messageEvent.getText().getPit_number().equals("888")) {
|
||||
wheatView2.setData(getPitBean2(messageEvent));
|
||||
}
|
||||
} else if (messageEvent.getMsgType() == 1022) {
|
||||
if (messageEvent.getText().getType() == 1) {
|
||||
if (messageEvent.getText().getPit_number().equals("888")) {
|
||||
wheatView2.setData(getPitBean(messageEvent));
|
||||
imActionJs.setVisibility(GONE);
|
||||
imActionYs.setVisibility(GONE);
|
||||
|
||||
}
|
||||
|
||||
if (messageEvent.getText().getFromUserInfo().getUser_id() == SpUtil.getUserId()) {
|
||||
// RoomAuction.AuctionUserBean auctionUserBean =messageEvent.getText().getAuction_user();
|
||||
CardRelationshipFragment.show(roomInfoResp.getRoom_info().getRoom_id(), SpUtil.getUserId() + "", type + "", getActivity().getSupportFragmentManager());
|
||||
}
|
||||
} else if (messageEvent.getText().getType() == 2) {
|
||||
if (messageEvent.getText().getPit_number().equals("9")) {
|
||||
wheatView.setData(getPitBean2(messageEvent));
|
||||
}else if (messageEvent.getText().getPit_number().equals("888")) {
|
||||
wheatView2.setData(getPitBean2(messageEvent));
|
||||
}
|
||||
yinc();
|
||||
}
|
||||
|
||||
} else if (messageEvent.getMsgType() == 1023) {//开始竞拍
|
||||
mBinding.ivJp.setVisibility(VISIBLE);
|
||||
if (wheatView.pitBean.getUser_id().equals(SpUtil.getUserId() + "")) {
|
||||
imActionYs.setVisibility(VISIBLE);
|
||||
imActionYs.setVisibility(VISIBLE);
|
||||
}else {
|
||||
imActionJs.setVisibility(GONE);
|
||||
imActionYs.setVisibility(GONE);
|
||||
}
|
||||
if (messageEvent.getText().getAuction_user().getUser_id().equals(SpUtil.getUserId() + "")) {
|
||||
mBinding.ivJp.setVisibility(INVISIBLE);
|
||||
}
|
||||
roomInfoResp.getRoom_auction().setAuction_user(messageEvent.getText().getAuction_user());
|
||||
auctionId = messageEvent.getText().getAuction_user().getAuction_id();
|
||||
SpUtil.setAuctionId(auctionId);
|
||||
countDownTime(messageEvent.getText().getAuction_user().getDuration());
|
||||
auctionUserBean = messageEvent.getText().getAuction_user();
|
||||
gengv();
|
||||
} else if (messageEvent.getMsgType() == 1024) {//竞拍,拍卖列表变化
|
||||
auctionList = messageEvent.getText().getAuction_list();
|
||||
gexList();
|
||||
} else if (messageEvent.getMsgType() == 1025) {//结束
|
||||
if (messageEvent.getText().getRecipient() != null) {//成功
|
||||
CustomCenterDialogFragment.show(messageEvent.getText().getRecipient(), messageEvent.getText().getAuction_user(), getActivity().getSupportFragmentManager());
|
||||
|
||||
} else {//失败
|
||||
showCountDownDialog(getContext());
|
||||
}
|
||||
SpUtil.setAuctionId("");
|
||||
mBinding.ivJp.setVisibility(INVISIBLE);
|
||||
imActionYs.setVisibility(INVISIBLE);
|
||||
imActionJs.setVisibility(INVISIBLE);
|
||||
releaseCountDownTimer();
|
||||
auctionList = null;
|
||||
gexList();
|
||||
} else if (messageEvent.getMsgType() == 1026) {//主持延迟
|
||||
countDownTime(messageEvent.getText().getDuration());
|
||||
}else if (messageEvent.getMsgType() == 1027){
|
||||
type=messageEvent.getText().getType();
|
||||
getTextView();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void gengv() {
|
||||
if (auctionUserBean != null) {
|
||||
mBinding.tvRelation.setText(auctionUserBean.getRelation_name());
|
||||
mBinding.tvTime.setText(auctionUserBean.getTime_day());
|
||||
mBinding.tvGift.setText(auctionUserBean.getGift_name());
|
||||
ImageUtils.loadHeadCC(auctionUserBean.getBase_image(), mBinding.btnGift);
|
||||
// auctionId=auctionUserBean.getAuction_id();
|
||||
SpUtil.setAuctionId(auctionUserBean.getAuction_id());
|
||||
Logger.d("@@@",mBinding.tvTime.getText());
|
||||
}
|
||||
}
|
||||
|
||||
private void yinc() {
|
||||
mBinding.ivJp.setVisibility(INVISIBLE);
|
||||
imActionJs.setVisibility(INVISIBLE);
|
||||
imActionYs.setVisibility(INVISIBLE);
|
||||
mBinding.tvDjTime.setVisibility(INVISIBLE);
|
||||
mBinding.tvRelation.setText("关系");
|
||||
mBinding.tvTime.setText("时间");
|
||||
mBinding.tvGift.setText("礼物");
|
||||
mBinding.btnGift.setImageResource(com.qxcm.moduleutil.R.mipmap.liwu);
|
||||
|
||||
}
|
||||
|
||||
private void gexList() {
|
||||
if (auctionList != null && auctionList.size() > 0) {
|
||||
for (int i = 0; i < auctionList.size(); i++) {
|
||||
int j = 0;
|
||||
j++;
|
||||
|
||||
RoomAuction.AuctionListBean auctionListBean = auctionList.get(i);
|
||||
RoomPitBean pitBean = new RoomPitBean();
|
||||
pitBean.setUser_id(auctionListBean.getUser_id());
|
||||
pitBean.setNickname(auctionListBean.getNickname());
|
||||
pitBean.setAvatar(auctionListBean.getAvatar());
|
||||
|
||||
if (j == 1) {
|
||||
pitBean.setPit_number("111");
|
||||
RoomMakeWheatView wheatView = mBinding.ivAuction1;
|
||||
wheatView.setData(pitBean);
|
||||
} else if (j == 2) {
|
||||
pitBean.setPit_number("222");
|
||||
RoomMakeWheatView wheatView = mBinding.ivAuction2;
|
||||
wheatView.setData(pitBean);
|
||||
} else if (j == 3) {
|
||||
pitBean.setPit_number("333");
|
||||
RoomMakeWheatView wheatView = mBinding.ivAuction3;
|
||||
wheatView.setData(pitBean);
|
||||
} else if (j == 4) {
|
||||
ImageUtils.loadHeadCC(auctionListBean.getAvatar(), mBinding.avatar4);
|
||||
} else if (j == 5) {
|
||||
ImageUtils.loadHeadCC(auctionListBean.getAvatar(), mBinding.avatar5);
|
||||
} else if (j == 6) {
|
||||
ImageUtils.loadHeadCC(auctionListBean.getAvatar(), mBinding.avatar6);
|
||||
}
|
||||
|
||||
}
|
||||
} else {
|
||||
RoomMakeWheatView wheatView = mBinding.ivAuction1;
|
||||
wheatView.setData(getPitBean2(null));
|
||||
RoomMakeWheatView wheatView2 = mBinding.ivAuction2;
|
||||
wheatView2.setData(getPitBean2(null));
|
||||
RoomMakeWheatView wheatView3 = mBinding.ivAuction3;
|
||||
wheatView3.setData(getPitBean2(null));
|
||||
// mBinding.ivAuction1.setData(getPitBean2(null));
|
||||
// mBinding.ivAuction2.setData(getPitBean2(null));
|
||||
// mBinding.ivAuction3.setData(getPitBean2(null));
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: 2025/6/30 竞拍失败的dialog
|
||||
public void showCountDownDialog(Context context) {
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(context);
|
||||
View dialogView = getLayoutInflater().inflate(R.layout.dialog_with_countdown, null);
|
||||
builder.setView(dialogView);
|
||||
|
||||
TextView btnKnow = dialogView.findViewById(R.id.btn_know);
|
||||
TextView tvCountDown = dialogView.findViewById(R.id.tv_countdown);
|
||||
|
||||
final AlertDialog dialog = builder.create();
|
||||
dialog.setCancelable(false); // 防止点击外部取消
|
||||
|
||||
final CountDownTimer countDownTimer = new CountDownTimer(3000, 1000) {
|
||||
@Override
|
||||
public void onTick(long millisUntilFinished) {
|
||||
int secondsRemaining = (int) (millisUntilFinished / 1000);
|
||||
tvCountDown.setText(String.valueOf(secondsRemaining));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFinish() {
|
||||
dialog.dismiss(); // 倒计时结束自动关闭
|
||||
}
|
||||
};
|
||||
|
||||
btnKnow.setOnClickListener(v -> {
|
||||
countDownTimer.cancel(); // 取消倒计时
|
||||
dialog.dismiss(); // 手动关闭对话框
|
||||
});
|
||||
|
||||
dialog.show();
|
||||
|
||||
countDownTimer.start(); // 开始倒计时
|
||||
//设置 Dialog 最大宽度(例如屏幕宽度的 80%)
|
||||
WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
|
||||
lp.copyFrom(dialog.getWindow().getAttributes());
|
||||
lp.width = (int) (context.getResources().getDisplayMetrics().widthPixels * 0.9f); // 80% 屏幕宽度
|
||||
int maxHeightDp = 200; // 最大高度 200dp
|
||||
int maxHeightPx = (int) (maxHeightDp * context.getResources().getDisplayMetrics().density);
|
||||
|
||||
// lp.height = Math.min(
|
||||
// maxHeightPx,
|
||||
// context.getResources().getDisplayMetrics().heightPixels * 3 / 5
|
||||
// ); // 取较小值
|
||||
dialog.getWindow().setAttributes(lp);
|
||||
}
|
||||
|
||||
|
||||
public void countDownTime(long time) {
|
||||
try {
|
||||
if (time <= 0) {
|
||||
setTime(0);
|
||||
|
||||
releaseCountDownTimer();
|
||||
return;
|
||||
}
|
||||
releaseCountDownTimer();
|
||||
// 获取当前时间的毫秒值
|
||||
long currentTime = System.currentTimeMillis() / 1000L;
|
||||
// 计算倒计时的总秒数
|
||||
long countDownTime = (time - currentTime);
|
||||
Logger.d("@@@", "countDownTime = " + countDownTime);
|
||||
if (countDownTime <= 0) {
|
||||
setTime(0);
|
||||
releaseCountDownTimer();
|
||||
return;
|
||||
}
|
||||
mCountDownTimer = new CountDownTimer(countDownTime * 1000L, 1000L) {
|
||||
@Override
|
||||
public void onTick(long millisUntilFinished) {
|
||||
int time1 = (int) (millisUntilFinished / 1000);
|
||||
setTime(time1);
|
||||
remainingTime = time1;
|
||||
// if (time1 <= 10) {
|
||||
// mBinding.tvDjs.setVisibility(View.VISIBLE);
|
||||
// mBinding.tvDjs.setText(time1 + "");
|
||||
//// mBinding.tvDjs.setVisibility(GONE);
|
||||
// } else {
|
||||
// mBinding.tvDjs.setVisibility(GONE);
|
||||
// }
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFinish() {
|
||||
setTime(0);
|
||||
|
||||
remainingTime = 0;
|
||||
}
|
||||
};
|
||||
mCountDownTimer.start();
|
||||
} catch (Exception e) {
|
||||
Logger.e("countDownTime", e);
|
||||
}
|
||||
}
|
||||
|
||||
private String formatTime(int totalSeconds) {
|
||||
int hours = totalSeconds / 3600;
|
||||
int minutes = (totalSeconds % 3600) / 60;
|
||||
int seconds = totalSeconds % 60;
|
||||
|
||||
// return String.format("%02d:%02d", minutes, seconds);
|
||||
return String.format("%02d:%02d:%02d", hours, minutes, seconds);
|
||||
}
|
||||
|
||||
@SuppressLint("DefaultLocale")
|
||||
public void setTime(int seconds) {
|
||||
mBinding.tvDjTime.setVisibility(VISIBLE);
|
||||
if (seconds == 0) {
|
||||
mBinding.tvDjTime.setText("倒计时:00:00");
|
||||
}
|
||||
String formattedTime = formatTime(seconds);
|
||||
mBinding.tvDjTime.setText("倒计时:" + formattedTime);
|
||||
|
||||
}
|
||||
|
||||
// TODO: 2025/3/19 释放倒计时器
|
||||
private void releaseCountDownTimer() {
|
||||
if (mCountDownTimer != null) {
|
||||
mCountDownTimer.cancel();
|
||||
mCountDownTimer = null;
|
||||
mBinding.tvDjTime.setVisibility(GONE);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// TODO: 2025/6/30 上麦,麦位变化
|
||||
private RoomPitBean getPitBean(RoomMessageEvent messageEvent) {
|
||||
RoomPitBean pitBean = new RoomPitBean();
|
||||
pitBean.setPit_number(messageEvent.getText().getPit_number());
|
||||
pitBean.setUser_id(messageEvent.getText().getFromUserInfo().getUser_id() + "");
|
||||
pitBean.setAvatar(messageEvent.getText().getFromUserInfo().getAvatar());
|
||||
pitBean.setNickname(messageEvent.getText().getFromUserInfo().getNickname());
|
||||
pitBean.setSex(messageEvent.getText().getFromUserInfo().getSex() + "");
|
||||
pitBean.setCharm(messageEvent.getText().getFromUserInfo().getCharm());
|
||||
|
||||
|
||||
return pitBean;
|
||||
}
|
||||
|
||||
// TODO: 2025/6/30 下麦麦位变化
|
||||
private RoomPitBean getPitBean2(RoomMessageEvent messageEvent) {
|
||||
RoomPitBean pitBean = new RoomPitBean();
|
||||
pitBean.setPit_number(messageEvent.getText().getPit_number());
|
||||
pitBean.setUser_id("");
|
||||
pitBean.setAvatar("");
|
||||
pitBean.setNickname("");
|
||||
pitBean.setSex("");
|
||||
pitBean.setCharm("");
|
||||
return pitBean;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStart() {
|
||||
super.onStart();
|
||||
if (!EventBus.getDefault().isRegistered(this)) {
|
||||
EventBus.getDefault().register(this);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onDestroyView() {
|
||||
super.onDestroyView();
|
||||
if (EventBus.getDefault().isRegistered(this)) {
|
||||
EventBus.getDefault().unregister(this);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 切换两个 TextView 的样式
|
||||
*
|
||||
* @param qinmi 亲密拍 TextView
|
||||
* @param zhenai 真爱拍 TextView
|
||||
* @param defaultColor 默认颜色(如亲密拍原本颜色)
|
||||
* @param selectedColor 点击后选中颜色(如真爱拍原本颜色)
|
||||
* @param defaultSize 默认字体大小(sp)
|
||||
* @param selectedSize 点击后选中字体大小(sp)
|
||||
*/
|
||||
public void toggleTextStyles(TextView qinmi, TextView zhenai,
|
||||
int defaultColor, int selectedColor,
|
||||
float defaultSize, float selectedSize,int type) {
|
||||
|
||||
boolean isDefaultState = qinmi.getCurrentTextColor() == defaultColor;
|
||||
|
||||
if (type==1) {
|
||||
// 切换到真爱拍样式
|
||||
qinmi.setTextColor(selectedColor);
|
||||
qinmi.setTextSize(TypedValue.COMPLEX_UNIT_SP, selectedSize);
|
||||
|
||||
zhenai.setTextColor(defaultColor);
|
||||
zhenai.setTextSize(TypedValue.COMPLEX_UNIT_SP, defaultSize);
|
||||
} else {
|
||||
// 切换回默认样式
|
||||
qinmi.setTextColor(defaultColor);
|
||||
qinmi.setTextSize(TypedValue.COMPLEX_UNIT_SP, defaultSize);
|
||||
|
||||
zhenai.setTextColor(selectedColor);
|
||||
zhenai.setTextSize(TypedValue.COMPLEX_UNIT_SP, selectedSize);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,354 @@
|
||||
package com.example.moduleroom.fragment;
|
||||
|
||||
import static android.app.Activity.RESULT_OK;
|
||||
import static com.blankj.utilcode.util.SnackbarUtils.dismiss;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.graphics.Color;
|
||||
import android.os.Bundle;
|
||||
import android.text.TextUtils;
|
||||
import android.view.Gravity;
|
||||
import android.view.View;
|
||||
import android.view.Window;
|
||||
import android.view.WindowManager;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.fragment.app.FragmentActivity;
|
||||
import androidx.recyclerview.widget.GridLayoutManager;
|
||||
|
||||
import com.chad.library.adapter.base.BaseQuickAdapter;
|
||||
import com.chad.library.adapter.base.BaseViewHolder;
|
||||
import com.example.moduleroom.R;
|
||||
import com.example.moduleroom.contacts.RoomBackgroundContacts;
|
||||
import com.example.moduleroom.databinding.RoomFragementDialogRoomBackgroundBinding;
|
||||
import com.example.moduleroom.presenter.RoomBackgroundPresenter;
|
||||
import com.luck.picture.lib.basic.PictureSelector;
|
||||
import com.luck.picture.lib.config.PictureConfig;
|
||||
import com.luck.picture.lib.entity.LocalMedia;
|
||||
import com.qxcm.moduleutil.base.BaseMvpDialogFragment;
|
||||
import com.qxcm.moduleutil.bean.RoomBgBean;
|
||||
import com.qxcm.moduleutil.dialog.ConfirmDialog;
|
||||
import com.qxcm.moduleutil.utils.GlideEngine;
|
||||
import com.qxcm.moduleutil.utils.ImageUtils;
|
||||
import com.qxcm.moduleutil.widget.Constants;
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
/**
|
||||
*@author qx
|
||||
*@data 2025/6/24
|
||||
*@description: 更换房间背景
|
||||
*/
|
||||
public class RoomBackgroundDialogFragment extends BaseMvpDialogFragment<RoomBackgroundPresenter, RoomFragementDialogRoomBackgroundBinding> implements RoomBackgroundContacts.View {
|
||||
|
||||
|
||||
private MyAdapter mAdapter;
|
||||
|
||||
private String roomId;
|
||||
private String picture;
|
||||
private boolean pictureChanged;
|
||||
private List<RoomBgBean.RoomBg> publicBgList = new ArrayList<>();
|
||||
private List<RoomBgBean.RoomBg> myBgList = new ArrayList<>();
|
||||
|
||||
|
||||
public static RoomBackgroundDialogFragment newInstance(String roomId) {
|
||||
RoomBackgroundDialogFragment fragment = new RoomBackgroundDialogFragment();
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putString("roomId", roomId);
|
||||
fragment.setArguments(bundle);
|
||||
return fragment;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initData() {
|
||||
mBinding.recyclerView.setLayoutManager(new GridLayoutManager(getContext(), 3));
|
||||
mAdapter = new MyAdapter();
|
||||
mAdapter.setCheckedPicture(picture);
|
||||
mBinding.recyclerView.setAdapter(mAdapter);
|
||||
|
||||
mAdapter.setOnItemClickListener(new MyAdapter.OnItemClickListener() {
|
||||
@Override
|
||||
public void onAddImageClick() {
|
||||
// 处理“添加图片”点击逻辑(例如打开相册)
|
||||
startChoosePhoto(1, PictureConfig.REQUEST_CAMERA, false, 1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBackgroundClick(RoomBgBean.RoomBg item) {
|
||||
|
||||
queren1(item);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void queren1(RoomBgBean.RoomBg item) {
|
||||
// 创建并显示确认对话框
|
||||
new ConfirmDialog(getContext(),
|
||||
"温馨提示",
|
||||
"是否选择当前图片为背景图片",
|
||||
"确认",
|
||||
"取消",
|
||||
v -> {
|
||||
// 点击“确认”按钮时执行删除操作
|
||||
MvpPre.editRoom(roomId, "", "", "", item.getImage_url());
|
||||
|
||||
},
|
||||
v -> {
|
||||
// 点击“取消”按钮时什么都不做
|
||||
|
||||
},false,0).show();
|
||||
}
|
||||
|
||||
private void startChoosePhoto(int mimeType, int requestCode, boolean isVideo, int type) {
|
||||
PictureSelector.create(this)
|
||||
.openGallery(mimeType)
|
||||
.isGif(isVideo)
|
||||
.setImageEngine(GlideEngine.createGlideEngine())
|
||||
.setMaxSelectNum(type)
|
||||
.isPreviewImage(true)
|
||||
.isDisplayCamera(true)
|
||||
.setOutputCameraDir(Constants.FILE_PATH)
|
||||
.isOriginalSkipCompress(true)
|
||||
.forResult(requestCode); //结果回调onActivityResult code
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
|
||||
super.onActivityResult(requestCode, resultCode, data);
|
||||
if (resultCode == RESULT_OK && data != null) {
|
||||
switch (requestCode) {
|
||||
|
||||
case PictureConfig.REQUEST_CAMERA:
|
||||
List<LocalMedia> localMediaList = PictureSelector.obtainSelectorList(data);
|
||||
|
||||
List<LocalMedia> localMedia1 = PictureSelector.obtainSelectorList(data);
|
||||
if (localMedia1 != null && localMedia1.size() != 0) {
|
||||
LocalMedia imgMedia = localMedia1.get(0);
|
||||
String url;
|
||||
if (imgMedia.isCompressed()) {
|
||||
url = imgMedia.getCompressPath();
|
||||
} else {
|
||||
url = imgMedia.getRealPath();
|
||||
}
|
||||
MvpPre.uploadFile(new File(url), 1, 1, 1);
|
||||
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void upLoadSuccess(String url, int type, int index, int total) {
|
||||
MvpPre.uploadBgImage("", url);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void uploadBgImage() {
|
||||
MvpPre.getBackgroundList();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void editRoom() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initView() {
|
||||
mBinding.tvTitle.setOnClickListener(this::onViewClicked);
|
||||
mBinding.tvTitle2.setOnClickListener(this::onViewClicked);
|
||||
// 设置默认样式(可选)
|
||||
resetBackgroundTextStyles();
|
||||
}
|
||||
|
||||
private void setTextViewStyle(TextView tv, String colorHex, int textSizeSp) {
|
||||
tv.setTextColor(Color.parseColor(colorHex));
|
||||
tv.setTextSize(textSizeSp);
|
||||
}
|
||||
|
||||
private void resetBackgroundTextStyles() {
|
||||
setTextViewStyle(mBinding.tvTitle, "#333333", 16);
|
||||
setTextViewStyle(mBinding.tvTitle2, "#999999", 12);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void initArgs(Bundle arguments) {
|
||||
super.initArgs(arguments);
|
||||
roomId = arguments.getString("roomId");
|
||||
picture = arguments.getString("picture");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStart() {
|
||||
super.onStart();
|
||||
Window window = getDialog().getWindow();
|
||||
if (window != null) {
|
||||
// 设置固定高度为 500dp
|
||||
int screenHeight = getResources().getDisplayMetrics().heightPixels;
|
||||
int heightInDp = (int) (screenHeight * 0.6f);
|
||||
;
|
||||
// int heightInPx = (int) (heightInDp * getResources().getDisplayMetrics().density);
|
||||
window.setLayout(WindowManager.LayoutParams.MATCH_PARENT, heightInDp);
|
||||
|
||||
// 可选:设置动画样式(从底部弹出)
|
||||
window.setWindowAnimations(com.qxcm.moduleutil.R.style.CommonShowDialogBottom);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initDialogStyle(Window window) {
|
||||
super.initDialogStyle(window);
|
||||
window.setGravity(Gravity.BOTTOM);
|
||||
// window.setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT);
|
||||
setCancelable(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getLayoutId() {
|
||||
return R.layout.room_fragement_dialog_room_background;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected RoomBackgroundPresenter bindPresenter() {
|
||||
return new RoomBackgroundPresenter(this, getActivity());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAttach(Context context) {
|
||||
super.onAttach(context);
|
||||
pictureChanged = false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDetach() {
|
||||
if (!pictureChanged) {
|
||||
EventBus.getDefault().post(new RoomBgBean());
|
||||
}
|
||||
super.onDetach();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
MvpPre.getBackgroundList();
|
||||
}
|
||||
|
||||
|
||||
public void onViewClicked(View view) {
|
||||
if (view.getId() == R.id.tv_title2) {
|
||||
// 点击“我的背景”
|
||||
setTextViewStyle(mBinding.tvTitle2, "#333333", 16);
|
||||
setTextViewStyle(mBinding.tvTitle, "#999999", 12);
|
||||
List<RoomBgBean.RoomBg> listWithAddBtn = new ArrayList<>();
|
||||
RoomBgBean.RoomBg addBg = new RoomBgBean.RoomBg();
|
||||
addBg.setAddButton(true);
|
||||
addBg.setImage_url(null); // 可选:设为空图 URL
|
||||
|
||||
// 插入到顶部
|
||||
listWithAddBtn.add(addBg);
|
||||
listWithAddBtn.addAll(myBgList);
|
||||
mAdapter.setNewData(listWithAddBtn);
|
||||
} else if (view.getId() == R.id.tv_title) {
|
||||
// 点击“公共背景”
|
||||
setTextViewStyle(mBinding.tvTitle, "#333333", 16); // 当前项大字体、深色
|
||||
setTextViewStyle(mBinding.tvTitle2, "#999999", 12);
|
||||
mAdapter.setNewData(publicBgList);
|
||||
}
|
||||
|
||||
// MvpPre.setBg(roomId, mAdapter.getCheckedPicture());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void showLoadings(String content) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void getBackgroundList(RoomBgBean list) {
|
||||
publicBgList = list.getPublic_bg();
|
||||
myBgList = list.getPrivate_bg();
|
||||
|
||||
// 如果当前正在显示“我的背景”,则刷新 RecyclerView
|
||||
if (mBinding.tvTitle2.getCurrentTextColor() == Color.parseColor("#333333")) {
|
||||
List<RoomBgBean.RoomBg> listWithAddBtn = new ArrayList<>();
|
||||
RoomBgBean.RoomBg addBg = new RoomBgBean.RoomBg();
|
||||
addBg.setAddButton(true);
|
||||
listWithAddBtn.add(addBg);
|
||||
listWithAddBtn.addAll(myBgList);
|
||||
mAdapter.setNewData(listWithAddBtn); // 更新 adapter 数据并刷新
|
||||
}
|
||||
}
|
||||
|
||||
private static class MyAdapter extends BaseQuickAdapter<RoomBgBean.RoomBg, BaseViewHolder> {
|
||||
public interface OnItemClickListener {
|
||||
void onAddImageClick(); // 点击“添加图片”按钮时触发
|
||||
void onBackgroundClick(RoomBgBean.RoomBg item); // 点击普通背景项时触发
|
||||
}
|
||||
private OnItemClickListener onItemClickListener;
|
||||
|
||||
public void setOnItemClickListener(OnItemClickListener listener) {
|
||||
this.onItemClickListener = listener;
|
||||
}
|
||||
MyAdapter() {
|
||||
super(R.layout.room_rv_item_room_bg);
|
||||
}
|
||||
|
||||
private String checkedPicture;
|
||||
|
||||
public void setCheckedPicture(String checkedPicture) {
|
||||
this.checkedPicture = checkedPicture;
|
||||
}
|
||||
|
||||
String getCheckedPicture() {
|
||||
return checkedPicture;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected void convert(BaseViewHolder helper, RoomBgBean.RoomBg item) {
|
||||
if (item.isAddButton()) {
|
||||
// “添加图片”按钮样式
|
||||
helper.setImageResource(R.id.iv_bg, com.qxcm.moduleutil.R.mipmap.add_img); // 添加图片图标
|
||||
helper.itemView.setOnClickListener(v -> {
|
||||
if (onItemClickListener != null) {
|
||||
onItemClickListener.onAddImageClick();
|
||||
}
|
||||
});
|
||||
} else {
|
||||
// 普通图片项
|
||||
ImageUtils.loadHeadCC(item.getImage_url(), helper.getView(R.id.iv_bg));
|
||||
helper.itemView.setOnClickListener(v -> {
|
||||
if (onItemClickListener != null) {
|
||||
onItemClickListener.onBackgroundClick(item);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// // 设置点击事件
|
||||
// helper.itemView.setOnClickListener(v -> {
|
||||
// if (item.isAddButton()) {
|
||||
// // 跳转选择图片(比如打开系统相册)
|
||||
// chooseImage();
|
||||
// } else {
|
||||
// // 选择某张图片作为背景
|
||||
// checkedPicture = item.getImage_url();
|
||||
// EventBus.getDefault().post(new RoomBgBean());
|
||||
// notifyDataSetChanged();
|
||||
// }
|
||||
// });
|
||||
}
|
||||
}
|
||||
|
||||
public void closeDialog(View view) {
|
||||
dismiss();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,414 @@
|
||||
package com.example.moduleroom.fragment;
|
||||
|
||||
|
||||
import static com.blankj.utilcode.util.ServiceUtils.startService;
|
||||
|
||||
import android.Manifest;
|
||||
import android.annotation.SuppressLint;
|
||||
import android.content.Intent;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.os.CountDownTimer;
|
||||
import android.view.View;
|
||||
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
|
||||
import com.alibaba.android.arouter.facade.annotation.Autowired;
|
||||
import com.alibaba.android.arouter.launcher.ARouter;
|
||||
import com.blankj.utilcode.util.ObjectUtils;
|
||||
import com.chad.library.adapter.base.BaseQuickAdapter;
|
||||
import com.chad.library.adapter.base.BaseViewHolder;
|
||||
import com.example.moduleroom.R;
|
||||
import com.example.moduleroom.activity.RoomActivity;
|
||||
import com.example.moduleroom.contacts.RoomCabinContacts;
|
||||
import com.example.moduleroom.databinding.RoomCabinFragmentBinding;
|
||||
import com.example.moduleroom.dialog.ExitRoomBottomSheet;
|
||||
import com.example.moduleroom.dialog.RoomGiftDialogFragment;
|
||||
import com.example.moduleroom.presenter.RoomCabinPresenter;
|
||||
import com.orhanobut.logger.Logger;
|
||||
import com.qxcm.moduleutil.base.BaseRoomFragment;
|
||||
import com.qxcm.moduleutil.base.CommonAppContext;
|
||||
import com.qxcm.moduleutil.bean.RoomMessageEvent;
|
||||
import com.qxcm.moduleutil.bean.UserInfo;
|
||||
import com.qxcm.moduleutil.bean.room.RoomCpUserBean;
|
||||
import com.qxcm.moduleutil.bean.room.RoomInfoResp;
|
||||
import com.qxcm.moduleutil.bean.room.RoomPitBean;
|
||||
import com.qxcm.moduleutil.event.RoomBeckoningEvent;
|
||||
import com.qxcm.moduleutil.http.FloatingWindowService;
|
||||
import com.qxcm.moduleutil.rtc.AgoraManager;
|
||||
import com.qxcm.moduleutil.utils.ImageUtils;
|
||||
import com.qxcm.moduleutil.utils.SpUtil;
|
||||
import com.qxcm.moduleutil.widget.dialog.CommonDialog;
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
import org.greenrobot.eventbus.Subscribe;
|
||||
import org.greenrobot.eventbus.ThreadMode;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
*@author qx
|
||||
*@data 2025/7/1
|
||||
*@description: 电影房
|
||||
*/
|
||||
public class RoomCabinFragment extends BaseRoomFragment<RoomCabinPresenter, RoomCabinFragmentBinding> implements RoomCabinContacts.View {
|
||||
protected String roomId;
|
||||
protected String pitNumber;//当前点击的麦序
|
||||
protected CommonDialog commonDialog;
|
||||
CountDownTimer mCountDownTimer;
|
||||
private RoomInfoResp roomInfoResp;
|
||||
private int remainingTime;
|
||||
private boolean isShow = false;
|
||||
private RoomCpUserBean cpUserBean;
|
||||
|
||||
public static RoomCabinFragment newInstance(RoomInfoResp roomInfoResp) {
|
||||
Bundle args = new Bundle();
|
||||
args.putSerializable("roomInfoResp", (Serializable) roomInfoResp);
|
||||
RoomCabinFragment fragment = new RoomCabinFragment();
|
||||
fragment.setArguments(args);
|
||||
return fragment;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initArgs(Bundle arguments) {
|
||||
super.initArgs(arguments);
|
||||
roomInfoResp = (RoomInfoResp) arguments.getSerializable("roomInfoResp");
|
||||
if (roomInfoResp.getCp_user() != null) {
|
||||
cpUserBean = roomInfoResp.getCp_user();
|
||||
}
|
||||
if (getActivity() instanceof RoomActivity) {
|
||||
((RoomActivity) getActivity()).changeBackground(com.qxcm.moduleutil.R.mipmap.cabin_bj);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected RoomCabinPresenter bindPresenter() {
|
||||
return new RoomCabinPresenter(this, getActivity());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initData() {
|
||||
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 (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("0");
|
||||
|
||||
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("0");
|
||||
|
||||
|
||||
} 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("0");
|
||||
|
||||
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("0");
|
||||
|
||||
}
|
||||
|
||||
// 不论谁是自己,始终将自己放在 roomMakeWheat1
|
||||
mBinding.roomMakeWheat1.setData(selfBean);
|
||||
|
||||
// 将另一个用户的数据放在 roomMakeWheat2
|
||||
mBinding.roomMakeWheat2.setData(otherBean);
|
||||
|
||||
|
||||
// ImageUtils.loadHeadCC(cpUserBean.getAvatar(), mBinding.rivRoom);
|
||||
// ImageUtils.loadHeadCC(cpUserBean.getAvatar1(), mBinding.rivRoom2);
|
||||
// mBinding.userName.setText(cpUserBean.getNickname());
|
||||
// mBinding.userName2.setText(cpUserBean.getNickname1());
|
||||
mBinding.tvMainTitle.setText(roomInfoResp.getRoom_info().getRoom_name());
|
||||
mBinding.tvHeartValue2.setText(roomInfoResp.getRoom_info().getHot_value());
|
||||
countDownTime(Long.parseLong(cpUserBean.getTime_day()));
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
protected void initView() {
|
||||
super.initView();
|
||||
|
||||
|
||||
mBinding.im1.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
if (!isShow) {
|
||||
switchMic(2);
|
||||
} else {
|
||||
switchMic(1);
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
mBinding.im2.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
RoomPitBean roomPitBean = mBinding.roomMakeWheat2.pitBean;
|
||||
UserInfo userInfo = new UserInfo();
|
||||
userInfo.setUser_id(Integer.parseInt(roomPitBean.getUser_id()));
|
||||
userInfo.setNickname(roomPitBean.getNickname());
|
||||
userInfo.setAvatar(roomPitBean.getAvatar());
|
||||
userInfo.setPit_number("");
|
||||
RoomGiftDialogFragment.show(null, userInfo, roomInfoResp.getRoom_info().getRoom_id(), getParentFragmentManager());
|
||||
|
||||
}
|
||||
});
|
||||
// RtcManager.getInstance().applyWheat(String.format("%s_%s", roomId, SpUtils.getUserId()));
|
||||
// mBinding.im1.setImageResource(R.mipmap.close_m);
|
||||
// RtcManager.getInstance().muteLocalAudioStream(false);
|
||||
// RtcManager.getInstance().startPublishingStream();
|
||||
isShow=false;
|
||||
switchMic(1);
|
||||
}
|
||||
|
||||
public void switchMic(int type) {
|
||||
|
||||
if (type == 1) {
|
||||
mBinding.im1.setImageResource(com.qxcm.moduleutil.R.mipmap.close_m);
|
||||
AgoraManager.getInstance( getActivity()).ClientRole( true);
|
||||
AgoraManager.getInstance(getActivity()).muteLocalAudioStream(false);
|
||||
AgoraManager.getInstance(getActivity()).setLocalAudioEnabled(true);
|
||||
|
||||
isShow=false;
|
||||
} else {
|
||||
mBinding.im1.setImageResource(com.qxcm.moduleutil.R.mipmap.op_m);
|
||||
AgoraManager.getInstance( getActivity()).ClientRole( false);
|
||||
AgoraManager.getInstance(getActivity()).muteLocalAudioStream(true);
|
||||
AgoraManager.getInstance(getActivity()).setLocalAudioEnabled(false);
|
||||
isShow=true;
|
||||
|
||||
}
|
||||
}
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
public void roomInfoEvent(RoomMessageEvent messageEvent) {
|
||||
if (messageEvent.getMsgType()==1028){
|
||||
mBinding.tvHeartValue2.setText(messageEvent.getText().getHot_value());
|
||||
}
|
||||
}
|
||||
private void onHeartLineClicked(View view) {
|
||||
if (view.getId() == R.id.iv_exit) {
|
||||
// EventBus.getDefault().post(new RoomOutEvent());
|
||||
// ARouter.getInstance().build(ARouteConstants.LIVE_ROOM).withString("form","首页热门列表").withString("roomId", item.getRoom_id()).navigation();
|
||||
ExitRoomBottomSheet bottomSheet = ExitRoomBottomSheet.newInstance();
|
||||
bottomSheet.setOnOptionSelectedListener(new ExitRoomBottomSheet.OnOptionSelectedListener() {
|
||||
@Override
|
||||
public void onMinimize() {
|
||||
// 处理最小化逻辑,比如不销毁 Activity,仅移至后台
|
||||
// CommonAppContext.getInstance().isShow = false;
|
||||
// ARouter.getInstance().build(ARouteConstants.ME).navigation();//栈顶复用
|
||||
if (getActivity() instanceof RoomActivity) {
|
||||
//// ((RoomActivity) getActivity()).changeBackground(com.qxcm.moduleutil.R.mipmap.cabin_bj);
|
||||
((RoomActivity) getActivity()).moveTaskToBack(true);
|
||||
// ((RoomActivity) getActivity()).setvisibTop( false);
|
||||
}
|
||||
|
||||
// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||
// requireActivity().startForegroundService(new Intent(requireActivity(), FloatingWindowService.class));
|
||||
// } else {
|
||||
// requireActivity().startService(new Intent(requireActivity(), FloatingWindowService.class));
|
||||
// }
|
||||
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onExitRoom() {
|
||||
// 调用退出房间方法
|
||||
MvpPre.quitRoom(roomInfoResp.getRoom_info().getRoom_id(), SpUtil.getUserId() + "");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCancel() {
|
||||
// 用户点击取消,不做任何事
|
||||
}
|
||||
});
|
||||
bottomSheet.show(getChildFragmentManager(), "ExitRoomBottomSheet");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// TODO: 2025/3/12 倒计时
|
||||
public void countDownTime(long time) {
|
||||
try {
|
||||
if (time <= 0) {
|
||||
setTime(0);
|
||||
releaseCountDownTimer();
|
||||
return;
|
||||
}
|
||||
releaseCountDownTimer();
|
||||
// 获取当前时间的毫秒值
|
||||
long currentTime = System.currentTimeMillis() / 1000L;
|
||||
// 计算倒计时的总秒数
|
||||
long countDownTime = (time - currentTime);
|
||||
Logger.d("小黑屋", "countDownTime = " + countDownTime);
|
||||
if (countDownTime <= 0) {
|
||||
setTime(0);
|
||||
releaseCountDownTimer();
|
||||
return;
|
||||
}
|
||||
mCountDownTimer = new CountDownTimer(countDownTime * 1000L, 1000L) {
|
||||
@Override
|
||||
public void onTick(long millisUntilFinished) {
|
||||
int time1 = (int) (millisUntilFinished / 1000);
|
||||
// pitBean.setCount_down(time1);
|
||||
setTime(time1);
|
||||
remainingTime = time1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFinish() {
|
||||
setTime(0);
|
||||
remainingTime = 0;
|
||||
}
|
||||
};
|
||||
mCountDownTimer.start();
|
||||
} catch (Exception e) {
|
||||
Logger.e("countDownTime", e);
|
||||
}
|
||||
}
|
||||
|
||||
private String formatTime(int totalSeconds) {
|
||||
int days = totalSeconds / (24 * 3600);
|
||||
int remaining = totalSeconds % (24 * 3600);
|
||||
|
||||
int hours = remaining / 3600;
|
||||
remaining %= 3600;
|
||||
|
||||
int minutes = remaining / 60;
|
||||
int seconds = remaining % 60;
|
||||
|
||||
StringBuilder sb = new StringBuilder();
|
||||
|
||||
if (days > 0) {
|
||||
sb.append(days).append("天");
|
||||
}
|
||||
|
||||
if (hours > 0 || days > 0) {
|
||||
sb.append(hours).append("小时");
|
||||
}
|
||||
|
||||
if (minutes > 0 || hours > 0 || days > 0) {
|
||||
sb.append(minutes).append("分");
|
||||
}
|
||||
|
||||
sb.append(seconds).append("秒");
|
||||
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
|
||||
@SuppressLint("DefaultLocale")
|
||||
public void setTime(int time) {
|
||||
if (time == 0) {
|
||||
mBinding.datingTime.setText("00:00:00");
|
||||
}
|
||||
String formattedTime = formatTime(time);
|
||||
mBinding.datingTime.setText("到期时间:"+formattedTime);
|
||||
mBinding.datingTime.setVisibility(View.VISIBLE);
|
||||
}
|
||||
|
||||
private void releaseCountDownTimer() {
|
||||
if (mCountDownTimer != null) {
|
||||
mCountDownTimer.cancel();
|
||||
mCountDownTimer = null;
|
||||
}
|
||||
}
|
||||
|
||||
protected void updateWheatData() {
|
||||
if (!ObjectUtils.isEmpty(roomInfoResp.getRoom_info().getPit_list())) {
|
||||
for (RoomPitBean bean : roomInfoResp.getRoom_info().getPit_list()) {
|
||||
EventBus.getDefault().post(bean);
|
||||
}
|
||||
}
|
||||
RoomBeckoningEvent event = new RoomBeckoningEvent(roomId, roomInfoResp.getRoom_info().getCardiac() == 1);
|
||||
EventBus.getDefault().post(event);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected int getLayoutId() {
|
||||
return R.layout.room_cabin_fragment;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void roomInfoUpdate(RoomInfoResp resp) {
|
||||
roomInfoResp = resp;
|
||||
// updateWheatData();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerWheatViews() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void unRegisterWheatViews() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initListener() {
|
||||
super.initListener();
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public void hideAllWheatMaozi() {
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void showWheatMaoziHuangguan(int wheat) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void showWheatMaoziBianbian(int... wheats) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public int[] collectCurrentCardiacValues() {
|
||||
int[] cvs = new int[8];
|
||||
return cvs;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void quitRoom() {
|
||||
if (getActivity() instanceof RoomActivity) {
|
||||
((RoomActivity) getActivity()).quitRoom();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,149 @@
|
||||
package com.example.moduleroom.fragment;
|
||||
|
||||
import android.os.Bundle;
|
||||
|
||||
import androidx.fragment.app.Fragment;
|
||||
|
||||
import android.view.Gravity;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.Window;
|
||||
import android.view.WindowManager;
|
||||
|
||||
import com.blankj.utilcode.util.FragmentUtils;
|
||||
import com.example.moduleroom.R;
|
||||
import com.example.moduleroom.databinding.FragmentRoomChartsBinding;
|
||||
import com.example.moduletablayout.listener.CustomTabEntity;
|
||||
import com.example.moduletablayout.listener.OnTabSelectListener;
|
||||
import com.qxcm.moduleutil.activity.IPresenter;
|
||||
import com.qxcm.moduleutil.adapter.MyFragmentPagerAdapter;
|
||||
import com.qxcm.moduleutil.base.BaseMvpDialogFragment;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
*@author qx
|
||||
*@data 2025/6/10
|
||||
*@description: 房间排行榜
|
||||
*/
|
||||
public class RoomChartsFragment extends BaseMvpDialogFragment<IPresenter, FragmentRoomChartsBinding> {
|
||||
private String mRoomId;
|
||||
public static final int TYPE_CHARM = 1;//魅力榜
|
||||
public static final int TYPE_WEALTH = 2;//财富榜
|
||||
private int type = TYPE_CHARM;
|
||||
private int childType = RankingChildFragment.TYPE_DATA;
|
||||
|
||||
public static RoomChartsFragment newInstance(String roomId) {
|
||||
RoomChartsFragment roomRankingFragment = new RoomChartsFragment();
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putString("roomId", roomId);
|
||||
roomRankingFragment.setArguments(bundle);
|
||||
return roomRankingFragment;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected IPresenter bindPresenter() {
|
||||
return null;
|
||||
}
|
||||
@Override
|
||||
protected void initDialogStyle(Window window) {
|
||||
super.initDialogStyle(window);
|
||||
window.setGravity(Gravity.BOTTOM);
|
||||
WindowManager.LayoutParams lp = window.getAttributes();
|
||||
lp.dimAmount = 0.4f;
|
||||
int screenHeight = getResources().getDisplayMetrics().heightPixels;
|
||||
lp.height = (int) (screenHeight * 0.8f); // 80% 高度
|
||||
lp.width = WindowManager.LayoutParams.MATCH_PARENT; // 宽度撑满
|
||||
window.setAttributes(lp);
|
||||
window.addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initData() {
|
||||
mRoomId = getArguments().getString("roomId");
|
||||
// FragmentUtils.add(getChildFragmentManager(), RankingChildFragment.newInstance(mRoomId, childType, type), R.id.fl_content);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initView() {
|
||||
mBinding.slidingTabLayout.setOnTabSelectListener(new OnTabSelectListener() {
|
||||
@Override
|
||||
public void onTabSelect(int position) {
|
||||
childType = ++position;
|
||||
refresh();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTabReselect(int position) {
|
||||
|
||||
}
|
||||
});
|
||||
// ArrayList<CustomTabEntity> tabItems = new ArrayList<>();
|
||||
// tabItems.add(new TabItem("小时榜"));
|
||||
// tabItems.add(new TabItem("日榜"));
|
||||
// tabItems.add(new TabItem("周榜"));
|
||||
String[] title = new String[]{"小时榜", "日榜", "周榜"};
|
||||
// mBinding.slidingTabLayout.setViewPager(mBinding.vpRankChild, title);
|
||||
|
||||
List<Fragment> fragments = new ArrayList<>();
|
||||
fragments.add(RankingChildFragment.newInstance(mRoomId, childType, type));
|
||||
fragments.add(RankingChildFragment.newInstance(mRoomId, childType, type));
|
||||
fragments.add(RankingChildFragment.newInstance(mRoomId, childType, type));
|
||||
MyFragmentPagerAdapter myFragmentPagerAdapter = new MyFragmentPagerAdapter(fragments, getChildFragmentManager());
|
||||
mBinding.vpRankChild.setAdapter(myFragmentPagerAdapter);
|
||||
mBinding.slidingTabLayout.setViewPager(mBinding.vpRankChild, title);
|
||||
|
||||
mBinding.tvCharm.setOnClickListener(this::onViewClicked);
|
||||
mBinding.tvWealth.setOnClickListener(this::onViewClicked);
|
||||
}
|
||||
private void refresh() {
|
||||
// FragmentUtils.replace(getChildFragmentManager(), RankingChildFragment.newInstance(mRoomId, childType, type), R.id.fl_content);
|
||||
}
|
||||
|
||||
public static class TabItem implements CustomTabEntity {
|
||||
private String title;
|
||||
|
||||
public TabItem(String title) {
|
||||
this.title = title;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTabTitle() {
|
||||
return title;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getTabSelectedIcon() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getTabUnselectedIcon() {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
public void onViewClicked(View view) {
|
||||
int id = view.getId();
|
||||
if (id == R.id.tv_charm) {
|
||||
type = TYPE_CHARM;//工会
|
||||
mBinding.tvCharm.setTextColor(getResources().getColor(com.qxcm.moduleutil.R.color.white));
|
||||
mBinding.tvWealth.setTextColor(getResources().getColor(com.qxcm.moduleutil.R.color.color_DADADA));
|
||||
mBinding.tvCharm.setTextSize(18);
|
||||
mBinding.tvWealth.setTextSize(16);
|
||||
} else {
|
||||
type = TYPE_WEALTH;//财富
|
||||
mBinding.tvWealth.setTextColor(getResources().getColor(com.qxcm.moduleutil.R.color.white));
|
||||
mBinding.tvCharm.setTextColor(getResources().getColor(com.qxcm.moduleutil.R.color.color_DADADA));
|
||||
mBinding.tvWealth.setTextSize(18);
|
||||
mBinding.tvCharm.setTextSize(16);
|
||||
}
|
||||
refresh();
|
||||
}
|
||||
@Override
|
||||
protected int getLayoutId() {
|
||||
return R.layout.fragment_room_charts;
|
||||
}
|
||||
}
|
||||
@@ -3,72 +3,542 @@ package com.example.moduleroom.fragment;
|
||||
import android.Manifest;
|
||||
import android.os.Bundle;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.fragment.app.FragmentTransaction;
|
||||
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.RelativeLayout;
|
||||
|
||||
import com.blankj.utilcode.util.FragmentUtils;
|
||||
import com.blankj.utilcode.util.LogUtils;
|
||||
import com.example.moduleroom.R;
|
||||
import com.example.moduleroom.activity.RoomActivity;
|
||||
import com.example.moduleroom.contacts.RoomContacts;
|
||||
import com.example.moduleroom.databinding.FragmentRoomBinding;
|
||||
import com.example.moduleroom.dialog.RequestDialogFragment;
|
||||
import com.example.moduleroom.dialog.RoomGiftDialogFragment;
|
||||
import com.example.moduleroom.dialog.RoomPkDialogFragment;
|
||||
import com.example.moduleroom.dialog.RoomSettingFragment;
|
||||
import com.example.moduleroom.dialog.SoundEffectsDialogFragment;
|
||||
import com.example.moduleroom.dialog.WheatFeedingDialogFragment;
|
||||
import com.example.moduleroom.presenter.RoomPresenter;
|
||||
import com.qxcm.moduleutil.activity.IPresenter;
|
||||
import com.hjq.toast.ToastUtils;
|
||||
import com.qxcm.moduleutil.base.BaseMvpFragment;
|
||||
import com.qxcm.moduleutil.bean.RoomCharmRankBean;
|
||||
import com.qxcm.moduleutil.bean.RoomMessageEvent;
|
||||
import com.qxcm.moduleutil.bean.UserInfo;
|
||||
import com.qxcm.moduleutil.bean.room.RoomBean;
|
||||
import com.qxcm.moduleutil.bean.room.RoomInfoResp;
|
||||
import com.qxcm.moduleutil.bean.room.RoomOnline;
|
||||
import com.qxcm.moduleutil.bean.room.RoomPitBean;
|
||||
import com.qxcm.moduleutil.dialog.ConfirmDialog;
|
||||
import com.qxcm.moduleutil.event.RoomWheatEvent;
|
||||
import com.qxcm.moduleutil.rtc.AgoraManager;
|
||||
import com.qxcm.moduleutil.utils.SpUtil;
|
||||
|
||||
import pub.devrel.easypermissions.EasyPermissions;
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
import org.greenrobot.eventbus.Subscribe;
|
||||
import org.greenrobot.eventbus.ThreadMode;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
*@author qx
|
||||
*@data 2025/6/9
|
||||
*@description:
|
||||
* @author qx
|
||||
* @data 2025/6/9
|
||||
* @description:房间fragment
|
||||
*/
|
||||
public class RoomFragment extends BaseMvpFragment<RoomPresenter, FragmentRoomBinding> implements RoomContacts.View {
|
||||
|
||||
// public static RoomFragment newInstance(RoomInfoResp roomInfo, String password) {
|
||||
// Bundle args = new Bundle();
|
||||
// args.putSerializable("roomInfo", roomInfo);
|
||||
// args.putString("password", password);
|
||||
// RoomFragment fragment = new RoomFragment();
|
||||
// fragment.setArguments(args);
|
||||
// return fragment;
|
||||
// }
|
||||
private RoomInfoResp mRoomInfoResp;
|
||||
String[] permissions = {Manifest.permission.RECORD_AUDIO};
|
||||
public static RoomFragment newInstance() {
|
||||
|
||||
public static RoomFragment newInstance(RoomInfoResp roomInfo, String password) {
|
||||
Bundle args = new Bundle();
|
||||
args.putSerializable("roomInfo", roomInfo);
|
||||
args.putString("password", password);
|
||||
RoomFragment fragment = new RoomFragment();
|
||||
fragment.setArguments(args);
|
||||
return fragment;
|
||||
}
|
||||
|
||||
private RoomInfoResp mRoomInfoResp;
|
||||
private String password;
|
||||
private String roomId;
|
||||
private int role;
|
||||
private boolean isSwith;
|
||||
|
||||
private boolean aBoolean = true;//上下麦按钮
|
||||
private boolean voive = false;//声音开关
|
||||
String[] permissions = {Manifest.permission.RECORD_AUDIO};
|
||||
private WheatFeedingDialogFragment wheatFeedingDialogFragment;
|
||||
|
||||
@Override
|
||||
public void initArgs(Bundle arguments) {
|
||||
|
||||
mRoomInfoResp = new RoomInfoResp();
|
||||
mRoomInfoResp = (RoomInfoResp) arguments.getSerializable("roomInfo");
|
||||
password = arguments.getString("password");
|
||||
roomId = mRoomInfoResp.getRoom_info().getRoom_id();
|
||||
role = mRoomInfoResp.getRoom_info().getRole();
|
||||
roomInfo(mRoomInfoResp);
|
||||
super.initArgs(arguments);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected RoomPresenter bindPresenter() {
|
||||
return new RoomPresenter(this, getContext());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
super.onDestroy();
|
||||
if (EventBus.getDefault().isRegistered(this)) {
|
||||
EventBus.getDefault().unregister(this);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStart() {
|
||||
super.onStart();
|
||||
if (!EventBus.getDefault().isRegistered(this)) {
|
||||
EventBus.getDefault().register(this);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initData() {
|
||||
if (!EasyPermissions.hasPermissions(getActivity(), permissions)) {
|
||||
EasyPermissions.requestPermissions(this, "请开启录音使用权限",
|
||||
1, permissions);
|
||||
}
|
||||
RoomBean roomBean = mRoomInfoResp.getRoom_info();
|
||||
// if (!EasyPermissions.hasPermissions(getActivity(), permissions)) {
|
||||
// EasyPermissions.requestPermissions(this, "请开启录音使用权限",
|
||||
// 1, permissions);
|
||||
// }
|
||||
|
||||
// if (mRoomInfoResp.getRoom_info().getType_id().equals("1")) {
|
||||
// if (mRoomInfoResp.getRoom_info().getLabel_id().equals("1")) {
|
||||
// FragmentUtils.add(getChildFragmentManager(), SingSongFragment.newInstance(mRoomInfoResp), R.id.container);
|
||||
// } else if (mRoomInfoResp.getRoom_info().getLabel_id().equals("2")) {
|
||||
// FragmentUtils.add(getChildFragmentManager(), RoomKtvFragment.newInstance(mRoomInfoResp), R.id.container);
|
||||
// }
|
||||
// }
|
||||
|
||||
loadSubFragment();
|
||||
|
||||
}
|
||||
|
||||
// 定义一个可被外部调用的方法
|
||||
public void refreshData(RoomInfoResp resp) {
|
||||
// 使用传入的参数刷新界面或逻辑
|
||||
mRoomInfoResp = new RoomInfoResp();
|
||||
mRoomInfoResp = resp;
|
||||
loadSubFragment();
|
||||
}
|
||||
|
||||
private void loadSubFragment() {
|
||||
if (mRoomInfoResp == null || mRoomInfoResp.getRoom_info() == null) return;
|
||||
|
||||
if (mRoomInfoResp.getRoom_info().getType_id().equals("1")) {
|
||||
if (mRoomInfoResp.getRoom_info().getLabel_id().equals("1")) {
|
||||
replaceNestedFragment(SingSongFragment.newInstance(mRoomInfoResp), R.id.container);
|
||||
// replaceNestedFragment(RoomPkFragment.newInstance(mRoomInfoResp), R.id.container);
|
||||
} else if (mRoomInfoResp.getRoom_info().getLabel_id().equals("2")) {
|
||||
replaceNestedFragment(RoomKtvFragment.newInstance(mRoomInfoResp), R.id.container);
|
||||
}
|
||||
} else if (mRoomInfoResp.getRoom_info().getType_id().equals("2")) {
|
||||
if (mRoomInfoResp.getRoom_info().getLabel_id().equals("1")) {
|
||||
replaceNestedFragment(RoomAuctionFragment.newInstance(mRoomInfoResp, 1), R.id.container);
|
||||
} else if (mRoomInfoResp.getRoom_info().getLabel_id().equals("2")) {
|
||||
replaceNestedFragment(RoomAuctionFragment.newInstance(mRoomInfoResp, 2), R.id.container);
|
||||
}
|
||||
} else if (mRoomInfoResp.getRoom_info().getType_id().equals("6")) {
|
||||
replaceNestedFragment(RoomCabinFragment.newInstance(mRoomInfoResp), R.id.container);
|
||||
setviewyc();
|
||||
}
|
||||
// FragmentUtils.add(getChildFragmentManager(), PublicScreenEaseChatFragment.newInstance(mRoomInfoResp), R.id.ease_container);
|
||||
replaceNestedFragment(PublicScreenEaseChatFragment.newInstance(mRoomInfoResp), R.id.ease_container);
|
||||
// FragmentUtils.add(getChildFragmentManager(), PublicScreenEaseChatFragment.newInstance(mRoomInfoResp), R.id.ease_container);
|
||||
mBinding.inputMenu1.performClick();
|
||||
|
||||
instView();
|
||||
|
||||
if (mRoomInfoResp.getUser_info().getPit_number() != 0) {
|
||||
AgoraManager.getInstance(getActivity()).muteLocalAudioStream(false);
|
||||
} else {
|
||||
AgoraManager.getInstance(getActivity()).muteLocalAudioStream(true);
|
||||
}
|
||||
}
|
||||
|
||||
public void setviewyc() {
|
||||
mBinding.ivSoundEffects.setVisibility(View.GONE);
|
||||
mBinding.ivWheatFeeding.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
public void replaceNestedFragment(@NonNull Fragment newFragment, int containerId) {
|
||||
String tag = newFragment.getClass().getSimpleName(); // 使用类名作为 tag
|
||||
|
||||
FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
|
||||
|
||||
// 查找当前容器中的 Fragment(可选)
|
||||
Fragment currentFragment = getChildFragmentManager().findFragmentById(containerId);
|
||||
|
||||
if (currentFragment != null) {
|
||||
if (tag.equals(currentFragment.getClass().getSimpleName())) {
|
||||
return; // 跳过相同类型替换
|
||||
}
|
||||
transaction.remove(currentFragment); // 先移除旧 Fragment
|
||||
}
|
||||
|
||||
// 添加新 Fragment 并带上 tag
|
||||
transaction.add(containerId, newFragment, tag)
|
||||
.commitAllowingStateLoss();
|
||||
// transaction.add(containerId, newFragment, tag)
|
||||
// .addToBackStack(tag) // 可选:加入回退栈
|
||||
// .commitAllowingStateLoss();
|
||||
}
|
||||
|
||||
public void updateWheatStatus(RoomPitBean roomPitBean, int pit, boolean isOccupied, boolean isMine) {
|
||||
mRoomInfoResp.getRoom_info().getPit_list().set(pit - 1, roomPitBean);
|
||||
if (isOccupied && isMine) {//上麦,并且是自己
|
||||
mRoomInfoResp.getUser_info().setPit_number(pit);
|
||||
switchMic(2);
|
||||
} else if (!isOccupied && isMine) { //下麦,并且是自己
|
||||
mRoomInfoResp.getUser_info().setPit_number(0);
|
||||
}
|
||||
if (isMine) {
|
||||
instView();
|
||||
}
|
||||
|
||||
if (getActivity() instanceof RoomActivity) {
|
||||
((RoomActivity) getActivity()).upRoomInfo(mRoomInfoResp);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
public void roomInfoEvent(RoomBean messageEvent) {
|
||||
mRoomInfoResp.setRoom_info(messageEvent);
|
||||
|
||||
}
|
||||
|
||||
private void instView() {
|
||||
|
||||
if (mRoomInfoResp.getUser_info().getPit_number() != 0) {
|
||||
aBoolean = false;
|
||||
mBinding.ivWheatFeeding.setImageResource(com.qxcm.moduleutil.R.mipmap.room_wheat_feeding_up);
|
||||
} else {
|
||||
aBoolean = true;
|
||||
mBinding.ivWheatFeeding.setImageResource(com.qxcm.moduleutil.R.mipmap.room_wheat_feeding);
|
||||
}
|
||||
|
||||
setRoleType(mRoomInfoResp.getUser_info().getPit_number() == 9 ?
|
||||
(mRoomInfoResp.getUser_info().getIs_room_owner() != 0 ? 1 :
|
||||
mRoomInfoResp.getUser_info().getIs_host() != 0 ? 2 : 0)
|
||||
: 0, mRoomInfoResp.getUser_info().getPit_number());
|
||||
|
||||
// for (RoomPitBean roomPitBean : mRoomInfoResp.getRoom_info().getPit_list()){
|
||||
if (mRoomInfoResp.getUser_info().getPit_number() == 9) {
|
||||
mBinding.ivSoundEffects.setVisibility(View.VISIBLE);
|
||||
} else {
|
||||
mBinding.ivSoundEffects.setVisibility(View.GONE);
|
||||
}
|
||||
// }
|
||||
if (mRoomInfoResp.getUser_info().getUser_id().equals(SpUtil.getUserId() + "") && mRoomInfoResp.getUser_info().getPit_number() ==9
|
||||
&&mRoomInfoResp.getRoom_info().getType_id().equals("1") && mRoomInfoResp.getRoom_info().getLabel_id().equals("1")) {
|
||||
mBinding.rlMore.setVisibility(View.VISIBLE);
|
||||
}else {
|
||||
mBinding.rlMore.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
FragmentUtils.add(getChildFragmentManager(), SingSongFragment.newInstance(mRoomInfoResp), R.id.container);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initView() {
|
||||
mBinding.ivChat.setOnClickListener(this::onViewClicked);
|
||||
mBinding.llInput.setOnClickListener(this::onViewClicked);
|
||||
mBinding.rlMisc.setOnClickListener(this::onViewClicked);
|
||||
mBinding.rlGift.setOnClickListener(this::onViewClicked);
|
||||
mBinding.ivSoundEffects.setOnClickListener(this::onViewClicked);
|
||||
mBinding.ivWheatFeeding.setOnClickListener(this::onViewClicked);
|
||||
mBinding.rlMic.setOnClickListener(this::onViewClicked);
|
||||
mBinding.rlSett.setOnClickListener(this::onViewClicked);
|
||||
mBinding.rlVoive.setOnClickListener(this::onViewClicked);
|
||||
mBinding.rlMore.setOnClickListener(this::onViewClicked);
|
||||
|
||||
}
|
||||
|
||||
private void onViewClicked(View view) {
|
||||
int id = view.getId();
|
||||
if (id == R.id.iv_chat) {
|
||||
if (mRoomInfoResp.getUser_info().getIs_mute().equals("1")) {
|
||||
ToastUtils.show("您已经被禁言");
|
||||
} else {
|
||||
mBinding.llInput.setVisibility(View.VISIBLE);
|
||||
mBinding.inputMenu1.bringToFront(); // 强制将该 View 置于最上层
|
||||
mBinding.inputMenu1.show();
|
||||
}
|
||||
} else if (id == R.id.ll_input) {
|
||||
mBinding.llInput.setVisibility(View.GONE);
|
||||
mBinding.inputMenu1.dismiss();
|
||||
} else if (id == R.id.rl_misc) {//设置点歌
|
||||
if (mRoomInfoResp.getRoom_info().getLabel_id().equals("1")) {
|
||||
queren();
|
||||
} else {
|
||||
RequestDialogFragment.show(roomId, mRoomInfoResp, getChildFragmentManager());
|
||||
}
|
||||
} else if (id == R.id.rl_gift) {
|
||||
RoomGiftDialogFragment.show(mRoomInfoResp, null, roomId, getChildFragmentManager());
|
||||
} else if (id == R.id.iv_sound_effects) {
|
||||
SoundEffectsDialogFragment.show(roomId, getChildFragmentManager());
|
||||
} else if (id == R.id.iv_wheat_feeding) {
|
||||
if (mRoomInfoResp.getRoom_info().getRoom_up_pit_type().equals("1")) {
|
||||
// WheatFeedingDialogFragment.show(roomId, getChildFragmentManager());
|
||||
showWheatFeedingDialog(roomId, mRoomInfoResp.getUser_info().getPit_number() == 9 || mRoomInfoResp.getUser_info().getIs_room_owner() == 1 ? 1 : 2);
|
||||
} else {
|
||||
|
||||
if (aBoolean) {
|
||||
mBinding.ivWheatFeeding.setImageResource(com.qxcm.moduleutil.R.mipmap.room_wheat_feeding_up);
|
||||
MvpPre.applyPit(roomId, "");
|
||||
aBoolean = false;
|
||||
} else {
|
||||
mBinding.ivWheatFeeding.setImageResource(com.qxcm.moduleutil.R.mipmap.room_wheat_feeding);
|
||||
MvpPre.downPit(roomId, "");
|
||||
aBoolean = true;
|
||||
}
|
||||
}
|
||||
} else if (id == R.id.rl_mic) {
|
||||
if (mRoomInfoResp.getUser_info().getIs_mute_pit().equals("1")) {
|
||||
ToastUtils.show("您被禁麦了");
|
||||
} else {
|
||||
if (isSwith) {
|
||||
switchMic(1);
|
||||
} else {
|
||||
switchMic(2);
|
||||
}
|
||||
}
|
||||
} else if (id == R.id.rl_sett) {//房间设置
|
||||
RoomSettingFragment.show(mRoomInfoResp, getChildFragmentManager());
|
||||
} else if (id == R.id.rl_voive) {
|
||||
if (voive) {
|
||||
mBinding.imVoive.setImageResource(com.qxcm.moduleutil.R.mipmap.room_voice_g);
|
||||
voive = false;
|
||||
} else {
|
||||
mBinding.imVoive.setImageResource(com.qxcm.moduleutil.R.mipmap.room_voice_kg);
|
||||
voive = true;
|
||||
}
|
||||
AgoraManager.getInstance(getActivity()).muteSpeaker(!voive);
|
||||
}else if (id == R.id.rl_more){//点击PK
|
||||
RoomPkDialogFragment.newInstance(roomId,SpUtil.getUserId()+"",mRoomInfoResp.getRoom_info().getIs_pk()).show(getChildFragmentManager(),"RoomPkDialogFragment");
|
||||
}
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
public void roomInfoEvent(RoomWheatEvent messageEvent) {
|
||||
if (messageEvent.getRoomId().equals(roomId)) {
|
||||
if (messageEvent.isOccupied()) {
|
||||
mBinding.ivWheatFeeding.setImageResource(com.qxcm.moduleutil.R.mipmap.room_wheat_feeding_up);
|
||||
aBoolean = false;
|
||||
} else {
|
||||
mBinding.ivWheatFeeding.setImageResource(com.qxcm.moduleutil.R.mipmap.room_wheat_feeding);
|
||||
aBoolean = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void queren() {
|
||||
// 创建并显示确认对话框
|
||||
new ConfirmDialog(getActivity(),
|
||||
"提示",
|
||||
"您将要发起点歌申请?",
|
||||
"确认",
|
||||
"取消",
|
||||
v -> {
|
||||
// 点击“确认”按钮时执行删除操作
|
||||
MvpPre.applySong(roomId);
|
||||
},
|
||||
v -> {
|
||||
// 点击“取消”按钮时什么都不做
|
||||
},false,0).show();
|
||||
}
|
||||
|
||||
public void showWheatFeedingDialog(String roomId, int displayMode) {
|
||||
wheatFeedingDialogFragment = new WheatFeedingDialogFragment();
|
||||
Bundle args = new Bundle();
|
||||
args.putString("roomId", roomId);
|
||||
args.putInt("displayMode", displayMode);
|
||||
wheatFeedingDialogFragment.setArguments(args);
|
||||
wheatFeedingDialogFragment.show(getChildFragmentManager(), "WheatFeedingDialogFragment");
|
||||
}
|
||||
|
||||
public void updateWheatFeedingDisplayMode(int newDisplayMode) {
|
||||
if (wheatFeedingDialogFragment != null && wheatFeedingDialogFragment.isVisible()) {
|
||||
wheatFeedingDialogFragment.updateDisplayMode(newDisplayMode);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getLayoutId() {
|
||||
return R.layout.fragment_room;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void roomInfo(RoomInfoResp resp) {
|
||||
mRoomInfoResp = resp;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void showPasswordDialog() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void enterFail() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void getRoomOnline(RoomOnline onlineBean) {
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void applyPit() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void downPit() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void applySong() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void agreeSong() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void postRoomInfo(RoomInfoResp resp) {
|
||||
LogUtils.e("@@@@", resp);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void getCharmRank(List<RoomCharmRankBean> list) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void changeSong() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void hostUserPit() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void quitRoom() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void userGuanzSuccess(String s) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void acceptPk() {
|
||||
|
||||
}
|
||||
|
||||
public void setRoleType(int roleType, int pit_number) {
|
||||
RelativeLayout rl_voive = mBinding.rlVoive;
|
||||
RelativeLayout rl_mic = mBinding.rlMic;
|
||||
RelativeLayout rl_more = mBinding.rlMore;
|
||||
RelativeLayout rl_misc = mBinding.rlMisc;
|
||||
|
||||
|
||||
// 默认隐藏所有按钮
|
||||
rl_voive.setVisibility(View.GONE);//声音
|
||||
rl_more.setVisibility(View.GONE);//PK
|
||||
rl_misc.setVisibility(View.GONE); //音乐
|
||||
rl_mic.setVisibility(View.GONE); // 麦克风
|
||||
|
||||
|
||||
switch (roleType) {
|
||||
case 2: // 主持人
|
||||
rl_voive.setVisibility(View.VISIBLE);
|
||||
rl_mic.setVisibility(pit_number != 0 ? View.VISIBLE : View.GONE);
|
||||
rl_more.setVisibility(pit_number == 9 ? View.VISIBLE : View.GONE);
|
||||
rl_misc.setVisibility(View.VISIBLE);
|
||||
break;
|
||||
|
||||
case 1: // 房主
|
||||
rl_voive.setVisibility(View.VISIBLE);
|
||||
rl_mic.setVisibility(pit_number != 0 ? View.VISIBLE : View.GONE);
|
||||
rl_more.setVisibility(pit_number == 9 ? View.VISIBLE : View.GONE);
|
||||
rl_misc.setVisibility(View.VISIBLE);
|
||||
break;
|
||||
|
||||
case 0: // 观众
|
||||
rl_voive.setVisibility(View.VISIBLE);
|
||||
rl_mic.setVisibility(pit_number != 0 ? View.VISIBLE : View.GONE);
|
||||
rl_misc.setVisibility(View.VISIBLE);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置是否打开麦克风
|
||||
*
|
||||
* @param type
|
||||
*/
|
||||
// @Override
|
||||
public void switchMic(int type) {
|
||||
// mRoomInfoResp.getUser_info().setVoice(type);
|
||||
if (type == 1) {
|
||||
mBinding.ivMic.setImageResource(com.qxcm.moduleutil.R.mipmap.room_microphone);
|
||||
AgoraManager.getInstance(getContext()).setLocalAudioEnabled(true);
|
||||
isSwith = false;
|
||||
AgoraManager.getInstance(getActivity()).muteLocalAudioStream(false);
|
||||
// AgoraManager.getInstance(getActivity()).setLocalAudioEnabled( true);
|
||||
} else {
|
||||
mBinding.ivMic.setImageResource(com.qxcm.moduleutil.R.mipmap.room_microphone_off);
|
||||
AgoraManager.getInstance(getContext()).setLocalAudioEnabled(false);
|
||||
AgoraManager.getInstance(getActivity()).muteLocalAudioStream(false);
|
||||
isSwith = true;
|
||||
// AgoraManager.getInstance(getActivity()).muteLocalAudioStream(true);
|
||||
// AgoraManager.getInstance(getActivity()).setLocalAudioEnabled( false);
|
||||
}
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
public void roomInfoEvent(RoomMessageEvent messageEvent) {
|
||||
if (messageEvent.getMsgType() == 123) {
|
||||
// // 获取 PublicScreenEaseChatFragment 实例
|
||||
PublicScreenEaseChatFragment publicScreenEaseChatFragment = (PublicScreenEaseChatFragment) getChildFragmentManager()
|
||||
.findFragmentByTag("PublicScreenEaseChatFragment");
|
||||
|
||||
if (publicScreenEaseChatFragment != null) {
|
||||
// 调用 someMethod 方法
|
||||
publicScreenEaseChatFragment.someMethod();
|
||||
}
|
||||
} else if (messageEvent.getMsgType() == 1004) {
|
||||
// setRoleType(messageEvent.getRoleType(), messageEvent.getPit_number());
|
||||
}
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
public void roomInfoEvent(UserInfo messageEvent) {
|
||||
mBinding.llInput.setVisibility(View.VISIBLE);
|
||||
mBinding.inputMenu1.bringToFront(); // 强制将该 View 置于最上层
|
||||
mBinding.inputMenu1.show();
|
||||
mBinding.inputMenu1.setText("@" + messageEvent.getNickname());
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,609 @@
|
||||
package com.example.moduleroom.fragment;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
|
||||
import android.view.View;
|
||||
import android.view.animation.Animation;
|
||||
import android.view.animation.AnimationUtils;
|
||||
import android.view.animation.LinearInterpolator;
|
||||
|
||||
import com.blankj.utilcode.util.LogUtils;
|
||||
import com.blankj.utilcode.util.ToastUtils;
|
||||
import com.chad.library.adapter.base.BaseQuickAdapter;
|
||||
import com.chad.library.adapter.base.BaseViewHolder;
|
||||
import com.example.moduleroom.R;
|
||||
import com.example.moduleroom.activity.RoomActivity;
|
||||
import com.example.moduleroom.contacts.RoomContacts;
|
||||
import com.example.moduleroom.databinding.FragmentRoomKtvBinding;
|
||||
import com.example.moduleroom.dialog.RoomGiftDialogFragment;
|
||||
import com.example.moduleroom.dialog.RoomOnlineDialogFragment;
|
||||
import com.example.moduleroom.dialog.RoomUserInfoFragment;
|
||||
import com.example.moduleroom.presenter.RoomPresenter;
|
||||
import com.qxcm.moduleutil.base.BaseMvpFragment;
|
||||
import com.qxcm.moduleutil.bean.MusicSongBean;
|
||||
import com.qxcm.moduleutil.bean.RoomCharmRankBean;
|
||||
import com.qxcm.moduleutil.bean.RoomMessageEvent;
|
||||
import com.qxcm.moduleutil.bean.UserInfo;
|
||||
import com.qxcm.moduleutil.bean.room.RoomInfoResp;
|
||||
import com.qxcm.moduleutil.bean.room.RoomOnline;
|
||||
import com.qxcm.moduleutil.bean.room.RoomPitBean;
|
||||
import com.qxcm.moduleutil.rtc.AgoraManager;
|
||||
import com.qxcm.moduleutil.rtc.MusicFileBean;
|
||||
import com.qxcm.moduleutil.rtc.MusicPlayBean;
|
||||
import com.qxcm.moduleutil.utils.ImageUtils;
|
||||
import com.qxcm.moduleutil.utils.SpUtil;
|
||||
import com.qxcm.moduleutil.widget.RoomDefaultWheatView;
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
import org.greenrobot.eventbus.Subscribe;
|
||||
import org.greenrobot.eventbus.ThreadMode;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import io.agora.karaoke_view.v11.KaraokeEvent;
|
||||
import io.agora.karaoke_view.v11.KaraokeView;
|
||||
import io.agora.karaoke_view.v11.model.LyricsLineModel;
|
||||
import io.agora.karaoke_view.v11.model.LyricsModel;
|
||||
|
||||
/**
|
||||
* @author qx
|
||||
* @data 2025/6/18
|
||||
* @description:点唱模式
|
||||
*/
|
||||
public class RoomKtvFragment extends BaseMvpFragment<RoomPresenter, FragmentRoomKtvBinding> implements RoomContacts.View {
|
||||
private RoomInfoResp roomInfoResp;
|
||||
private KaraokeView mKaraokeView;
|
||||
private boolean isRotate = true;
|
||||
private String did;
|
||||
private String duration;
|
||||
private MusicSongBean musicSongBean;
|
||||
|
||||
BaseQuickAdapter<RoomCharmRankBean, BaseViewHolder> adapter;
|
||||
private RoomOnline online;
|
||||
|
||||
|
||||
public static RoomKtvFragment newInstance(RoomInfoResp roomInfoResp) {
|
||||
RoomKtvFragment fragment = new RoomKtvFragment();
|
||||
Bundle args = new Bundle();
|
||||
args.putSerializable("roomInfo", roomInfoResp);
|
||||
fragment.setArguments(args);
|
||||
return fragment;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAttach(@NonNull Context context) {
|
||||
super.onAttach(context);
|
||||
roomInfoResp = (RoomInfoResp) getArguments().getSerializable("roomInfo");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStart() {
|
||||
super.onStart();
|
||||
if (!EventBus.getDefault().isRegistered(this)) {
|
||||
EventBus.getDefault().register(this);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStop() {
|
||||
super.onStop();
|
||||
if (EventBus.getDefault().isRegistered(this)) {
|
||||
EventBus.getDefault().unregister(this);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected RoomPresenter bindPresenter() {
|
||||
return new RoomPresenter(this, getActivity());
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected void initData() {
|
||||
if (getActivity() instanceof RoomActivity) {
|
||||
((RoomActivity) getActivity()).setvisibTop(true);
|
||||
}
|
||||
MvpPre.getCharmRank(roomInfoResp.getRoom_info().getRoom_id());
|
||||
mKaraokeView = new KaraokeView(mBinding.lyricsView, null);
|
||||
mKaraokeView.setKaraokeEvent(new KaraokeEvent() {
|
||||
@Override
|
||||
public void onDragTo(KaraokeView view, long progress) {
|
||||
mKaraokeView.setProgress(progress);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRefPitchUpdate(float refPitch, int numberOfRefPitches) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLineFinished(KaraokeView view, LyricsLineModel line, int score, int cumulativeScore, int index, int numberOfLines) {
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
if (roomInfoResp.getSong_user_info() != null) {
|
||||
AgoraManager.getInstance(getActivity()).stopMuisc();
|
||||
if (roomInfoResp.getSong_user_info().getUser_id().equals(SpUtil.getUserId() + "")) {
|
||||
|
||||
did = roomInfoResp.getSong_user_info().getDid();
|
||||
AgoraManager.getInstance(getActivity()).isPreload(Long.parseLong(roomInfoResp.getSong_user_info().getSong_code()), 1);
|
||||
} else {
|
||||
|
||||
AgoraManager.getInstance(getActivity()).isPreload(Long.parseLong(roomInfoResp.getSong_user_info().getSong_code()), 2);
|
||||
}
|
||||
musicSongBean = roomInfoResp.getSong_user_info();
|
||||
duration = roomInfoResp.getSong_user_info().getDuration();
|
||||
mBinding.muName.setText(roomInfoResp.getSong_user_info().getSong_name());
|
||||
ImageUtils.loadHeadCC(roomInfoResp.getSong_user_info().getPoster(), mBinding.muBj);
|
||||
ImageUtils.loadHeadCC(roomInfoResp.getSong_user_info().getPoster(), mBinding.musicPoster);
|
||||
RoomDefaultWheatView roomDefaultWheatView = mBinding.muYc;
|
||||
RoomPitBean pitBean = new RoomPitBean();
|
||||
pitBean.setPit_number("-1");
|
||||
pitBean.setAvatar(roomInfoResp.getSong_user_info().getAvatar());
|
||||
pitBean.setNickname(roomInfoResp.getSong_user_info().getNickname());
|
||||
pitBean.setUser_id(roomInfoResp.getSong_user_info().getUser_id());
|
||||
pitBean.setCharm(roomInfoResp.getSong_user_info().getCharm());
|
||||
roomDefaultWheatView.setData(pitBean);
|
||||
} else {
|
||||
RoomDefaultWheatView roomDefaultWheatView = mBinding.muYc;
|
||||
RoomPitBean pitBean = new RoomPitBean();
|
||||
pitBean.setPit_number("-1");
|
||||
roomDefaultWheatView.setData(pitBean);
|
||||
}
|
||||
if (roomInfoResp.getNextInfo() != null) {
|
||||
mBinding.muXName.setText(roomInfoResp.getNextInfo().getSong_name());
|
||||
}
|
||||
|
||||
if (roomInfoResp.getRoom_info().getPit_list() != null && roomInfoResp.getRoom_info().getPit_list().size() > 0) {
|
||||
for (RoomPitBean roomPitBean : roomInfoResp.getRoom_info().getPit_list()) {
|
||||
if (roomPitBean.getPit_number().equals("9")) {
|
||||
RoomDefaultWheatView roomDefaultWheatView = mBinding.muZc;
|
||||
roomDefaultWheatView.setData(roomPitBean);
|
||||
} else if (roomPitBean.getPit_number().equals("10")) {
|
||||
RoomDefaultWheatView roomDefaultWheatView = mBinding.muJb;
|
||||
roomDefaultWheatView.setData(roomPitBean);
|
||||
}
|
||||
}
|
||||
}
|
||||
sv();
|
||||
|
||||
}
|
||||
|
||||
private void sv(){
|
||||
RoomDefaultWheatView roomDefaultWheatView = mBinding.muZc;
|
||||
if (roomInfoResp.getSong_user_info() != null) {
|
||||
if (roomInfoResp.getSong_user_info().getIs_hot()==1) {
|
||||
setVisibilityView(1);
|
||||
} else if (roomInfoResp.getSong_user_info().getUser_id().equals(SpUtil.getUserId() + "")) {
|
||||
setVisibilityView(2);
|
||||
} else if (roomInfoResp.getUser_info().getIs_host() == 1 && roomInfoResp.getUser_info().getPit_number() == 9) {
|
||||
setVisibilityView(1);
|
||||
} else {
|
||||
setVisibilityView(3);
|
||||
}
|
||||
}else {
|
||||
if (roomInfoResp.getUser_info().getIs_host() == 1 && roomInfoResp.getUser_info().getPit_number() == 9){
|
||||
setVisibilityView(1);
|
||||
}else {
|
||||
setVisibilityView(3);
|
||||
}
|
||||
}
|
||||
|
||||
if (roomDefaultWheatView!=null){
|
||||
if (roomDefaultWheatView.getUserId().equals(SpUtil.getUserId()+"")){
|
||||
setVisibilityView(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initView() {
|
||||
mBinding.lyricsView.setStartOfVerseIndicatorColor(getResources().getColor(com.qxcm.moduleutil.R.color.color_0DFFB9));
|
||||
// mBinding.lyricsView.setStartOfVerseIndicatorPaddingTop(20f);
|
||||
mBinding.lyricsView.setStartOfVerseIndicatorRadius(6f);
|
||||
mBinding.lyricsView.enableStartOfVerseIndicator(true);
|
||||
mBinding.lyricsView.setActiveLineUpcomingTextColor(getResources().getColor(com.qxcm.moduleutil.R.color.color_0DFFB9));
|
||||
mBinding.lyricsView.setCurrentLineHighlightedTextColor(getResources().getColor(com.qxcm.moduleutil.R.color.color_0DFFB9));
|
||||
mBinding.lyricsView.setCurrentLineTextColor(getResources().getColor(com.qxcm.moduleutil.R.color.color_0DFFB9));
|
||||
mBinding.recyclerView.setLayoutManager(new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false));
|
||||
mBinding.muName.setText("暂无歌曲");
|
||||
mBinding.muXName.setText("暂无歌曲");
|
||||
startRotateAnimation();
|
||||
mBinding.llBz.setOnClickListener(this::onClick);
|
||||
mBinding.llDs.setOnClickListener(this::onClick);
|
||||
mBinding.llJs.setOnClickListener(this::onClick);
|
||||
mBinding.llQg.setOnClickListener(this::onClick);
|
||||
mBinding.llSz.setOnClickListener(this::onClick);
|
||||
adapter = new BaseQuickAdapter<RoomCharmRankBean, BaseViewHolder>(R.layout.item_room_charm_rank) {
|
||||
@Override
|
||||
protected void convert(BaseViewHolder helper, RoomCharmRankBean item) {
|
||||
|
||||
RoomPitBean bean = new RoomPitBean();
|
||||
bean.setUser_id(item.getUser_id());
|
||||
bean.setRoom_id(roomInfoResp.getRoom_info().getRoom_id());
|
||||
bean.setNickname(item.getNickname());
|
||||
bean.setAvatar(item.getAvatar());
|
||||
bean.setDress(item.getDress());
|
||||
bean.setCharm(item.getCharm());
|
||||
bean.setPit_number("0");
|
||||
RoomDefaultWheatView mu_rank = helper.getView(R.id.mu_rank);
|
||||
mu_rank.setData(bean);
|
||||
mu_rank.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
RoomDefaultWheatView roomDefaultWheatView = (RoomDefaultWheatView) v;
|
||||
RoomUserInfoFragment.show(roomInfoResp.getRoom_info().getRoom_id(), roomDefaultWheatView.getUserId(),roomDefaultWheatView.pitNumber, getHostUser(),false,getChildFragmentManager());
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
mBinding.recyclerView.setAdapter(adapter);
|
||||
AgoraManager.getInstance(getActivity()).selectAudioTrack(1);
|
||||
isRotate = true;
|
||||
RoomDefaultWheatView muYc = mBinding.muYc;
|
||||
muYc.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
if (!muYc.getUserId().equals("")) {
|
||||
RoomUserInfoFragment.show(roomInfoResp.getRoom_info().getRoom_id(), muYc.getUserId(),muYc.pitNumber,getHostUser(),false, getChildFragmentManager());
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
RoomDefaultWheatView muZc = mBinding.muZc;
|
||||
muZc.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
if (!muZc.getUserId().equals("")) {
|
||||
RoomUserInfoFragment.show(roomInfoResp.getRoom_info().getRoom_id(), muZc.getUserId(),muZc.pitNumber,getHostUser(),false, getChildFragmentManager());
|
||||
}else {
|
||||
MvpPre.applyPit(roomInfoResp.getRoom_info().getRoom_id(), "9");
|
||||
}
|
||||
}
|
||||
});
|
||||
RoomDefaultWheatView muJb = mBinding.muJb;
|
||||
muJb.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
if (!muJb.getUserId().equals("")) {
|
||||
RoomUserInfoFragment.show(roomInfoResp.getRoom_info().getRoom_id(), muJb.getUserId(),muJb.pitNumber,getHostUser(),false, getChildFragmentManager());
|
||||
}else {
|
||||
RoomOnlineDialogFragment.show(roomInfoResp.getRoom_info().getRoom_id(), "10", getChildFragmentManager());
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 这是判断当前用户是否是麦上房主、管理员、主持,不在主持麦的都是不同用户
|
||||
* @return
|
||||
*/
|
||||
private int getHostUser(){
|
||||
if (roomInfoResp.getUser_info().getPit_number()==9){
|
||||
if (roomInfoResp.getUser_info().getIs_room_owner()==1){
|
||||
return 1;
|
||||
}else if (roomInfoResp.getUser_info().getIs_management()==1){
|
||||
return 2;
|
||||
}else {
|
||||
return 3;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
private void setVisibilityView(int type) {
|
||||
if (type == 1) {
|
||||
mBinding.llBz.setVisibility(View.VISIBLE);
|
||||
mBinding.llDs.setVisibility(View.VISIBLE);
|
||||
mBinding.llJs.setVisibility(View.VISIBLE);
|
||||
mBinding.llQg.setVisibility(View.VISIBLE);
|
||||
mBinding.llSz.setVisibility(View.GONE);
|
||||
} else if (type == 2) {
|
||||
mBinding.llBz.setVisibility(View.VISIBLE);
|
||||
mBinding.llDs.setVisibility(View.GONE);
|
||||
mBinding.llJs.setVisibility(View.GONE);
|
||||
mBinding.llQg.setVisibility(View.VISIBLE);
|
||||
mBinding.llSz.setVisibility(View.GONE);
|
||||
} else if (type == 3) {
|
||||
mBinding.llBz.setVisibility(View.GONE);
|
||||
mBinding.llDs.setVisibility(View.VISIBLE);
|
||||
mBinding.llJs.setVisibility(View.GONE);
|
||||
mBinding.llQg.setVisibility(View.GONE);
|
||||
mBinding.llSz.setVisibility(View.GONE);
|
||||
}
|
||||
}
|
||||
|
||||
private void onClick(View view) {
|
||||
int id = view.getId();
|
||||
if (id == R.id.ll_js) {
|
||||
MvpPre.endSong(roomInfoResp.getRoom_info().getRoom_id());
|
||||
} else if (id == R.id.ll_sz) {
|
||||
|
||||
} else if (id == R.id.ll_qg) {
|
||||
if (did == null || did.equals("")) {
|
||||
ToastUtils.showShort("暂时没有歌曲");
|
||||
return;
|
||||
}
|
||||
AgoraManager.getInstance(getActivity()).stopMuisc();
|
||||
MvpPre.changeSong(roomInfoResp.getRoom_info().getRoom_id(), did);
|
||||
} else if (id == R.id.ll_ds) {
|
||||
UserInfo userInfo = new UserInfo();
|
||||
userInfo.setAvatar(roomInfoResp.getSong_user_info().getAvatar());
|
||||
userInfo.setNickname(roomInfoResp.getSong_user_info().getNickname());
|
||||
userInfo.setUser_id(Integer.parseInt(roomInfoResp.getSong_user_info().getUser_id()));
|
||||
userInfo.setPit_number("0");
|
||||
RoomGiftDialogFragment.show( null,userInfo, roomInfoResp.getRoom_info().getRoom_id(),getParentFragmentManager());
|
||||
} else if (id == R.id.ll_bz) {
|
||||
if (isRotate) {
|
||||
AgoraManager.getInstance(getActivity()).selectAudioTrack(0);
|
||||
mBinding.imBz.setImageResource(com.qxcm.moduleutil.R.mipmap.accompany_on);
|
||||
mBinding.tvBz.setText("原唱");
|
||||
isRotate = false;
|
||||
} else {
|
||||
AgoraManager.getInstance(getActivity()).selectAudioTrack(1);
|
||||
mBinding.imBz.setImageResource(com.qxcm.moduleutil.R.mipmap.accompany_off);
|
||||
mBinding.tvBz.setText("伴奏");
|
||||
isRotate = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
super.onDestroy();
|
||||
endRotateAnimation();
|
||||
AgoraManager.getInstance(getActivity()).destroy();
|
||||
}
|
||||
|
||||
//开始旋转
|
||||
public void startRotateAnimation() {
|
||||
Animation rotateAnimation = AnimationUtils.loadAnimation(getContext(), com.qxcm.moduleutil.R.anim.image_rotate);
|
||||
LinearInterpolator lin = new LinearInterpolator();
|
||||
rotateAnimation.setInterpolator(lin);
|
||||
mBinding.muBj.setAnimation(rotateAnimation);
|
||||
}
|
||||
|
||||
//关闭旋转
|
||||
public void endRotateAnimation() {
|
||||
mBinding.muBj.clearAnimation();
|
||||
mBinding.muBj.setAnimation(null);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getLayoutId() {
|
||||
return R.layout.fragment_room_ktv;
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
public void roomInfoEvent(MusicFileBean messageEvent) {
|
||||
LyricsModel mLyricsModel = KaraokeView.parseLyricsData(messageEvent.getFileData());
|
||||
if (mLyricsModel != null) {
|
||||
mKaraokeView.setLyricsData(mLyricsModel);
|
||||
mBinding.lyricsView.setVisibility(View.VISIBLE);
|
||||
mBinding.tvJz.setVisibility(View.GONE);
|
||||
} else {
|
||||
mBinding.lyricsView.setVisibility(View.GONE);
|
||||
mBinding.tvJz.setVisibility(View.VISIBLE);
|
||||
}
|
||||
|
||||
// mBinding.muName.setText(mLyricsModel.title);
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
public void roomInfoEvent(MusicPlayBean messageEvent) {
|
||||
mKaraokeView.setProgress(messageEvent.getPosition());
|
||||
qiegSta(messageEvent.getPosition());
|
||||
}
|
||||
|
||||
/**
|
||||
* 自动切歌
|
||||
*
|
||||
* @param position
|
||||
*/
|
||||
private void qiegSta(long position) {
|
||||
if (musicSongBean != null) {
|
||||
if (musicSongBean.getUser_id().equals(SpUtil.getUserId() + "")) {
|
||||
if (!musicSongBean.getDuration().isEmpty()) {
|
||||
position += 1000;
|
||||
double duration = Math.ceil(position / 1000);
|
||||
if (duration >= Double.parseDouble(musicSongBean.getDuration())) {
|
||||
AgoraManager.getInstance(getActivity()).stopMuisc();
|
||||
MvpPre.changeSong(roomInfoResp.getRoom_info().getRoom_id(), did);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroyView() {
|
||||
super.onDestroyView();
|
||||
if (EventBus.getDefault().isRegistered(this)) {
|
||||
EventBus.getDefault().unregister(this);
|
||||
}
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
public void roomInfoEvent(RoomMessageEvent messageEvent) {
|
||||
if (messageEvent.getMsgType() == 1013) {
|
||||
LogUtils.e("@@", messageEvent);
|
||||
if (messageEvent.getText().getAction() == 3) {
|
||||
if (messageEvent.getText().getNextInfo() != null) {
|
||||
mBinding.muXName.setText(messageEvent.getText().getNextInfo().getSong_name());
|
||||
} else {
|
||||
mBinding.muXName.setText("暂无歌曲");
|
||||
}
|
||||
} else if (messageEvent.getText().getAction() == 2) {
|
||||
if (messageEvent.getText().getSongInfo() != null) {
|
||||
musicSongBean = messageEvent.getText().getSongInfo();
|
||||
did = messageEvent.getText().getSongInfo().getDid();
|
||||
duration = messageEvent.getText().getSongInfo().getDuration();
|
||||
mBinding.muName.setText(messageEvent.getText().getSongInfo().getSong_name());
|
||||
ImageUtils.loadHeadCC(messageEvent.getText().getSongInfo().getPoster(), mBinding.musicPoster);
|
||||
ImageUtils.loadHeadCC(messageEvent.getText().getSongInfo().getPoster(), mBinding.muBj);
|
||||
RoomDefaultWheatView roomDefaultWheatView = mBinding.muYc;
|
||||
RoomPitBean pitBean = new RoomPitBean();
|
||||
pitBean.setPit_number("-1");
|
||||
pitBean.setAvatar(messageEvent.getText().getSongInfo().getAvatar());
|
||||
pitBean.setNickname(messageEvent.getText().getSongInfo().getNickname());
|
||||
pitBean.setUser_id(messageEvent.getText().getSongInfo().getUser_id());
|
||||
pitBean.setCharm(messageEvent.getText().getSongInfo().getCharm());
|
||||
roomDefaultWheatView.setData(pitBean);
|
||||
roomInfoResp.setSong_user_info(musicSongBean);
|
||||
if (messageEvent.getText().getSongInfo().getUser_id().equals(SpUtil.getUserId() + "")) {
|
||||
AgoraManager.getInstance(getActivity()).stopMuisc();
|
||||
LogUtils.e("推送过来的code", messageEvent.getText().getSongInfo().getSong_code());
|
||||
AgoraManager.getInstance(getActivity()).isPreload(Long.parseLong(messageEvent.getText().getSongInfo().getSong_code()), 1);
|
||||
} else {
|
||||
AgoraManager.getInstance(getActivity()).stopMuisc();
|
||||
AgoraManager.getInstance(getActivity()).isPreload(Long.parseLong(messageEvent.getText().getSongInfo().getSong_code()), 2);
|
||||
}
|
||||
|
||||
if (messageEvent.getText().getSongInfo().getUser_id().equals(SpUtil.getUserId() + "") && roomInfoResp.getUser_info().getIs_host() == 1 && roomInfoResp.getUser_info().getPit_number() == 9) {
|
||||
setVisibilityView(1);
|
||||
} else if (messageEvent.getText().getSongInfo().getUser_id().equals(SpUtil.getUserId() + "")) {
|
||||
setVisibilityView(2);
|
||||
} else if (roomInfoResp.getUser_info().getIs_host() == 1 && roomInfoResp.getUser_info().getPit_number() == 9) {
|
||||
setVisibilityView(1);
|
||||
} else {
|
||||
setVisibilityView(3);
|
||||
}
|
||||
|
||||
} else {
|
||||
did = "";
|
||||
mBinding.muName.setText("无");
|
||||
}
|
||||
if (messageEvent.getText().getNextInfo() != null) {
|
||||
mBinding.muXName.setText(messageEvent.getText().getNextInfo().getSong_name());
|
||||
} else {
|
||||
mBinding.muXName.setText("无");
|
||||
}
|
||||
}
|
||||
} else if (messageEvent.getMsgType() == 1003) {
|
||||
if (messageEvent.getText().getPit_number().equals("9") || messageEvent.getText().getPit_number().equals("10")) {
|
||||
|
||||
RoomPitBean pitBean =new RoomPitBean();
|
||||
pitBean.setPit_number(messageEvent.getText().getPit_number());
|
||||
pitBean.setUser_id(messageEvent.getText().getFromUserInfo().getUser_id() + "");
|
||||
pitBean.setAvatar(messageEvent.getText().getFromUserInfo().getAvatar());
|
||||
pitBean.setNickname(messageEvent.getText().getFromUserInfo().getNickname());
|
||||
pitBean.setSex(messageEvent.getText().getFromUserInfo().getSex() + "");
|
||||
pitBean.setCharm(messageEvent.getText().getFromUserInfo().getCharm());
|
||||
|
||||
if (pitBean.getPit_number().equals("9")) {
|
||||
RoomDefaultWheatView roomDefaultWheatView = mBinding.muZc;
|
||||
roomDefaultWheatView.setData(pitBean);
|
||||
} else if (pitBean.getPit_number().equals("10")) {
|
||||
RoomDefaultWheatView roomDefaultWheatView = mBinding.muJb;
|
||||
roomDefaultWheatView.setData(pitBean);
|
||||
}
|
||||
}
|
||||
sv();
|
||||
}else if (messageEvent.getMsgType() == 1004){
|
||||
if (messageEvent.getText().getPit_number().equals("9") || messageEvent.getText().getPit_number().equals("10")) {
|
||||
RoomPitBean pitBean =new RoomPitBean();
|
||||
pitBean.setPit_number(messageEvent.getText().getPit_number());
|
||||
pitBean.setUser_id("");
|
||||
pitBean.setAvatar("");
|
||||
pitBean.setNickname("");
|
||||
pitBean.setSex("");
|
||||
pitBean.setCharm("");
|
||||
if (pitBean.getPit_number().equals("9")) {
|
||||
RoomDefaultWheatView roomDefaultWheatView = mBinding.muZc;
|
||||
roomDefaultWheatView.setData(pitBean);
|
||||
} else if (pitBean.getPit_number().equals("10")) {
|
||||
RoomDefaultWheatView roomDefaultWheatView = mBinding.muJb;
|
||||
roomDefaultWheatView.setData(pitBean);
|
||||
}
|
||||
}
|
||||
sv();
|
||||
}
|
||||
else if (messageEvent.getMsgType() == 1019) {
|
||||
LogUtils.e("1019", messageEvent);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void roomInfo(RoomInfoResp resp) {
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void showPasswordDialog() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void enterFail() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void getRoomOnline(RoomOnline onlineBean) {
|
||||
this.online = onlineBean;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void applyPit() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void downPit() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void applySong() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void agreeSong() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void postRoomInfo(RoomInfoResp resp) {
|
||||
AgoraManager.getInstance(getActivity()).destroy();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void getCharmRank(List<RoomCharmRankBean> list) {
|
||||
adapter.setNewData(list);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void changeSong() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void hostUserPit() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void quitRoom() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void userGuanzSuccess(String s) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void acceptPk() {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,76 @@
|
||||
package com.example.moduleroom.fragment;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.fragment.app.Fragment;
|
||||
|
||||
import android.view.Gravity;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.Window;
|
||||
import android.view.WindowManager;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.blankj.utilcode.util.ScreenUtils;
|
||||
import com.example.moduleroom.R;
|
||||
import com.qxcm.moduleutil.activity.IPresenter;
|
||||
import com.qxcm.moduleutil.base.BaseMvpDialogFragment;
|
||||
import com.qxcm.moduleutil.widget.dialog.BaseDialog;
|
||||
|
||||
/**
|
||||
*@author qx
|
||||
*@data 2025/6/10
|
||||
*@description: 房间公告展示
|
||||
*/
|
||||
public class RoomNoticeDialogFragment extends BaseDialog {
|
||||
private Context mContext;
|
||||
private TextView tvTile;
|
||||
private TextView tvContent;
|
||||
private ImageView ivClose;
|
||||
String title, content;
|
||||
|
||||
public RoomNoticeDialogFragment(@NonNull Context context) {
|
||||
super(context);
|
||||
this.mContext = context;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getLayoutId() {
|
||||
return R.layout.fragment_room_notice_dialog;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initView() {
|
||||
getWindow().setLayout((int) (ScreenUtils.getScreenWidth() * 0.86), ViewGroup.LayoutParams.WRAP_CONTENT);
|
||||
tvTile=findViewById(R.id.tv_title);
|
||||
tvContent=findViewById(R.id.tv_content);
|
||||
ivClose=findViewById(R.id.iv_close);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initData() {
|
||||
|
||||
|
||||
ivClose.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
dismiss();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void setContent(String content) {
|
||||
tvContent.setText(content);
|
||||
}
|
||||
public void setTitle(String title) {
|
||||
tvTile.setText(title);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,121 @@
|
||||
package com.example.moduleroom.fragment;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
import android.view.Window;
|
||||
import android.view.WindowManager;
|
||||
|
||||
import androidx.fragment.app.FragmentManager;
|
||||
|
||||
import com.blankj.utilcode.util.ScreenUtils;
|
||||
import com.example.moduleroom.R;
|
||||
import com.example.moduleroom.contacts.RoomPasswordSetContacts;
|
||||
import com.example.moduleroom.databinding.RoomDialogRoomPwSettingBinding;
|
||||
import com.example.moduleroom.presenter.RoomPasswordSetPresenter;
|
||||
import com.hjq.toast.ToastUtils;
|
||||
import com.qxcm.moduleutil.base.BaseMvpDialogFragment;
|
||||
import com.qxcm.moduleutil.event.PasswordInputEvent;
|
||||
import com.qxcm.moduleutil.event.RoomOutEvent;
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
/**
|
||||
*@author qx
|
||||
*@data 2025/6/9
|
||||
*@description: 输入密码弹窗
|
||||
*/
|
||||
public class RoomPasswordSetDialogFragment extends BaseMvpDialogFragment<RoomPasswordSetPresenter, RoomDialogRoomPwSettingBinding> implements RoomPasswordSetContacts.View {
|
||||
|
||||
private static final String TAG = "RoomPasswordSetDialogFragment";
|
||||
|
||||
|
||||
private boolean hidePwd;
|
||||
private String roomId;
|
||||
|
||||
public static RoomPasswordSetDialogFragment newInstance(boolean hidePwd, String roomId) {
|
||||
|
||||
Bundle args = new Bundle();
|
||||
args.putBoolean("hidePwd", hidePwd);
|
||||
args.putString("roomId", roomId);
|
||||
RoomPasswordSetDialogFragment fragment = new RoomPasswordSetDialogFragment();
|
||||
fragment.setArguments(args);
|
||||
return fragment;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initArgs(Bundle arguments) {
|
||||
super.initArgs(arguments);
|
||||
this.hidePwd = arguments.getBoolean("hidePwd");
|
||||
this.roomId = arguments.getString("roomId");
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getLayoutId() {
|
||||
return R.layout.room_dialog_room_pw_setting;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initView() {
|
||||
//是否隐藏密码
|
||||
if (hidePwd) {
|
||||
mBinding.txTitle.setText("请输入房间密码");
|
||||
mBinding.useHintTxt.setVisibility(View.INVISIBLE);
|
||||
mBinding.gpvPswView.setPasswordVisibility(false);
|
||||
} else {
|
||||
mBinding.txTitle.setText("请设置房间密码");
|
||||
mBinding.useHintTxt.setVisibility(View.VISIBLE);
|
||||
mBinding.gpvPswView.setPasswordVisibility(true);
|
||||
}
|
||||
mBinding.btPw.setOnClickListener(this::onViewClicked);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initDialogStyle(Window window) {
|
||||
super.initDialogStyle(window);
|
||||
int width = (int) (ScreenUtils.getScreenWidth() * 341.0 / 375);
|
||||
window.setLayout(width, WindowManager.LayoutParams.WRAP_CONTENT);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected RoomPasswordSetPresenter bindPresenter() {
|
||||
return new RoomPasswordSetPresenter(this, getActivity());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initData() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroyView() {
|
||||
super.onDestroyView();
|
||||
if (hidePwd) {
|
||||
EventBus.getDefault().post(new RoomOutEvent());
|
||||
}
|
||||
}
|
||||
|
||||
public void onViewClicked(View view) {
|
||||
String passWord = mBinding.gpvPswView.getPassWord();
|
||||
if (passWord.length() != 4 && passWord.length() > 0) {
|
||||
ToastUtils.show("请输入完整的密码");
|
||||
return;
|
||||
}
|
||||
if (hidePwd) {
|
||||
EventBus.getDefault().post(new PasswordInputEvent(passWord));
|
||||
hidePwd = false;
|
||||
dismiss();
|
||||
} else {
|
||||
MvpPre.setRoomPassword(roomId, passWord);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void roomPasswordSettingSuccess() {
|
||||
ToastUtils.show("密码设置成功");
|
||||
dismiss();
|
||||
}
|
||||
|
||||
public void show(FragmentManager manager) {
|
||||
show(manager, TAG);
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,55 @@
|
||||
package com.example.moduleroom.presenter;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import com.blankj.utilcode.util.ObjectUtils;
|
||||
import com.example.moduleroom.contacts.BidListContacts;
|
||||
import com.qxcm.moduleutil.bean.room.RoomAuction;
|
||||
import com.qxcm.moduleutil.http.BaseObserver;
|
||||
import com.qxcm.moduleutil.presenter.BasePresenter;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import io.reactivex.disposables.Disposable;
|
||||
|
||||
public class BidListPresenter extends BasePresenter<BidListContacts.View> implements BidListContacts.IRoomPre {
|
||||
public BidListPresenter(BidListContacts.View view, Context context) {
|
||||
super(view, context);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void roomAuctionList(String auction_id) {
|
||||
api.roomAuctionList(auction_id, new BaseObserver<List<RoomAuction.AuctionListBean>>() {
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
addDisposable(d);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(List<RoomAuction.AuctionListBean> auctionListBeans) {
|
||||
List<RoomAuction.AuctionListBean> lists = auctionListBeans;
|
||||
if (!ObjectUtils.isEmpty(lists)) {//lists判空
|
||||
//榜一
|
||||
if (lists.size() > 0) {
|
||||
MvpRef.get().setNo1(lists.get(0));
|
||||
}
|
||||
//榜二
|
||||
if (lists.size() > 1) {
|
||||
MvpRef.get().setNo2(lists.get(1));
|
||||
}
|
||||
//榜三
|
||||
if (lists.size() > 2) {
|
||||
MvpRef.get().setNo3(lists.get(2));
|
||||
}
|
||||
//第四名及后
|
||||
if (lists.size() > 3) {
|
||||
MvpRef.get().roomAuctionList(lists.subList(3, lists.size()));
|
||||
}
|
||||
}else {
|
||||
MvpRef.get().setCharmEmpty();
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,83 @@
|
||||
package com.example.moduleroom.presenter;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import com.example.moduleroom.contacts.CardRelationshipContacts;
|
||||
import com.qxcm.moduleutil.bean.RoomRelationBean;
|
||||
import com.qxcm.moduleutil.bean.RoomTime;
|
||||
import com.qxcm.moduleutil.bean.RoonGiftModel;
|
||||
import com.qxcm.moduleutil.bean.room.AuctionBean;
|
||||
import com.qxcm.moduleutil.http.BaseObserver;
|
||||
import com.qxcm.moduleutil.presenter.BasePresenter;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import io.reactivex.disposables.Disposable;
|
||||
|
||||
public class CardRelationshipPresenter extends BasePresenter<CardRelationshipContacts.View> implements CardRelationshipContacts.IRoomPre{
|
||||
public CardRelationshipPresenter(CardRelationshipContacts.View view, Context context) {
|
||||
super(view, context);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void roomRelationList(String type) {
|
||||
api.roomRelationList(type, new BaseObserver<List<RoomRelationBean>>() {
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
addDisposable(d);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(List<RoomRelationBean> roomRelationBeans) {
|
||||
MvpRef.get().roomRelationList(roomRelationBeans);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void getGiftList(String id) {
|
||||
api.getGiftList(Integer.parseInt(id), new BaseObserver<List<RoonGiftModel>>() {
|
||||
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
addDisposable(d);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(List<RoonGiftModel> roonGiftModels) {
|
||||
MvpRef.get().setGiftList(roonGiftModels);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void roomAuction(String roomId, String userId, String giftId, String relation_id, String auction_type, String time_day) {
|
||||
api.roomAuction(roomId,userId,giftId,relation_id,auction_type,time_day, new BaseObserver<AuctionBean>() {
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
addDisposable( d);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(AuctionBean auctionBean) {
|
||||
MvpRef.get().roomAuction(auctionBean);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void roomAuctionTime(String gift_id) {
|
||||
api.roomAuctionTime(gift_id, new BaseObserver<RoomTime>() {
|
||||
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
addDisposable(d);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(RoomTime roomTime) {
|
||||
MvpRef.get().roomAuctionTime(roomTime);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,120 @@
|
||||
package com.example.moduleroom.presenter;
|
||||
|
||||
import android.content.Context;
|
||||
import android.util.Log;
|
||||
|
||||
import com.blankj.utilcode.util.ObjectUtils;
|
||||
import com.example.moduleroom.contacts.DataListContacts;
|
||||
import com.qxcm.moduleutil.base.BaseRoomPresenter;
|
||||
import com.qxcm.moduleutil.bean.CharmRankingResp;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import io.reactivex.disposables.Disposable;
|
||||
/**
|
||||
*@author qx
|
||||
*@data 2025/6/10
|
||||
*@description: 排行榜
|
||||
*/
|
||||
public class DataListPresenter extends BaseRoomPresenter<DataListContacts.View> implements DataListContacts.IRoomDataListPre {
|
||||
private static final String TAG = "DataListPresenter";
|
||||
|
||||
public DataListPresenter(DataListContacts.View view, Context context) {
|
||||
super(view, context);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void getCharmListInfo(String roomId, int type) {
|
||||
// ApiClient.getInstance().getCharmList(roomId, type, new BaseObserver<CharmRankingResp>() {
|
||||
// @Override
|
||||
// public void onSubscribe(Disposable d) {
|
||||
// Log.d(TAG, "onSubscribe: isOK");
|
||||
// addDisposable(d);
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public void onNext(CharmRankingResp charmRankingResp) {
|
||||
// //RxJava + Retrefit + mvp模式
|
||||
// //charmRankingResp请求成功获取到的结果
|
||||
// //获取魅力ListsBean数据
|
||||
// List<CharmRankingResp.ListsBean> lists = charmRankingResp.getLists();
|
||||
// if (!ObjectUtils.isEmpty(lists)) {//lists判空
|
||||
// //榜一
|
||||
// if (lists.size() > 0) {
|
||||
// MvpRef.get().setNo1(lists.get(0));
|
||||
// }
|
||||
// //榜二
|
||||
// if (lists.size() > 1) {
|
||||
// MvpRef.get().setNo2(lists.get(1));
|
||||
// }
|
||||
// //榜三
|
||||
// if (lists.size() > 2) {
|
||||
// MvpRef.get().setNo3(lists.get(2));
|
||||
// }
|
||||
// //第四名及后
|
||||
// if (lists.size() > 3) {
|
||||
// MvpRef.get().setCharmView(lists.subList(3, lists.size()));
|
||||
// }
|
||||
// }else {
|
||||
// MvpRef.get().setCharmEmpty();
|
||||
// }
|
||||
// Log.d(TAG, "onNext: getCharmListInfo isOK");
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public void onComplete() {
|
||||
// Log.d(TAG, "onComplete: isOK");
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public void onError(Throwable e) {
|
||||
// super.onError(e);
|
||||
// Log.e(TAG, "onError: getCharmListInfo isError");
|
||||
// }
|
||||
// });
|
||||
}
|
||||
|
||||
@Override
|
||||
public void getWealthListInfo(String roomId, int type) {
|
||||
// ApiClient.getInstance().getWealthList(roomId, type, new BaseObserver<WealthRankingResp>() {
|
||||
// @Override
|
||||
// public void onSubscribe(Disposable d) {
|
||||
// addDisposable(d);
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public void onNext(WealthRankingResp wealthRankingResp) {
|
||||
// //获取财富ListsBean数据
|
||||
// List<WealthRankingResp.ListsBean> lists = wealthRankingResp.getLists();
|
||||
// if (!ObjectUtils.isEmpty(lists)) {//lists判空
|
||||
// //榜一
|
||||
// if (lists.size() > 0) {
|
||||
// MvpRef.get().setNo1(lists.get(0));
|
||||
// }
|
||||
// //榜二
|
||||
// if (lists.size() > 1) {
|
||||
// MvpRef.get().setNo2(lists.get(1));
|
||||
// }
|
||||
// //榜三
|
||||
// if (lists.size() > 2) {
|
||||
// MvpRef.get().setNo3(lists.get(2));
|
||||
// }
|
||||
// //第四名及后
|
||||
// if (lists.size() > 3) {
|
||||
// MvpRef.get().setWealthView(lists.subList(3, lists.size()));
|
||||
// }
|
||||
// }else {
|
||||
// MvpRef.get().setWealthEmpty();
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public void onComplete() {
|
||||
//
|
||||
// }
|
||||
// });
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
package com.example.moduleroom.presenter;
|
||||
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import com.example.moduleroom.contacts.PkTimeContract;
|
||||
import com.qxcm.moduleutil.http.BaseObserver;
|
||||
import com.qxcm.moduleutil.presenter.BasePresenter;
|
||||
|
||||
import io.reactivex.disposables.Disposable;
|
||||
|
||||
public class PkTimePresenter extends BasePresenter<PkTimeContract.View> implements PkTimeContract.IRoomPre{
|
||||
public PkTimePresenter(PkTimeContract.View view, Context context) {
|
||||
super(view, context);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void startPk(String pk_id, String pk_times) {
|
||||
api.startPk(pk_id, pk_times, new BaseObserver<String>() {
|
||||
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
addDisposable(d);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(String s) {
|
||||
// MvpRef.get().startPk();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package com.example.moduleroom.presenter;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import com.example.moduleroom.contacts.PublishCommentContacts;
|
||||
import com.qxcm.moduleutil.presenter.BasePresenter;
|
||||
|
||||
public class PublishCommentPresenter extends BasePresenter<PublishCommentContacts.View> implements PublishCommentContacts.IRoomPre {
|
||||
public PublishCommentPresenter(PublishCommentContacts.View view, Context context) {
|
||||
super(view, context);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,67 @@
|
||||
package com.example.moduleroom.presenter;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import com.example.moduleroom.contacts.RequestContacts;
|
||||
import com.qxcm.moduleutil.bean.MusicSongBean;
|
||||
import com.qxcm.moduleutil.bean.SongMusicBean;
|
||||
import com.qxcm.moduleutil.http.BaseObserver;
|
||||
import com.qxcm.moduleutil.presenter.BasePresenter;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import io.reactivex.disposables.Disposable;
|
||||
|
||||
public class RequestPresenter extends BasePresenter<RequestContacts.View> implements RequestContacts.IRoomPre{
|
||||
public RequestPresenter(RequestContacts.View view, Context context) {
|
||||
super(view, context);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void songList(String roomId) {
|
||||
api.songList(roomId, new BaseObserver<List<MusicSongBean>>() {
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
addDisposable(d);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(List<MusicSongBean> musicSongBeans) {
|
||||
MvpRef.get().songList(musicSongBeans);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void upSong(String did, String type) {
|
||||
api.upSong(did, type, new BaseObserver<String>() {
|
||||
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
addDisposable(d);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(String s) {
|
||||
MvpRef.get().upSong(s);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void song(String roomId, String user_id, String song_code, String song_name, String singer, String poster, String duration) {
|
||||
api.song(roomId, user_id, song_code, song_name, singer, poster, duration, new BaseObserver<List<SongMusicBean>>() {
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
addDisposable(d);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(List<SongMusicBean> songMusicBeans) {
|
||||
MvpRef.get().song(songMusicBeans);
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,86 @@
|
||||
package com.example.moduleroom.presenter;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import com.example.moduleroom.contacts.RoomAuctionContacts;
|
||||
import com.qxcm.moduleutil.bean.room.AuctionBean;
|
||||
import com.qxcm.moduleutil.http.BaseObserver;
|
||||
import com.qxcm.moduleutil.http.RetrofitClient;
|
||||
import com.qxcm.moduleutil.presenter.BasePresenter;
|
||||
|
||||
import java.lang.ref.WeakReference;
|
||||
|
||||
import io.reactivex.disposables.Disposable;
|
||||
|
||||
public class RoomAuctionPresenter extends BasePresenter<RoomAuctionContacts.View> implements RoomAuctionContacts.IRoomDataListPre {
|
||||
public RoomAuctionPresenter(RoomAuctionContacts.View view, Context context) {
|
||||
super(view, context);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void applyPit(String roomId, String pitNumber) {
|
||||
api.applyPit(roomId, pitNumber, new BaseObserver<String>() {
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
addDisposable(d);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(String s) {
|
||||
MvpRef.get().applyPit();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void roomAuction(String roomId, String userId, String giftId, String relation_id, String auction_type, String time_day) {
|
||||
api.roomAuction(roomId,userId,giftId,relation_id,auction_type,time_day, new BaseObserver<AuctionBean>() {
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
addDisposable( d);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(AuctionBean auctionBean) {
|
||||
MvpRef.get().roomAuction(auctionBean);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void auctionDelay(String auctionId) {
|
||||
RetrofitClient.getInstance().auctionDelay(auctionId, new BaseObserver<String>() {
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
addDisposable(d);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(String s) {
|
||||
|
||||
MvpRef.get().auctionDelay();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void auctionEnd(String auctionId) {
|
||||
RetrofitClient.getInstance().auctionEnd(auctionId, new BaseObserver<String>() {
|
||||
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
addDisposable(d);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(String s) {
|
||||
MvpRef.get().auctionEnd();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void auctionMode(String roomId, String labelId) {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,98 @@
|
||||
package com.example.moduleroom.presenter;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import com.example.moduleroom.contacts.RoomAuctionContacts;
|
||||
import com.qxcm.moduleutil.bean.RoomTime;
|
||||
import com.qxcm.moduleutil.bean.room.AuctionBean;
|
||||
import com.qxcm.moduleutil.http.BaseObserver;
|
||||
import com.qxcm.moduleutil.http.RetrofitClient;
|
||||
import com.qxcm.moduleutil.presenter.BasePresenter;
|
||||
|
||||
import io.reactivex.disposables.Disposable;
|
||||
|
||||
public class RoomAuctionPresenterTow extends BasePresenter<RoomAuctionContacts.View> implements RoomAuctionContacts.IRoomDataListPre {
|
||||
public RoomAuctionPresenterTow(RoomAuctionContacts.View view, Context context) {
|
||||
super(view, context);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void applyPit(String roomId, String pitNumber) {
|
||||
api.applyPit(roomId, pitNumber, new BaseObserver<String>() {
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
addDisposable(d);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(String s) {
|
||||
MvpRef.get().applyPit();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void roomAuction(String roomId, String userId, String giftId, String relation_id, String auction_type, String time_day) {
|
||||
api.roomAuction(roomId,userId,giftId,relation_id,auction_type,time_day, new BaseObserver<AuctionBean>() {
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
addDisposable( d);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(AuctionBean auctionBean) {
|
||||
MvpRef.get().roomAuction(auctionBean);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void auctionDelay(String auctionId) {
|
||||
RetrofitClient.getInstance().auctionDelay(auctionId, new BaseObserver<String>() {
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
addDisposable(d);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(String s) {
|
||||
|
||||
// MvpRef.get().auctionDelay();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void auctionEnd(String auctionId) {
|
||||
RetrofitClient.getInstance().auctionEnd(auctionId, new BaseObserver<String>() {
|
||||
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
addDisposable(d);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(String s) {
|
||||
// MvpRef.get().auctionEnd();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void auctionMode(String roomId, String labelId) {
|
||||
RetrofitClient.getInstance().auctionMode(roomId, labelId, new BaseObserver<String>() {
|
||||
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
addDisposable(d);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(String s) {
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,86 @@
|
||||
package com.example.moduleroom.presenter;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import com.example.moduleroom.contacts.RoomBackgroundContacts;
|
||||
import com.hjq.toast.ToastUtils;
|
||||
import com.qxcm.moduleutil.bean.RoomBgBean;
|
||||
import com.qxcm.moduleutil.http.BaseObserver;
|
||||
import com.qxcm.moduleutil.presenter.BasePresenter;
|
||||
import com.qxcm.moduleutil.utils.oss.OSSOperUtils;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.List;
|
||||
|
||||
import io.reactivex.disposables.Disposable;
|
||||
|
||||
public class RoomBackgroundPresenter extends BasePresenter<RoomBackgroundContacts.View> implements RoomBackgroundContacts.RoomBackgroudPre {
|
||||
public RoomBackgroundPresenter(RoomBackgroundContacts.View view, Context context) {
|
||||
super(view, context);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void getBackgroundList() {
|
||||
api.getBackgroundList(new BaseObserver<RoomBgBean>() {
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
addDisposable(d);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(RoomBgBean roomBgBeans) {
|
||||
MvpRef.get().getBackgroundList(roomBgBeans);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void uploadFile(File file, int type, int index, int size) {
|
||||
String url = OSSOperUtils.getPath(file, type);
|
||||
OSSOperUtils.newInstance().putObjectMethod(url, file.getPath(), new OSSOperUtils.OssCallback() {
|
||||
@Override
|
||||
public void onSuccess() {
|
||||
if (isViewAttach()) {
|
||||
MvpRef.get().upLoadSuccess(OSSOperUtils.AliYunOSSURLFile + url, type, index, size);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFail() {
|
||||
if (isViewAttach()) {
|
||||
MvpRef.get().disLoadings();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void uploadBgImage(String id, String image_url) {
|
||||
api.uploadBgImage(id, image_url, new BaseObserver<String>() {
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
addDisposable(d);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(String string) {
|
||||
MvpRef.get().uploadBgImage();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void editRoom(String room_id, String room_name, String room_cover, String room_intro, String room_background) {
|
||||
api.editRoom(room_id, room_name, room_cover, room_intro, room_background, new BaseObserver<String>() {
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
addDisposable(d);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(String string) {
|
||||
MvpRef.get().editRoom();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
package com.example.moduleroom.presenter;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import com.example.moduleroom.contacts.RoomCabinContacts;
|
||||
import com.qxcm.moduleutil.base.BaseRoomPresenter;
|
||||
import com.qxcm.moduleutil.http.BaseObserver;
|
||||
import com.qxcm.moduleutil.presenter.BasePresenter;
|
||||
|
||||
import io.reactivex.disposables.Disposable;
|
||||
|
||||
public class RoomCabinPresenter extends BaseRoomPresenter<RoomCabinContacts.View> implements RoomCabinContacts.IRoomPre{
|
||||
public RoomCabinPresenter(RoomCabinContacts.View view, Context context) {
|
||||
super(view, context);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void quitRoom(String roomId, String userId) {
|
||||
api.quitRoom(roomId, userId, new BaseObserver<String>() {
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
addDisposable(d);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(String string) {
|
||||
MvpRef.get().quitRoom();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,93 @@
|
||||
package com.example.moduleroom.presenter;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import com.example.moduleroom.contacts.RoomHostContacts;
|
||||
import com.qxcm.moduleutil.bean.HostBean;
|
||||
import com.qxcm.moduleutil.bean.RoomSearchResp;
|
||||
import com.qxcm.moduleutil.http.BaseObserver;
|
||||
import com.qxcm.moduleutil.presenter.BasePresenter;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import io.reactivex.disposables.Disposable;
|
||||
|
||||
public class RoomHostPresenter extends BasePresenter<RoomHostContacts.View> implements RoomHostContacts.IRoomToolPre {
|
||||
|
||||
|
||||
public RoomHostPresenter(RoomHostContacts.View view, Context context) {
|
||||
super(view, context);
|
||||
}
|
||||
|
||||
// TODO: 2025/3/15 获取当前房间的主持人列表
|
||||
@Override
|
||||
public void clearHostList(String roomId,String type) {
|
||||
api.getHostList(roomId,type, new BaseObserver<List<HostBean>>() {
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
addDisposable(d);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(List<HostBean> giftModels) {
|
||||
MvpRef.get().setHostrList(giftModels);
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
// TODO: 2025/3/15 获取用户信息
|
||||
@Override
|
||||
public void setUserHostList(String keyWord,String type) {
|
||||
api.getSearch(keyWord,type, new BaseObserver<List<RoomSearchResp>>() {
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
addDisposable(d);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(List<RoomSearchResp> roomSearchResps) {
|
||||
MvpRef.get().getUserHostList(roomSearchResps);
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
// TODO: 2025/3/17 设置收益比例
|
||||
@Override
|
||||
public void setPresidedRatio(String room_id,String user_id, String ratio) {
|
||||
api.setPresidedRatio(room_id,user_id, ratio, new BaseObserver<String>() {
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
addDisposable(d);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(String s) {
|
||||
MvpRef.get().postPresidedRatio(s);
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
|
||||
// TODO: 2025/3/17 添加主持人
|
||||
@Override
|
||||
public void postHostAdd(String roomId, String userId,String type,String is_add) {
|
||||
api.postHostAdd(roomId, userId, type, is_add, new BaseObserver<String>() {
|
||||
|
||||
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
addDisposable(d);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(String s) {
|
||||
MvpRef.get().postHostAdd(s,type,is_add);
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
package com.example.moduleroom.presenter;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import com.example.moduleroom.contacts.RoomPasswordSetContacts;
|
||||
import com.qxcm.moduleutil.http.BaseObserver;
|
||||
import com.qxcm.moduleutil.presenter.BasePresenter;
|
||||
|
||||
import io.reactivex.disposables.Disposable;
|
||||
|
||||
public class RoomPasswordSetPresenter extends BasePresenter<RoomPasswordSetContacts.View> implements RoomPasswordSetContacts.IRoomPasswordSetPre {
|
||||
public RoomPasswordSetPresenter(RoomPasswordSetContacts.View view, Context context) {
|
||||
super(view, context);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setRoomPassword(String roomId, String password) {
|
||||
api.updatePassword(roomId, password, new BaseObserver<String>() {
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
addDisposable(d);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(String s) {
|
||||
MvpRef.get().roomPasswordSettingSuccess();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onComplete() {
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,65 @@
|
||||
package com.example.moduleroom.presenter;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import com.example.moduleroom.contacts.RoomPkContacts;
|
||||
import com.qxcm.moduleutil.bean.room.RoomBean;
|
||||
import com.qxcm.moduleutil.http.BaseObserver;
|
||||
import com.qxcm.moduleutil.presenter.BasePresenter;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import io.reactivex.disposables.Disposable;
|
||||
|
||||
public class RoomPkPresenter extends BasePresenter<RoomPkContacts.View> implements RoomPkContacts.IRoomPre {
|
||||
public RoomPkPresenter(RoomPkContacts.View view, Context context) {
|
||||
super(view, context);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void searchPkRoom(String roomId, String page, String limit) {
|
||||
api.searchPkRoom(roomId, page, limit, new BaseObserver<List<RoomBean>>() {
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
addDisposable(d);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(List<RoomBean> roomBeans) {
|
||||
MvpRef.get().searchPkRoom(roomBeans);
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendPk(String roomIda, String createUserId, String roomIdb) {
|
||||
api.sendPk(roomIda, createUserId, roomIdb, new BaseObserver<Object>() {
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
addDisposable(d);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(Object o) {
|
||||
MvpRef.get().sendPk();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void refusePk(String roomId, String is_pk) {
|
||||
api.refusePk(roomId, is_pk, new BaseObserver<String>() {
|
||||
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
addDisposable(d);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(String s) {
|
||||
MvpRef.get().refusePk();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -2,11 +2,301 @@ package com.example.moduleroom.presenter;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import com.blankj.utilcode.util.ObjectUtils;
|
||||
import com.example.moduleroom.contacts.RoomContacts;
|
||||
import com.google.gson.reflect.TypeToken;
|
||||
import com.qxcm.moduleutil.base.CommonAppContext;
|
||||
import com.qxcm.moduleutil.bean.RoomCharmRankBean;
|
||||
import com.qxcm.moduleutil.bean.RoomResultResp;
|
||||
import com.qxcm.moduleutil.bean.room.Config;
|
||||
import com.qxcm.moduleutil.bean.room.RoomBean;
|
||||
import com.qxcm.moduleutil.bean.room.RoomInfoResp;
|
||||
import com.qxcm.moduleutil.bean.room.RoomOnline;
|
||||
import com.qxcm.moduleutil.bean.room.RoomOnlineBean;
|
||||
import com.qxcm.moduleutil.bean.room.RoomPitBean;
|
||||
import com.qxcm.moduleutil.bean.room.RoomUserBean;
|
||||
import com.qxcm.moduleutil.http.APIException;
|
||||
import com.qxcm.moduleutil.http.BaseObserver;
|
||||
import com.qxcm.moduleutil.presenter.BasePresenter;
|
||||
import com.qxcm.moduleutil.rtc.AgoraManager;
|
||||
import com.qxcm.moduleutil.rtc.RtcConstants;
|
||||
import com.qxcm.moduleutil.rtc.RtcCore;
|
||||
import com.qxcm.moduleutil.rtc.RtcDestroyCallback;
|
||||
import com.qxcm.moduleutil.rtc.RtcManager;
|
||||
import com.qxcm.moduleutil.utils.GsonUtils;
|
||||
import com.qxcm.moduleutil.utils.SpUtil;
|
||||
|
||||
public class RoomPresenter extends BasePresenter<RoomContacts.View> implements RoomContacts.IRoomPre{
|
||||
import java.lang.reflect.Type;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import io.reactivex.disposables.Disposable;
|
||||
|
||||
public class RoomPresenter extends BasePresenter<RoomContacts.View> implements RoomContacts.IRoomPre {
|
||||
public RoomPresenter(RoomContacts.View view, Context context) {
|
||||
super(view, context);
|
||||
}
|
||||
|
||||
// TODO: 2025/6/10 加入房间
|
||||
@Override
|
||||
public void getRoomIn(String roomId, String password) {
|
||||
|
||||
// Type listType = new TypeToken<RoomInfoResp>() {}.getType();
|
||||
// RoomInfoResp restoredRoomModels = GsonUtils.getGSON().fromJson(SpUtil.getRoomInfoResp(), listType);
|
||||
// if (restoredRoomModels!= null ) {
|
||||
// MvpRef.get().roomInfo(restoredRoomModels);
|
||||
// }
|
||||
|
||||
api.roomGetIn(roomId, password, new BaseObserver<RoomInfoResp>() {
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
addDisposable(d);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(RoomInfoResp resp) {
|
||||
String appId = CommonAppContext.getInstance().getCurrentEnvironment().getSwSdkAppId();
|
||||
String token = resp.getUser_info().getAgora_token(); // 如果启用了鉴权才需要
|
||||
String roomId = resp.getRoom_info().getRoom_id(); // 房间 ID
|
||||
String rtm_token=resp.getUser_info().getAgora_rtm_token();
|
||||
SpUtil.setRtmToken(rtm_token);
|
||||
int uid = SpUtil.getUserId(); // 0 表示由 Agora 自动生成 UID
|
||||
boolean enableMic = false; // 是否开启麦克风
|
||||
|
||||
// 初始化 Agora 并加入房间
|
||||
AgoraManager.getInstance(getView().getSelfActivity())
|
||||
.init(appId)
|
||||
.joinRoom(token, roomId, uid, enableMic);
|
||||
|
||||
// RtcCore rtcCore = RtcCore.getInstance(getView().getSelfActivity());
|
||||
// rtcCore.initAgora(appId);
|
||||
|
||||
// 2. 加入房间
|
||||
// rtcCore.joinRoom(token, roomId, uid, enableMic);
|
||||
MvpRef.get().roomInfo(resp);
|
||||
|
||||
}
|
||||
@Override
|
||||
public void onError(Throwable e) {
|
||||
super.onError(e);
|
||||
if (e instanceof APIException) {
|
||||
APIException apiException = (APIException) e;
|
||||
if (apiException.getCode() == 10000) {
|
||||
MvpRef.get().showPasswordDialog();
|
||||
} else {
|
||||
MvpRef.get().enterFail();
|
||||
}
|
||||
} else {
|
||||
MvpRef.get().enterFail();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// TODO: 2025/6/10 在线列表
|
||||
@Override
|
||||
public void getRoomOnline(String roomId, String page, String page_limit) {
|
||||
api.getRoomOnline(roomId, page, page_limit, new BaseObserver<RoomOnline>() {
|
||||
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
addDisposable(d);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(RoomOnline roomOnlineBeans) {
|
||||
MvpRef.get().getRoomOnline(roomOnlineBeans);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void applyPit(String roomId, String pitNumber) {
|
||||
api.applyPit(roomId, pitNumber, new BaseObserver<String>() {
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
addDisposable(d);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(String s) {
|
||||
MvpRef.get().applyPit();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void downPit(String roomId, String pitNumber) {
|
||||
api.downPit(roomId, pitNumber, new BaseObserver<String>() {
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
addDisposable(d);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(String s) {
|
||||
MvpRef.get().downPit();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void applySong(String roomId) {
|
||||
api.applySong(roomId, new BaseObserver<String>() {
|
||||
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
addDisposable(d);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(String s) {
|
||||
MvpRef.get().applySong();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void agreeSong(String roomId, String type) {
|
||||
api.agreeSong(roomId, type, new BaseObserver<String>() {
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
addDisposable(d);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(String s) {
|
||||
MvpRef.get().agreeSong();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void endSong(String roomId) {
|
||||
api.endSong(roomId, new BaseObserver<String>() {
|
||||
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
addDisposable(d);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(String s) {
|
||||
MvpRef.get().agreeSong();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void postRoomInfo(String roomId) {
|
||||
api.postRoomInfo(roomId, new BaseObserver<RoomInfoResp>() {
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
addDisposable(d);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(RoomInfoResp roomInfoResp) {
|
||||
String appId = CommonAppContext.getInstance().getCurrentEnvironment().getSwSdkAppId();
|
||||
String token = roomInfoResp.getUser_info().getAgora_token(); // 如果启用了鉴权才需要
|
||||
String roomId = roomInfoResp.getRoom_info().getRoom_id(); // 房间 ID
|
||||
String rtm_token=roomInfoResp.getUser_info().getAgora_rtm_token();
|
||||
SpUtil.setRtmToken(rtm_token);
|
||||
int uid = SpUtil.getUserId(); // 0 表示由 Agora 自动生成 UID
|
||||
boolean enableMic = false; // 是否开启麦克风
|
||||
MvpRef.get().postRoomInfo(roomInfoResp);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void getCharmRank(String roomId) {
|
||||
api.getCharmRank(roomId, new BaseObserver<List<RoomCharmRankBean>>() {
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
addDisposable(d);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(List<RoomCharmRankBean> roomCharmRankBeans) {
|
||||
MvpRef.get().getCharmRank(roomCharmRankBeans);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void changeSong(String roomId, String now_did) {
|
||||
api.changeSong(roomId, now_did, new BaseObserver<String>() {
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
addDisposable(d);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(String s) {
|
||||
MvpRef.get().changeSong();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void hostUserPit(String roomId, String pitNumber, String userId, String type) {
|
||||
api.hostUserPit(roomId, pitNumber, userId, type, new BaseObserver<String>() {
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
addDisposable(d);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(String string) {
|
||||
MvpRef.get().hostUserPit();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void quitRoom(String roomId, String userId) {
|
||||
api.quitRoom(roomId, userId, new BaseObserver<String>() {
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
addDisposable(d);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(String string) {
|
||||
MvpRef.get().quitRoom();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void userGuanz(String userId, String type) {
|
||||
api.userGuanz(userId,type, new BaseObserver<String>() {
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
addDisposable(d);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(String s) {
|
||||
MvpRef.get().userGuanzSuccess(s);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void acceptPk(String pkId, String type) {
|
||||
api.acceptPk(pkId, type, new BaseObserver<String>() {
|
||||
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
addDisposable(d);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(String s) {
|
||||
MvpRef.get().acceptPk();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,46 @@
|
||||
package com.example.moduleroom.presenter;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import com.example.moduleroom.contacts.RoomSettingContacts;
|
||||
import com.qxcm.moduleutil.bean.room.RoomSettingBean;
|
||||
import com.qxcm.moduleutil.http.BaseObserver;
|
||||
import com.qxcm.moduleutil.presenter.BasePresenter;
|
||||
|
||||
import io.reactivex.disposables.Disposable;
|
||||
|
||||
public class RoomSettingPresenter extends BasePresenter<RoomSettingContacts.View> implements RoomSettingContacts.IRoomPre{
|
||||
public RoomSettingPresenter(RoomSettingContacts.View view, Context context) {
|
||||
super(view, context);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void changeRoom(String roomId, String userId, int position, RoomSettingBean bean) {
|
||||
api.changeRoom(roomId, userId, new BaseObserver<String>() {
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
addDisposable(d);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(String s) {
|
||||
MvpRef.get().changeRoomSuccess(s, position,bean);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void changeRoomType(String roomId, String type) {
|
||||
api.changeRoomType(roomId, type, new BaseObserver<String>() {
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
addDisposable(d);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(String string) {
|
||||
MvpRef.get().changeRoomType(string);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,139 @@
|
||||
package com.example.moduleroom.presenter;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import com.example.moduleroom.contacts.RoomUserContacts;
|
||||
import com.qxcm.moduleutil.bean.UserInfo;
|
||||
import com.qxcm.moduleutil.http.BaseObserver;
|
||||
import com.qxcm.moduleutil.presenter.BasePresenter;
|
||||
|
||||
import io.reactivex.disposables.Disposable;
|
||||
|
||||
public class RoomUserPresenter extends BasePresenter<RoomUserContacts.View> implements RoomUserContacts.IEmotionRoomPre {
|
||||
public RoomUserPresenter(RoomUserContacts.View view, Context context) {
|
||||
super(view, context);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void getRoomUserInfo(String roomId, String userId) {
|
||||
api.getRoomUserInfo(roomId, userId, new BaseObserver<UserInfo>() {
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
addDisposable(d);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(UserInfo userInfo) {
|
||||
MvpRef.get().getRoomUserInfo(userInfo);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void downPit(String roomId, String pitNumber) {
|
||||
api.downPit(roomId, pitNumber, new BaseObserver<String>() {
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
addDisposable(d);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(String string) {
|
||||
MvpRef.get().downPit();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void hostUserPit(String roomId, String pitNumber, String userId, String type) {
|
||||
api.hostUserPit(roomId, pitNumber, userId, type, new BaseObserver<String>() {
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
addDisposable(d);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(String string) {
|
||||
MvpRef.get().hostUserPit();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void kickOutRoom(String roomId, String userId) {
|
||||
api.kickOutRoom(roomId, userId, new BaseObserver<String>() {
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
addDisposable(d);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(String string) {
|
||||
MvpRef.get().kickOutRoom();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void postHostAdd(String roomId, String userId, String type, String is_add) {
|
||||
api.postHostAdd(roomId, userId, type, is_add, new BaseObserver<String>() {
|
||||
|
||||
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
addDisposable(d);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(String s) {
|
||||
MvpRef.get().postHostAdd(s, type, is_add);
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setMutePit(String roomId, String user_id, String is_mute) {
|
||||
api.setMutePit(roomId, user_id, is_mute, new BaseObserver<String>() {
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
addDisposable(d);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(String string) {
|
||||
MvpRef.get().setMutePit(user_id, is_mute);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addBlackList(String userId) {
|
||||
api.addBlackList(userId, new BaseObserver<String>() {
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
addDisposable(d);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(String string) {
|
||||
MvpRef.get().addBlackList();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void userGuanz(String userId, String type) {
|
||||
api.userGuanz(userId,type, new BaseObserver<String>() {
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
addDisposable(d);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(String s) {
|
||||
MvpRef.get().userGuanzSuccess(s);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -4,9 +4,112 @@ import android.content.Context;
|
||||
|
||||
import com.example.moduleroom.contacts.SingSongContacts;
|
||||
import com.qxcm.moduleutil.base.BaseRoomPresenter;
|
||||
import com.qxcm.moduleutil.base.CommonAppContext;
|
||||
import com.qxcm.moduleutil.bean.room.RoomInfoResp;
|
||||
import com.qxcm.moduleutil.http.BaseObserver;
|
||||
import com.qxcm.moduleutil.rtc.AgoraManager;
|
||||
import com.qxcm.moduleutil.utils.SpUtil;
|
||||
|
||||
import io.reactivex.disposables.Disposable;
|
||||
|
||||
public class SingSongPresenter extends BaseRoomPresenter<SingSongContacts.View> implements SingSongContacts.IEmotionRoomPre {
|
||||
public SingSongPresenter(SingSongContacts.View view, Context context) {
|
||||
super(view, context);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void applyPit(String roomId, String pitNumber) {
|
||||
api.applyPit(roomId, pitNumber, new BaseObserver<String>() {
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
addDisposable(d);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(String s) {
|
||||
MvpRef.get().applyPit();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setMutePit(String roomId, String pitNumber, String is_mute) {
|
||||
api.setMutePit(roomId, pitNumber, is_mute, new BaseObserver<String>() {
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
addDisposable(d);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(String string) {
|
||||
MvpRef.get().setMutePit(pitNumber, is_mute);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setLockPit(String roomId, String pitNumber, String is_lock) {
|
||||
api.setLockPit(roomId, pitNumber, is_lock, new BaseObserver<String>() {
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
addDisposable(d);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(String string) {
|
||||
MvpRef.get().setLockPit(pitNumber, is_lock);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/// 请求房间信息,当pk同意的时候,获取对方房间信息,同时请求自己房间信息,做页面的更新 添加一type:1:请求对方信息 2:请求自己房间信息
|
||||
@Override
|
||||
public void postRoomInfo(String roomId, String number,int type) {
|
||||
api.postRoomInfo(roomId, new BaseObserver<RoomInfoResp>() {
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
addDisposable(d);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(RoomInfoResp roomInfoResp) {
|
||||
String appId = CommonAppContext.getInstance().getCurrentEnvironment().getSwSdkAppId();
|
||||
String token = roomInfoResp.getUser_info().getAgora_token(); // 如果启用了鉴权才需要
|
||||
String roomId = roomInfoResp.getRoom_info().getRoom_id(); // 房间 ID
|
||||
String rtm_token = roomInfoResp.getUser_info().getAgora_rtm_token();
|
||||
SpUtil.setRtmToken(rtm_token);
|
||||
int uid = SpUtil.getUserId(); // 0 表示由 Agora 自动生成 UID
|
||||
boolean enableMic = false; // 是否开启麦克风
|
||||
if (type==1) {
|
||||
if (roomInfoResp.getPk_info() != null) {
|
||||
if (number.equals("9")) {
|
||||
///添加多频道
|
||||
AgoraManager.getInstance(getView().getSelfActivity())
|
||||
.joinChannelEx(rtm_token, roomId, uid);
|
||||
}
|
||||
}
|
||||
MvpRef.get().postRoomInfoPk(roomInfoResp);
|
||||
}else {
|
||||
AgoraManager.getInstance(getView().getSelfActivity()).leaveChannelEx(roomInfoResp.getRoom_info().getLast_pk_room_id()+"", uid);
|
||||
MvpRef.get().postRoomInfo(roomInfoResp);
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void endPk(String pk_id, String type, String user_id) {
|
||||
api.endPk(pk_id, type, user_id, new BaseObserver<String>() {
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
addDisposable(d);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(String s) {
|
||||
MvpRef.get().endPk();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,110 @@
|
||||
package com.example.moduleroom.presenter;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import com.example.moduleroom.contacts.WheatContacts;
|
||||
import com.qxcm.moduleutil.bean.room.RoomApplyListBean;
|
||||
import com.qxcm.moduleutil.http.BaseModel;
|
||||
import com.qxcm.moduleutil.http.BaseObserver;
|
||||
import com.qxcm.moduleutil.presenter.BasePresenter;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import io.reactivex.disposables.Disposable;
|
||||
|
||||
public class WheatPresenter extends BasePresenter<WheatContacts.View> implements WheatContacts.IRoomPre {
|
||||
public WheatPresenter(WheatContacts.View view, Context context) {
|
||||
super(view, context);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void roomApplyListBean(String roomId) {
|
||||
api.roomApplyListBean(roomId, new BaseObserver<RoomApplyListBean>() {
|
||||
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
addDisposable(d);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(RoomApplyListBean roomApplyListBeans) {
|
||||
MvpRef.get().roomApplyListBean(roomApplyListBeans);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void clearApply(String roomId) {
|
||||
api.clearApply(roomId, new BaseObserver<String>() {
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
addDisposable(d);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(String s) {
|
||||
MvpRef.get().clearApply();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void agreePit(String roomId, String userId) {
|
||||
api.agreePit(roomId, userId, new BaseObserver<String>() {
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
addDisposable(d);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(String s) {
|
||||
MvpRef.get().agreePit();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void refusePit(String roomId, String userId) {
|
||||
api.refusePit(roomId, userId, new BaseObserver<String>() {
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
addDisposable(d);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(String s) {
|
||||
MvpRef.get().agreePit();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void helpApply(String roomId, String userId) {
|
||||
api.helpApply(roomId, userId, new BaseObserver<String>() {
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
addDisposable(d);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(String s) {
|
||||
MvpRef.get().agreePit();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void applyPit(String roomId, String pitNumber) {
|
||||
api.applyPit(roomId, pitNumber, new BaseObserver<String>() {
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
addDisposable(d);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(String s) {
|
||||
MvpRef.get().applyPit();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -15,7 +15,8 @@
|
||||
android:animateLayoutChanges="true"
|
||||
android:clipChildren="false"
|
||||
android:clipToPadding="false"
|
||||
android:keepScreenOn="true">
|
||||
android:keepScreenOn="true"
|
||||
android:background="@color/transparent">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/iv_bg"
|
||||
@@ -25,6 +26,7 @@
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
android:src="@mipmap/room_bj"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<ImageView
|
||||
@@ -36,7 +38,8 @@
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
/>
|
||||
|
||||
|
||||
<include layout="@layout/room_top"
|
||||
@@ -45,9 +48,11 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dp_50"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
android:clipChildren="false"
|
||||
android:clipToPadding="false"
|
||||
/>
|
||||
|
||||
<com.qxcm.moduleutil.widget.ScrollViewPager
|
||||
<FrameLayout
|
||||
android:id="@+id/vp_room_pager"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
@@ -59,23 +64,23 @@
|
||||
app:layout_constraintTop_toBottomOf="@id/room_top" />
|
||||
|
||||
|
||||
<com.qxcm.moduleutil.widget.MusicRotationView
|
||||
android:id="@+id/rl_music_min_view"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintVertical_bias="0.35"
|
||||
tools:visibility="visible" />
|
||||
<!-- <com.qxcm.moduleutil.widget.MusicRotationView-->
|
||||
<!-- android:id="@+id/rl_music_min_view"-->
|
||||
<!-- android:layout_width="wrap_content"-->
|
||||
<!-- android:layout_height="wrap_content"-->
|
||||
<!-- android:visibility="gone"-->
|
||||
<!-- app:layout_constraintBottom_toBottomOf="parent"-->
|
||||
<!-- app:layout_constraintLeft_toLeftOf="parent"-->
|
||||
<!-- app:layout_constraintTop_toTopOf="parent"-->
|
||||
<!-- app:layout_constraintVertical_bias="0.35"-->
|
||||
<!-- tools:visibility="visible" />-->
|
||||
|
||||
<com.qxcm.moduleutil.widget.MusicView
|
||||
android:id="@+id/music_view"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:visibility="gone"
|
||||
tools:visibility="visible" />
|
||||
<!-- <com.qxcm.moduleutil.widget.MusicView-->
|
||||
<!-- android:id="@+id/music_view"-->
|
||||
<!-- android:layout_width="match_parent"-->
|
||||
<!-- android:layout_height="match_parent"-->
|
||||
<!-- android:visibility="gone"-->
|
||||
<!-- tools:visibility="visible" />-->
|
||||
|
||||
<com.qxcm.moduleutil.widget.AvatarFrameView
|
||||
android:id="@+id/svga_gift"
|
||||
@@ -86,6 +91,15 @@
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<com.qxcm.moduleutil.widget.AvatarFrameView
|
||||
android:id="@+id/svga_zuoji"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<!--礼物连送图标-->
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/gift_show_layout"
|
||||
|
||||
59
moduleroom/src/main/res/layout/dialog_card_relation.xml
Normal file
59
moduleroom/src/main/res/layout/dialog_card_relation.xml
Normal file
@@ -0,0 +1,59 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<layout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
>
|
||||
|
||||
<data>
|
||||
|
||||
</data>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="456dp"
|
||||
android:paddingStart="@dimen/dp_16"
|
||||
android:paddingEnd="@dimen/dp_16"
|
||||
android:background="@drawable/bg_room_gift">
|
||||
<TextView
|
||||
android:id="@+id/tv_title"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="8dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:layout_marginBottom="8dp"
|
||||
android:text="选择内容"
|
||||
android:textSize="@dimen/sp_16"
|
||||
android:textColor="@color/white"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
/>
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/recycle_view"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:layout_marginTop="8dp"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tv_title"
|
||||
app:layout_constraintBottom_toTopOf="@+id/tv_wheat_qd"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_wheat_qd"
|
||||
android:layout_width="@dimen/dp_158"
|
||||
android:layout_height="@dimen/dp_42"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
android:background="@drawable/bg_r53_0dffb9"
|
||||
android:text="确定"
|
||||
android:textSize="@dimen/sp_14"
|
||||
android:gravity="center"
|
||||
android:textColor="@color/color_FF333333"
|
||||
android:layout_marginBottom="@dimen/dp_14"
|
||||
/>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
</layout>
|
||||
@@ -0,0 +1,42 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:padding="16dp">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_minimize"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="48dp"
|
||||
android:gravity="center"
|
||||
android:text="最小化"
|
||||
android:textSize="16sp" />
|
||||
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1dp"
|
||||
android:background="#E0E0E0" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_exit_room"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="48dp"
|
||||
android:gravity="center"
|
||||
android:text="退出房间"
|
||||
android:textSize="16sp" />
|
||||
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1dp"
|
||||
android:background="#E0E0E0" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_cancel"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="48dp"
|
||||
android:gravity="center"
|
||||
android:text="取消"
|
||||
android:textColor="#FF0000"
|
||||
android:textSize="16sp" />
|
||||
</LinearLayout>
|
||||
@@ -0,0 +1,70 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="@dimen/dp_270"
|
||||
android:layout_height="@dimen/dp_100"
|
||||
android:orientation="vertical"
|
||||
android:padding="16dp"
|
||||
android:background="@drawable/bg_r16_fff">
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="直播对战设置"
|
||||
android:textSize="@dimen/sp_16"
|
||||
android:textColor="@color/color_FF333333"
|
||||
android:textStyle="bold"
|
||||
android:layout_gravity="center"
|
||||
android:gravity="center"
|
||||
android:padding="8dp"/>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
android:layout_gravity="center"
|
||||
android:gravity="center"
|
||||
android:layout_marginTop="@dimen/dp_12">
|
||||
|
||||
<TextView
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:text="不再PK邀请"
|
||||
android:textSize="@dimen/sp_14"
|
||||
android:textColor="@color/color_FF333333"/>
|
||||
|
||||
<Switch
|
||||
android:id="@+id/switch_friend_invitation"
|
||||
android:layout_width="@dimen/dp_37"
|
||||
android:layout_height="@dimen/dp_20"
|
||||
android:background="@drawable/room_tuner_selector_switch"
|
||||
android:thumb="@android:color/transparent"
|
||||
tools:ignore="UseSwitchCompatOrMaterialXml" />
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
android:layout_marginTop="@dimen/dp_15"
|
||||
android:visibility="gone">
|
||||
|
||||
<TextView
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:text="不再接收推荐邀请"
|
||||
android:textSize="@dimen/sp_14"
|
||||
android:textColor="@color/color_FF333333"/>
|
||||
|
||||
<Switch
|
||||
android:id="@+id/switch_recommend_invitation"
|
||||
android:layout_width="@dimen/dp_37"
|
||||
android:layout_height="@dimen/dp_20"
|
||||
android:background="@drawable/room_tuner_selector_switch"
|
||||
android:thumb="@android:color/transparent"
|
||||
tools:ignore="UseSwitchCompatOrMaterialXml" />
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
100
moduleroom/src/main/res/layout/dialog_publish_comment.xml
Normal file
100
moduleroom/src/main/res/layout/dialog_publish_comment.xml
Normal file
@@ -0,0 +1,100 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<layout xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
|
||||
<data></data>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@drawable/bg_r16_fff"
|
||||
android:orientation="vertical"
|
||||
android:padding="16dp">
|
||||
|
||||
<!-- 标题栏 -->
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center_vertical"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_title"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:gravity="center"
|
||||
android:text="发头条"
|
||||
android:textColor="@color/black"
|
||||
android:textSize="16sp"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/iv_close"
|
||||
android:layout_width="24dp"
|
||||
android:layout_height="24dp"
|
||||
android:layout_marginStart="8dp"
|
||||
android:src="@mipmap/gb" />
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
<com.qxcm.moduleutil.widget.ClearEditText
|
||||
android:id="@+id/ed_room_name"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/dp_44"
|
||||
android:layout_marginTop="@dimen/dp_35"
|
||||
android:background="@drawable/bg_r100_hui"
|
||||
android:hint="请输入内容(最多15字)"
|
||||
android:inputType="numberDecimal"
|
||||
android:maxLength="10"
|
||||
android:paddingStart="10dp"
|
||||
android:paddingEnd="@dimen/dp_10"
|
||||
android:singleLine="true"
|
||||
android:text=""
|
||||
android:textColor="#333333"
|
||||
android:textSize="14sp" />
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:layout_marginTop="@dimen/dp_10"
|
||||
android:gravity="center|left"
|
||||
android:orientation="vertical">
|
||||
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_time"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="@dimen/dp_18"
|
||||
android:layout_marginStart="@dimen/dp_12"
|
||||
android:gravity="center"
|
||||
android:text="5分钟"
|
||||
android:textColor="@color/color_FF333333"
|
||||
android:textSize="12sp" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="@dimen/dp_18"
|
||||
android:layout_marginStart="@dimen/dp_18"
|
||||
android:layout_toRightOf="@+id/tv_time"
|
||||
android:drawableLeft="@mipmap/jinb"
|
||||
android:drawablePadding="5dp"
|
||||
android:gravity="center"
|
||||
android:text="40"
|
||||
android:textColor="@color/color_FF333333"
|
||||
android:textSize="12sp" />
|
||||
</RelativeLayout>
|
||||
<!-- 发布按钮 -->
|
||||
<Button
|
||||
android:id="@+id/btn_action"
|
||||
android:layout_width="221dp"
|
||||
android:layout_height="47dp"
|
||||
android:layout_marginTop="@dimen/dp_30"
|
||||
android:layout_marginBottom="@dimen/dp_20"
|
||||
android:background="@drawable/cs"
|
||||
android:layout_gravity="center"
|
||||
android:text="发布"
|
||||
android:textColor="@color/color_FF333333"
|
||||
android:textSize="16sp" />
|
||||
</LinearLayout>
|
||||
</layout>
|
||||
89
moduleroom/src/main/res/layout/dialog_room_auction.xml
Normal file
89
moduleroom/src/main/res/layout/dialog_room_auction.xml
Normal file
@@ -0,0 +1,89 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="@dimen/dp_265"
|
||||
android:layout_height="@dimen/dp_250"
|
||||
android:background="@mipmap/auction_cg"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
|
||||
<com.qxcm.moduleutil.widget.GifAvatarOvalView
|
||||
android:id="@+id/avatar1"
|
||||
android:layout_width="@dimen/dp_68"
|
||||
android:layout_height="@dimen/dp_68"
|
||||
android:layout_marginStart="@dimen/dp_66"
|
||||
android:layout_marginTop="@dimen/dp_73"
|
||||
android:src="@mipmap/default_avatar"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_name1"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="@dimen/dp_21"
|
||||
android:ellipsize="start"
|
||||
android:maxLines="1"
|
||||
android:text="用户名"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="@dimen/sp_14"
|
||||
app:layout_constraintEnd_toEndOf="@+id/avatar1"
|
||||
app:layout_constraintStart_toStartOf="@+id/avatar1"
|
||||
app:layout_constraintTop_toBottomOf="@+id/avatar1" />
|
||||
|
||||
<com.qxcm.moduleutil.widget.GifAvatarOvalView
|
||||
android:id="@+id/avatar2"
|
||||
android:layout_width="@dimen/dp_68"
|
||||
android:layout_height="@dimen/dp_68"
|
||||
android:layout_marginTop="@dimen/dp_73"
|
||||
android:layout_marginEnd="@dimen/dp_68"
|
||||
android:src="@mipmap/default_avatar"
|
||||
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_name2"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="@dimen/dp_21"
|
||||
android:ellipsize="start"
|
||||
android:maxLines="1"
|
||||
android:text="用户名"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="@dimen/sp_14"
|
||||
app:layout_constraintEnd_toEndOf="@+id/avatar2"
|
||||
app:layout_constraintStart_toStartOf="@+id/avatar2"
|
||||
app:layout_constraintTop_toBottomOf="@+id/avatar2" />
|
||||
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_57"
|
||||
android:background="@mipmap/bg_wz"
|
||||
android:orientation="vertical"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_tname"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center"
|
||||
android:layout_marginTop="@dimen/dp_5"
|
||||
android:rotation="-6.9"
|
||||
android:text="情侣关系竞拍成功"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="@dimen/sp_16" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
262
moduleroom/src/main/res/layout/dialog_room_bid_list.xml
Normal file
262
moduleroom/src/main/res/layout/dialog_room_bid_list.xml
Normal file
@@ -0,0 +1,262 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<layout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools">
|
||||
|
||||
<data>
|
||||
|
||||
</data>
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="@mipmap/room_rank_bj">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical"
|
||||
android:paddingTop="@dimen/dp_142"
|
||||
|
||||
>
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
android:paddingBottom="10dp">
|
||||
|
||||
<View
|
||||
android:id="@+id/view_top2"
|
||||
android:layout_width="@dimen/dp_70"
|
||||
android:layout_height="@dimen/dp_70"
|
||||
android:layout_marginTop="@dimen/dp_24"
|
||||
app:layout_constraintEnd_toStartOf="@+id/view_top1"
|
||||
app:layout_constraintHorizontal_chainStyle="spread"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="@id/view_top1" />
|
||||
|
||||
<com.qxcm.moduleutil.widget.GifAvatarOvalView
|
||||
android:id="@+id/room_rank_top2_headIcon"
|
||||
android:layout_width="@dimen/dp_58"
|
||||
android:layout_height="@dimen/dp_58"
|
||||
app:layout_constraintBottom_toBottomOf="@id/view_top2"
|
||||
app:layout_constraintEnd_toEndOf="@id/view_top2"
|
||||
app:layout_constraintHorizontal_bias="0.5"
|
||||
app:layout_constraintStart_toStartOf="@id/view_top2"
|
||||
app:layout_constraintTop_toTopOf="@id/view_top2"
|
||||
app:layout_constraintVertical_bias="0.9"
|
||||
app:riv_oval="true" />
|
||||
|
||||
<ImageView
|
||||
android:layout_width="@dimen/dp_63"
|
||||
android:layout_height="@dimen/dp_63"
|
||||
android:background="@mipmap/rank_im_t2"
|
||||
app:layout_constraintBottom_toBottomOf="@id/view_top2"
|
||||
app:layout_constraintEnd_toEndOf="@id/view_top2"
|
||||
app:layout_constraintStart_toStartOf="@id/view_top2"
|
||||
app:layout_constraintTop_toTopOf="@id/view_top2" />
|
||||
|
||||
|
||||
<TextView
|
||||
android:id="@+id/room_top2_name"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="10dp"
|
||||
android:ellipsize="end"
|
||||
android:gravity="center"
|
||||
android:maxLines="1"
|
||||
tools:text="sdfdfgfg"
|
||||
android:textColor="@color/color_white"
|
||||
android:textSize="14sp"
|
||||
app:layout_constraintEnd_toEndOf="@id/view_top2"
|
||||
app:layout_constraintStart_toStartOf="@id/view_top2"
|
||||
app:layout_constraintTop_toBottomOf="@+id/view_top2" />
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/ll_vip2"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="@dimen/dp_15"
|
||||
android:gravity="center_vertical"
|
||||
android:orientation="horizontal"
|
||||
app:layout_constraintEnd_toEndOf="@id/view_top2"
|
||||
app:layout_constraintStart_toStartOf="@id/view_top2"
|
||||
app:layout_constraintTop_toBottomOf="@id/room_top2_name" />
|
||||
|
||||
|
||||
<TextView
|
||||
android:id="@+id/room_head_top2_label"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="34dp"
|
||||
android:drawableStart="@mipmap/rank_h"
|
||||
android:drawablePadding="@dimen/dp_4"
|
||||
android:gravity="center"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="@dimen/sp_8"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/ll_vip2"
|
||||
app:layout_constraintTop_toBottomOf="@+id/ll_vip2"
|
||||
app:layout_constraintEnd_toEndOf="@id/ll_vip2"
|
||||
app:layout_constraintStart_toStartOf="@id/ll_vip2"
|
||||
tools:text="00000" />
|
||||
|
||||
|
||||
<View
|
||||
android:id="@+id/view_top1"
|
||||
android:layout_width="@dimen/dp_64"
|
||||
android:layout_height="@dimen/dp_64"
|
||||
android:layout_marginTop="@dimen/dp_4"
|
||||
app:layout_constraintEnd_toStartOf="@+id/view_top3"
|
||||
app:layout_constraintStart_toEndOf="@id/view_top2"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<View
|
||||
android:id="@+id/view_top3"
|
||||
android:layout_width="@dimen/dp_51"
|
||||
android:layout_height="@dimen/dp_51"
|
||||
android:layout_marginTop="@dimen/dp_30"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toEndOf="@id/view_top1"
|
||||
app:layout_constraintTop_toTopOf="@id/view_top1" />
|
||||
|
||||
<com.qxcm.moduleutil.widget.GifAvatarOvalView
|
||||
android:id="@+id/room_rank_top1_headIcon"
|
||||
android:layout_width="@dimen/dp_67"
|
||||
android:layout_height="@dimen/dp_67"
|
||||
app:layout_constraintBottom_toBottomOf="@id/view_top1"
|
||||
app:layout_constraintEnd_toEndOf="@id/view_top1"
|
||||
app:layout_constraintHorizontal_bias="0.5"
|
||||
app:layout_constraintStart_toStartOf="@id/view_top1"
|
||||
app:layout_constraintTop_toTopOf="@id/view_top1"
|
||||
app:layout_constraintVertical_bias="0.9"
|
||||
app:riv_oval="true" />
|
||||
|
||||
<ImageView
|
||||
android:layout_width="@dimen/dp_80"
|
||||
android:layout_height="@dimen/dp_80"
|
||||
android:background="@mipmap/rank_im_t1"
|
||||
app:layout_constraintBottom_toBottomOf="@id/view_top1"
|
||||
app:layout_constraintEnd_toEndOf="@id/view_top1"
|
||||
app:layout_constraintStart_toStartOf="@id/view_top1"
|
||||
app:layout_constraintTop_toTopOf="@id/view_top1" />
|
||||
|
||||
<com.qxcm.moduleutil.widget.GifAvatarOvalView
|
||||
android:id="@+id/room_rank_top3_headIcon"
|
||||
android:layout_width="@dimen/dp_58"
|
||||
android:layout_height="@dimen/dp_58"
|
||||
app:layout_constraintBottom_toBottomOf="@id/view_top3"
|
||||
app:layout_constraintEnd_toEndOf="@id/view_top3"
|
||||
app:layout_constraintHorizontal_bias="0.5"
|
||||
app:layout_constraintStart_toStartOf="@id/view_top3"
|
||||
app:layout_constraintTop_toTopOf="@id/view_top3"
|
||||
app:layout_constraintVertical_bias="0.9"
|
||||
app:riv_oval="true" />
|
||||
|
||||
<ImageView
|
||||
android:layout_width="@dimen/dp_64"
|
||||
android:layout_height="@dimen/dp_64"
|
||||
android:background="@mipmap/rank_im_t3"
|
||||
app:layout_constraintBottom_toBottomOf="@id/view_top3"
|
||||
app:layout_constraintEnd_toEndOf="@id/view_top3"
|
||||
app:layout_constraintStart_toStartOf="@id/view_top3"
|
||||
app:layout_constraintTop_toTopOf="@id/view_top3" />
|
||||
|
||||
|
||||
<TextView
|
||||
android:id="@+id/room_top1_name"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dp_26"
|
||||
android:ellipsize="end"
|
||||
android:gravity="center"
|
||||
android:maxLength="6"
|
||||
android:maxLines="1"
|
||||
tools:text="111111"
|
||||
android:textColor="@color/color_white"
|
||||
android:textSize="14sp"
|
||||
app:layout_constraintEnd_toEndOf="@id/view_top1"
|
||||
app:layout_constraintStart_toStartOf="@id/view_top1"
|
||||
app:layout_constraintTop_toBottomOf="@+id/view_top1" />
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/ll_vip1"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="@dimen/dp_15"
|
||||
android:gravity="center_vertical"
|
||||
android:orientation="horizontal"
|
||||
app:layout_constraintEnd_toEndOf="@id/view_top1"
|
||||
app:layout_constraintStart_toStartOf="@id/view_top1"
|
||||
app:layout_constraintTop_toBottomOf="@id/room_top1_name" />
|
||||
|
||||
|
||||
<TextView
|
||||
android:id="@+id/room_head_top1_label"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:drawableStart="@mipmap/rank_h"
|
||||
android:gravity="center"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="@dimen/sp_8"
|
||||
app:layout_constraintEnd_toEndOf="@id/view_top1"
|
||||
app:layout_constraintStart_toStartOf="@id/view_top1"
|
||||
app:layout_constraintTop_toBottomOf="@+id/ll_vip1"
|
||||
tools:text="00000" />
|
||||
|
||||
|
||||
<TextView
|
||||
android:id="@+id/room_top3_name"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dp_14"
|
||||
android:ellipsize="end"
|
||||
android:gravity="center"
|
||||
android:maxLength="6"
|
||||
android:maxLines="1"
|
||||
tools:text="sdfdfgfg"
|
||||
android:textColor="@color/color_white"
|
||||
android:textSize="14sp"
|
||||
app:layout_constraintEnd_toEndOf="@id/view_top3"
|
||||
app:layout_constraintStart_toStartOf="@id/view_top3"
|
||||
app:layout_constraintTop_toBottomOf="@id/view_top3" />
|
||||
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/ll_vip3"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="@dimen/dp_15"
|
||||
android:gravity="center_vertical"
|
||||
android:orientation="horizontal"
|
||||
app:layout_constraintEnd_toEndOf="@id/view_top3"
|
||||
app:layout_constraintStart_toStartOf="@id/view_top3"
|
||||
app:layout_constraintTop_toBottomOf="@id/room_top3_name" />
|
||||
|
||||
|
||||
<TextView
|
||||
android:id="@+id/room_head_top3_label"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:drawableStart="@mipmap/rank_h"
|
||||
android:gravity="center"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="@dimen/sp_8"
|
||||
app:layout_constraintEnd_toEndOf="@id/view_top3"
|
||||
app:layout_constraintStart_toStartOf="@id/view_top3"
|
||||
app:layout_constraintTop_toBottomOf="@+id/ll_vip3"
|
||||
tools:text="00000" />
|
||||
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
|
||||
<com.qxcm.moduleutil.widget.RankRecycleView
|
||||
android:id="@+id/rankRecycleView"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:overScrollMode="never"
|
||||
tools:listitem="@layout/item_ranking_auction">
|
||||
|
||||
</com.qxcm.moduleutil.widget.RankRecycleView>
|
||||
|
||||
</LinearLayout>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
</layout>
|
||||
@@ -0,0 +1,59 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<layout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
|
||||
<data>
|
||||
|
||||
</data>
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/cl"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/dp_54"
|
||||
android:background="@mipmap/setting_t"
|
||||
android:layout_marginStart="@dimen/dp_16"
|
||||
android:layout_marginEnd="@dimen/dp_16"
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_title"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="@color/color_FF333333"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
android:layout_marginTop="@dimen/dp_25"
|
||||
android:layout_marginBottom="@dimen/dp_13"
|
||||
app:layout_constraintEnd_toStartOf="@+id/im"
|
||||
android:textSize="@dimen/sp_12"
|
||||
android:text="立即发送头条"
|
||||
/>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/im"
|
||||
android:layout_width="@dimen/dp_14"
|
||||
android:layout_height="@dimen/dp_14"
|
||||
app:layout_constraintTop_toTopOf="@+id/tv_title"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/tv_title"
|
||||
android:layout_marginEnd="@dimen/dp_14"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
|
||||
app:srcCompat="@drawable/detail_icon_go" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/recycle_view"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@drawable/bg_r16_tb_ffffff"
|
||||
android:layout_marginTop="@dimen/dp_5"
|
||||
android:padding="@dimen/dp_16"
|
||||
app:layout_constraintTop_toBottomOf="@+id/cl"/>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
</layout>
|
||||
63
moduleroom/src/main/res/layout/dialog_room_wheat_gift.xml
Normal file
63
moduleroom/src/main/res/layout/dialog_room_wheat_gift.xml
Normal file
@@ -0,0 +1,63 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<layout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
|
||||
<data>
|
||||
|
||||
</data>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="@mipmap/room_dialog_bj"
|
||||
android:paddingTop="@dimen/dp_16"
|
||||
android:paddingStart="@dimen/dp_16">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_1"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
android:text="设置插队礼物"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="@dimen/sp_16"
|
||||
/>
|
||||
|
||||
<androidx.viewpager.widget.ViewPager
|
||||
android:id="@+id/view_pager"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/dp_240"
|
||||
android:paddingTop="@dimen/dp_12"
|
||||
app:layout_constraintTop_toBottomOf="@id/tv_1"
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_wheat_qx"
|
||||
android:layout_width="@dimen/dp_95"
|
||||
android:layout_height="@dimen/dp_42"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
android:background="@drawable/bg_r53_33333"
|
||||
android:text="取消"
|
||||
android:textSize="@dimen/sp_14"
|
||||
android:gravity="center"
|
||||
android:textColor="@color/white"
|
||||
android:layout_marginBottom="@dimen/dp_44"
|
||||
android:layout_marginStart="@dimen/dp_28"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_wheat_qd"
|
||||
android:layout_width="@dimen/dp_158"
|
||||
android:layout_height="@dimen/dp_42"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
android:background="@drawable/bg_r53_0dffb9"
|
||||
android:layout_marginEnd="@dimen/dp_38"
|
||||
android:text="确定"
|
||||
android:textSize="@dimen/sp_14"
|
||||
android:gravity="center"
|
||||
android:textColor="@color/color_FF333333"
|
||||
android:layout_marginBottom="@dimen/dp_44"
|
||||
/>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
</layout>
|
||||
80
moduleroom/src/main/res/layout/dialog_with_countdown.xml
Normal file
80
moduleroom/src/main/res/layout/dialog_with_countdown.xml
Normal file
@@ -0,0 +1,80 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@mipmap/auction_sb"
|
||||
android:padding="24dp">
|
||||
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/ll"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical"
|
||||
android:layout_gravity="center"
|
||||
android:gravity="center"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent">
|
||||
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_title"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center"
|
||||
android:paddingBottom="8dp"
|
||||
android:text="竞拍结束"
|
||||
android:textColor="@color/color_FF333333"
|
||||
android:textSize="@dimen/sp_16"
|
||||
android:textStyle="bold"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_message"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="本次竞拍已结束,期待您的下次参与"
|
||||
android:textColor="@color/color_FF333333"
|
||||
android:textSize="16sp"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="@dimen/dp_178"
|
||||
android:layout_height="@dimen/dp_42"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:layout_marginTop="16dp"
|
||||
android:background="@drawable/cs"
|
||||
android:gravity="center"
|
||||
android:orientation="horizontal"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/ll"
|
||||
app:layout_constraintStart_toStartOf="parent">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/btn_know"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="@dimen/dp_21"
|
||||
android:text="知道了"
|
||||
android:textColor="@color/color_FF333333"
|
||||
android:textSize="@dimen/sp_14" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_countdown"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="8dp"
|
||||
android:text="3"
|
||||
android:textSize="16sp" />
|
||||
</LinearLayout>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
83
moduleroom/src/main/res/layout/fragment_muisc_song.xml
Normal file
83
moduleroom/src/main/res/layout/fragment_muisc_song.xml
Normal file
@@ -0,0 +1,83 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<layout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
|
||||
<data>
|
||||
|
||||
</data>
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:fitsSystemWindows="false">
|
||||
<LinearLayout
|
||||
android:id="@+id/l"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/dp_32"
|
||||
android:layout_marginLeft="@dimen/dp_20"
|
||||
android:layout_marginTop="@dimen/dp_6"
|
||||
android:layout_marginRight="@dimen/dp_20"
|
||||
android:layout_marginBottom="@dimen/dp_6"
|
||||
android:layout_weight="1"
|
||||
android:background="@drawable/bg_r99_eff2f8"
|
||||
android:gravity="center_vertical"
|
||||
android:orientation="horizontal"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/iv_close"
|
||||
android:layout_width="@dimen/dp_18"
|
||||
android:layout_height="@dimen/dp_18"
|
||||
android:layout_marginLeft="@dimen/dp_11"
|
||||
android:layout_marginRight="@dimen/dp_7"
|
||||
android:src="@drawable/index_level_search" />
|
||||
|
||||
<EditText
|
||||
android:id="@+id/edit_query"
|
||||
android:layout_width="@dimen/dp_0"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1"
|
||||
android:background="@android:color/transparent"
|
||||
android:hint="输入相关的主播名、房间名"
|
||||
android:maxLength="10"
|
||||
android:singleLine="true"
|
||||
android:textColor="#333333"
|
||||
android:textColorHint="@color/color_FF999999"
|
||||
android:textSize="@dimen/sp_12" />
|
||||
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<com.scwang.smartrefresh.layout.SmartRefreshLayout
|
||||
android:id="@+id/smart_refresh_layout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/l"
|
||||
app:srlEnableLoadMore="true"
|
||||
app:srlEnableRefresh="false">
|
||||
|
||||
<androidx.core.widget.NestedScrollView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical">
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/recycle_view"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent" />
|
||||
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/dp_40" />
|
||||
</LinearLayout>
|
||||
</androidx.core.widget.NestedScrollView>
|
||||
</com.scwang.smartrefresh.layout.SmartRefreshLayout>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
</layout>
|
||||
93
moduleroom/src/main/res/layout/fragment_pk_result_dialog.xml
Normal file
93
moduleroom/src/main/res/layout/fragment_pk_result_dialog.xml
Normal file
@@ -0,0 +1,93 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<layout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
|
||||
<data>
|
||||
|
||||
</data>
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
>
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/cl_pk"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/dp_248"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
android:background="@mipmap/pk_sl">
|
||||
|
||||
|
||||
<com.qxcm.moduleutil.widget.GifAvatarOvalView
|
||||
android:id="@+id/user_avatar1"
|
||||
android:layout_width="@dimen/dp_50"
|
||||
android:layout_height="@dimen/dp_50"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
android:layout_marginStart="@dimen/dp_34"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:riv_oval="true"
|
||||
android:src="@mipmap/default_avatar"/>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/iv_start1"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintStart_toStartOf="@+id/user_avatar1"
|
||||
app:layout_constraintEnd_toEndOf="@+id/user_avatar1"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/user_avatar1"
|
||||
android:src="@mipmap/victory"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_name1"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintStart_toEndOf="@+id/user_avatar1"
|
||||
app:layout_constraintTop_toTopOf="@+id/user_avatar1"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/user_avatar1"
|
||||
android:text="名称"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="@dimen/sp_12"/>
|
||||
|
||||
|
||||
|
||||
<com.qxcm.moduleutil.widget.GifAvatarOvalView
|
||||
android:id="@+id/user_avatar2"
|
||||
android:layout_width="@dimen/dp_50"
|
||||
android:layout_height="@dimen/dp_50"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
android:layout_marginEnd="@dimen/dp_34"
|
||||
android:layout_marginBottom="@dimen/dp_39"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:riv_oval="true"
|
||||
android:src="@mipmap/default_avatar"/>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/iv_start2"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintStart_toStartOf="@+id/user_avatar2"
|
||||
app:layout_constraintEnd_toEndOf="@+id/user_avatar2"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/user_avatar2"
|
||||
android:src="@mipmap/victory"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_name2"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintEnd_toStartOf="@+id/user_avatar2"
|
||||
app:layout_constraintTop_toTopOf="@+id/user_avatar2"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/user_avatar2"
|
||||
android:text="名称"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="@dimen/sp_12"/>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
</layout>
|
||||
67
moduleroom/src/main/res/layout/fragment_pk_time_fragment.xml
Normal file
67
moduleroom/src/main/res/layout/fragment_pk_time_fragment.xml
Normal file
@@ -0,0 +1,67 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<layout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
|
||||
<data>
|
||||
|
||||
</data>
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="456dp"
|
||||
android:paddingStart="@dimen/dp_16"
|
||||
android:paddingEnd="@dimen/dp_16"
|
||||
android:background="@drawable/bg_r16_tb_ffffff">
|
||||
<TextView
|
||||
android:id="@+id/tv_title"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="8dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:layout_marginBottom="8dp"
|
||||
android:text="请选择PK时长"
|
||||
android:textSize="@dimen/sp_16"
|
||||
android:textColor="@color/color_FF333333"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
/>
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/recycle_view"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:layout_marginTop="8dp"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tv_title"
|
||||
app:layout_constraintBottom_toTopOf="@+id/tv_wheat_qd"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent" />
|
||||
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_wheat_cancel"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toStartOf="@+id/tv_wheat_qd"
|
||||
android:background="@mipmap/cancel"
|
||||
android:layout_marginBottom="@dimen/dp_46"
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_wheat_qd"
|
||||
android:layout_width="@dimen/dp_158"
|
||||
android:layout_height="@dimen/dp_42"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
android:background="@drawable/bg_r53_0dffb9"
|
||||
app:layout_constraintTop_toTopOf="@+id/tv_wheat_cancel"
|
||||
android:text="确定"
|
||||
android:textSize="@dimen/sp_14"
|
||||
android:gravity="center"
|
||||
android:textColor="@color/color_FF333333"
|
||||
/>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
</layout>
|
||||
24
moduleroom/src/main/res/layout/fragment_relationship.xml
Normal file
24
moduleroom/src/main/res/layout/fragment_relationship.xml
Normal file
@@ -0,0 +1,24 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<layout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
tools:context=".fragment.RelationshipFragment">
|
||||
<data>
|
||||
|
||||
</data>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/dp_120"
|
||||
>
|
||||
<com.zhpan.bannerview.BannerViewPager
|
||||
android:id="@+id/banner_view_pager"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
|
||||
/>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<!-- app:bvp_indicator_visibility="gone"-->
|
||||
</layout>
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user