1:完成cp效果展示,

This commit is contained in:
2025-11-20 09:40:53 +08:00
parent 68dc7574bc
commit 57b8ded0eb
40 changed files with 572 additions and 217 deletions

View File

@@ -122,6 +122,7 @@ public class GiftPackAdapter extends BaseAdapter {
viewHolder.ivDownOn = (ImageView) convertView.findViewById(R.id.iv_down_on); viewHolder.ivDownOn = (ImageView) convertView.findViewById(R.id.iv_down_on);
viewHolder.cl_iv_down_on = (ConstraintLayout) convertView.findViewById(R.id.cl_iv_down_on); viewHolder.cl_iv_down_on = (ConstraintLayout) convertView.findViewById(R.id.cl_iv_down_on);
viewHolder.integral = (TextView) convertView.findViewById(R.id.integral); viewHolder.integral = (TextView) convertView.findViewById(R.id.integral);
viewHolder.im_heart = (ImageView) convertView.findViewById(R.id.im_heartssss);
convertView.setTag(viewHolder); convertView.setTag(viewHolder);
} else { } else {
viewHolder = (GiftPackAdapter.ViewHolder) convertView.getTag(); viewHolder = (GiftPackAdapter.ViewHolder) convertView.getTag();
@@ -168,5 +169,6 @@ public class GiftPackAdapter extends BaseAdapter {
public TextView tv_gift_change_love_values; public TextView tv_gift_change_love_values;
public ImageView ivDownOn; public ImageView ivDownOn;
public ConstraintLayout cl_iv_down_on; public ConstraintLayout cl_iv_down_on;
public ImageView im_heart;
} }
} }

View File

@@ -1,6 +1,7 @@
package com.xscm.moduleutil.adapter; package com.xscm.moduleutil.adapter;
import static android.view.View.GONE; import static android.view.View.GONE;
import static android.view.View.VISIBLE;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.content.Context; import android.content.Context;
@@ -122,14 +123,16 @@ public class GiftRoomAdapter extends BaseAdapter {
if (convertView == null) { if (convertView == null) {
convertView = inflater.inflate(R.layout.item_gift_room, parent, false); convertView = inflater.inflate(R.layout.item_gift_room, parent, false);
viewHolder = new ViewHolder(); viewHolder = new ViewHolder();
viewHolder.item_layout = (ConstraintLayout) convertView.findViewById(R.id.cl_gift);
viewHolder.cl_iv_down_on = (ConstraintLayout) convertView.findViewById(R.id.cl_iv_down_on);
viewHolder.tv_gift_name = (TextView) convertView.findViewById(R.id.tv_gift_name); viewHolder.tv_gift_name = (TextView) convertView.findViewById(R.id.tv_gift_name);
viewHolder.tv_gift_price = (TextView) convertView.findViewById(R.id.tv_gift_price); viewHolder.tv_gift_price = (TextView) convertView.findViewById(R.id.tv_gift_price);
viewHolder.iv_gift_pic = (ImageView) convertView.findViewById(R.id.iv_gift_pic); viewHolder.iv_gift_pic = (ImageView) convertView.findViewById(R.id.iv_gift_pic);
viewHolder.item_layout = (ConstraintLayout) convertView.findViewById(R.id.cl_gift);
viewHolder.ivDownOn = (ImageView) convertView.findViewById(R.id.iv_down_on); viewHolder.ivDownOn = (ImageView) convertView.findViewById(R.id.iv_down_on);
viewHolder.cl_iv_down_on = (ConstraintLayout) convertView.findViewById(R.id.cl_iv_down_on);
viewHolder.iv_gift_select= (ImageView) convertView.findViewById(R.id.iv_gift_select); viewHolder.iv_gift_select= (ImageView) convertView.findViewById(R.id.iv_gift_select);
// im_heart现在位于顶层布局中
viewHolder.im_heart = (ImageView) convertView.findViewById(R.id.im_heartssss);
convertView.setTag(viewHolder); convertView.setTag(viewHolder);
} else { } else {
viewHolder = (ViewHolder) convertView.getTag(); viewHolder = (ViewHolder) convertView.getTag();
@@ -146,7 +149,15 @@ public class GiftRoomAdapter extends BaseAdapter {
if (giftModel.getIs_lock()==0){ if (giftModel.getIs_lock()==0){
viewHolder.iv_gift_select.setVisibility(GONE); viewHolder.iv_gift_select.setVisibility(GONE);
}else { }else {
viewHolder.iv_gift_select.setVisibility(View.VISIBLE); viewHolder.iv_gift_select.setVisibility(VISIBLE);
}
if (giftModel.getIs_cp()==0) {//这是cp礼物
viewHolder.im_heart.setVisibility(GONE);
}else {
if (viewHolder.im_heart != null) {
viewHolder.im_heart.setVisibility(VISIBLE);
}
} }
/* /*
* 在给View绑定显示的数据时计算正确的position = position + curIndex * pageSize * 在给View绑定显示的数据时计算正确的position = position + curIndex * pageSize
@@ -214,6 +225,7 @@ public class GiftRoomAdapter extends BaseAdapter {
public TextView tv_gift_change_love_values; public TextView tv_gift_change_love_values;
public ImageView ivDownOn; public ImageView ivDownOn;
public ImageView iv_gift_select; public ImageView iv_gift_select;
public ImageView im_heart;
public ConstraintLayout cl_iv_down_on; public ConstraintLayout cl_iv_down_on;
} }
} }

View File

@@ -0,0 +1,38 @@
package com.xscm.moduleutil.bean;
import com.xscm.moduleutil.BaseEvent;
import org.greenrobot.eventbus.EventBus;
import java.util.List;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 送礼后的成功回调
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class RoomGiftData extends BaseEvent {
private int gift_total;
private List<GiftUserData> gift_user_data;
private CpType cp_type;
@Data
public static class GiftUserData {
private String user_id;//受理人id
private String gift_price;//礼物价格
}
@Data
public static class CpType {
private int cp_type;//0不处理 1表明心意 2组成cp
private String text;//发送方弹起的信息
private String text1;//接收方弹起的信息
private int gift_id;//礼物id
}
}

View File

@@ -1,14 +1,17 @@
package com.xscm.moduleutil.bean; package com.xscm.moduleutil.bean;
import com.xscm.moduleutil.BaseEvent;
import com.xscm.moduleutil.bean.blindboxwheel.BlindBoxBean; import com.xscm.moduleutil.bean.blindboxwheel.BlindBoxBean;
import com.xscm.moduleutil.bean.room.*; import com.xscm.moduleutil.bean.room.*;
import java.util.List; import java.util.List;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode;
@EqualsAndHashCode(callSuper = true)
@Data @Data
public class RoomMessageEvent { public class RoomMessageEvent extends BaseEvent {
private int MsgType; // 消息类型,如 QXRoomMessageTypeJoin private int MsgType; // 消息类型,如 QXRoomMessageTypeJoin
private String RoomId; // 房间 ID private String RoomId; // 房间 ID
private T Text; // 携带的数据对象 private T Text; // 携带的数据对象
@@ -100,12 +103,15 @@ public class RoomMessageEvent {
private SingerInfo.SongInfo song_info; private SingerInfo.SongInfo song_info;
private SingerInfo.SongInfo next_song_info; private SingerInfo.SongInfo next_song_info;
} }
@Data @Data
public static class text { public static class text {
private long position; private long position;
private int is_mute; private int is_mute;
private RoomGiftData.CpType cp_type;
} }
} }

View File

@@ -34,6 +34,8 @@ public class RoonGiftModel {
private int activities_id;//4盲盒 5天空之境 private int activities_id;//4盲盒 5天空之境
private int gift_bag;//10天空之境 11岁月之城 12时空之巅 private int gift_bag;//10天空之境 11岁月之城 12时空之巅
private int is_lock;//爵位礼物 0不锁 1 private int is_lock;//爵位礼物 0不锁 1
private int is_cp;//1:是 0不是
public boolean isCan_send_self() { public boolean isCan_send_self() {
if ( isManghe()) { if ( isManghe()) {
return true; return true;

View File

@@ -89,6 +89,10 @@ public class EMMessageInfo implements MultiItemEntity {
public static final int QXRoomMessageTypeMuteRemoteAudio = 125; public static final int QXRoomMessageTypeMuteRemoteAudio = 125;
///小黑屋 关麦 ///小黑屋 关麦
public static final int QXRoomMessageTypeMuteLocalAudio = 126; public static final int QXRoomMessageTypeMuteLocalAudio = 126;
public static final int QXRoomMessageTypeCPDx = 130;//心动礼物,单向发送
public static final int QXRoomMessageTypeCPSx = 131;//心动礼物,双向发送
/// 交友房阶段发生变化 /// 交友房阶段发生变化
public static final int QXRoomMessageTypeRoomFriendPartDidChanged = 1049; public static final int QXRoomMessageTypeRoomFriendPartDidChanged = 1049;

View File

@@ -0,0 +1,160 @@
package com.xscm.moduleutil.dialog;
import android.annotation.SuppressLint;
import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.view.Gravity;
import android.view.View;
import android.view.Window;
import android.widget.Button;
import android.widget.TextView;
import androidx.constraintlayout.widget.ConstraintLayout;
import com.xscm.moduleutil.R;
import com.xscm.moduleutil.color.ThemeableDrawableUtils;
import com.xscm.moduleutil.utils.ColorManager;
public class BaseCpDialog extends Dialog {
private String title;
private String message;
private String positiveButtonText;
private String negativeButtonText;
private View.OnClickListener positiveButtonClickListener;
private View.OnClickListener negativeButtonClickListener;
private boolean isCountdownEnabled = false; // 是否启用倒计时
private int countdownSeconds = 0; // 倒计时秒数
private CountDownTimer countDownTimer; // 倒计时对象
public BaseCpDialog(Context context, String title, String message,
String positiveButtonText, String negativeButtonText,
View.OnClickListener positiveButtonClickListener,
View.OnClickListener negativeButtonClickListener,
boolean isCountdownEnabled, int countdownSeconds) {
super(context);
this.title = title;
this.message = message;
this.positiveButtonText = positiveButtonText;
this.negativeButtonText = negativeButtonText;
this.positiveButtonClickListener = positiveButtonClickListener;
this.negativeButtonClickListener = negativeButtonClickListener;
this.isCountdownEnabled = isCountdownEnabled;
this.countdownSeconds = countdownSeconds;
}
private void init() {
Window window = getWindow();
if (window != null) {
window.setGravity(Gravity.CENTER); // 居中显示
window.setBackgroundDrawableResource(R.drawable.bg_r16_fff); // 透明背景
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.dialog_confirm);
init();
// 动态设置背景
// getWindow().setBackgroundDrawableResource(R.drawable.bg_r16_fff);
// 初始化视图
TextView tvTitle = findViewById(R.id.tv_title);
TextView tvMessage = findViewById(R.id.tv_message);
Button btnPositive = findViewById(R.id.btn_positive);
Button btnNegative = findViewById(R.id.btn_negative);
@SuppressLint({"MissingInflatedId", "LocalSuppress"})
ConstraintLayout rootView =(ConstraintLayout) findViewById(R.id.root_view);
// 设置文本
tvTitle.setText(title);
tvMessage.setText(message);
btnPositive.setText(positiveButtonText);
btnNegative.setText(negativeButtonText);
// 设置点击监听器
btnPositive.setOnClickListener(v -> {
isCountdownCancelled = true; // 标记倒计时被取消
if (countDownTimer != null) {
countDownTimer.cancel(); // 取消倒计时
countDownTimer = null;
}
if (positiveButtonClickListener != null) {
positiveButtonClickListener.onClick(v);
}
dismiss();
});
// 判断是否需要显示取消按钮
if (negativeButtonText != null && !negativeButtonText.isEmpty()) {
btnNegative.setText(negativeButtonText);
btnNegative.setVisibility(View.VISIBLE);
btnNegative.setOnClickListener(v -> {
if (negativeButtonClickListener != null) {
negativeButtonClickListener.onClick(v);
}
dismiss();
});
// 倒计时逻辑
if (isCountdownEnabled && countdownSeconds > 0) {
startCountdown(btnNegative);
}
} else {
// 隐藏取消按钮
btnNegative.setVisibility(View.GONE);
}
// 倒计时逻辑
if (isCountdownEnabled && countdownSeconds > 0) {
startCountdown(btnNegative);
}
ThemeableDrawableUtils.setThemeableRoundedBackground(btnPositive, ColorManager.getInstance().getPrimaryColorInt(), 53);
btnPositive.setTextColor(ColorManager.getInstance().getButtonColorInt());
// 找到根布局并应用动画
// if (rootView != null) {
// Animation slideDown = AnimationUtils.loadAnimation(context, R.anim.slide_down);
// Animation shake = AnimationUtils.loadAnimation(context, R.anim.shake);
//
// rootView.startAnimation(slideDown);
// rootView.startAnimation(shake);
// }
}
private boolean isCountdownCancelled = false; // 添加标志位
private void startCountdown(Button btnNegative) {
countDownTimer = new CountDownTimer(countdownSeconds * 1000L, 1000) {
@Override
public void onTick(long millisUntilFinished) {
int secondsLeft = (int) (millisUntilFinished / 1000);
btnNegative.setText(negativeButtonText + " (" + secondsLeft + "s)");
}
@Override
public void onFinish() {
// 检查是否被主动取消
if (!isCountdownCancelled) {
btnNegative.setText(negativeButtonText);
if (negativeButtonClickListener != null) {
negativeButtonClickListener.onClick(btnNegative); // 自动触发取消
}
dismiss();
}
}
}.start();
}
@Override
public void dismiss() {
if (countDownTimer != null) {
countDownTimer.cancel(); // 取消倒计时
countDownTimer = null;
}
super.dismiss();
}
}

View File

@@ -515,7 +515,11 @@ public interface ApiServer {
@FormUrlEncoded @FormUrlEncoded
@POST(Constants.GET_ROOM_GIFT) @POST(Constants.GET_ROOM_GIFT)
Call<BaseModel<String>> roomGift(@Field("room_id") String room_id, @Field("gift_id") String gift_id, @Field("gift_num") String num, @Field("to_uid") String to_uid, @Field("type") String gift_type, @Field("pit_number") String pit_number, @Field("heart_id") String heat_id); Call<BaseModel<RoomGiftData>> roomGift(@Field("room_id") String room_id, @Field("gift_id") String gift_id, @Field("gift_num") String num, @Field("to_uid") String to_uid, @Field("type") String gift_type, @Field("pit_number") String pit_number, @Field("heart_id") String heat_id);
@FormUrlEncoded
@POST(Constants.POST_CP_GIVE_GIFT)
Call<BaseModel<RoomGiftData>> cpGiveGift(@Field("user_id") String user_id, @Field("gift_id") String gift_id, @Field("room_id") String room_id);
@GET(Constants.GET_FIRST_CHARGE_GIFT) @GET(Constants.GET_FIRST_CHARGE_GIFT)
Call<BaseModel<FirstChargeGiftBean>> firstChargeGift(); Call<BaseModel<FirstChargeGiftBean>> firstChargeGift();

View File

@@ -22,6 +22,7 @@ import com.xscm.moduleutil.bean.blindboxwheel.BlindReslutBean;
import com.xscm.moduleutil.bean.blindboxwheel.XlhDrawBean; import com.xscm.moduleutil.bean.blindboxwheel.XlhDrawBean;
import com.xscm.moduleutil.bean.room.*; import com.xscm.moduleutil.bean.room.*;
import com.xscm.moduleutil.bean.zhuangb.ZhuangBanShangChengBean; import com.xscm.moduleutil.bean.zhuangb.ZhuangBanShangChengBean;
import com.xscm.moduleutil.listener.CPListener;
import com.xscm.moduleutil.listener.MessageListenerSingleton; import com.xscm.moduleutil.listener.MessageListenerSingleton;
import com.xscm.moduleutil.utils.SpUtil; import com.xscm.moduleutil.utils.SpUtil;
import com.xscm.moduleutil.utils.SystemUtils; import com.xscm.moduleutil.utils.SystemUtils;
@@ -39,7 +40,6 @@ import java.security.SecureRandom;
import java.security.cert.X509Certificate; import java.security.cert.X509Certificate;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.EventListener;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
@@ -48,7 +48,6 @@ import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager; import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager; import javax.net.ssl.X509TrustManager;
import io.reactivex.disposables.Disposable;
import okhttp3.Cache; import okhttp3.Cache;
import okhttp3.OkHttpClient; import okhttp3.OkHttpClient;
import okhttp3.ResponseBody; import okhttp3.ResponseBody;
@@ -142,6 +141,15 @@ public class RetrofitClient {
mRetrofit = provideRetrofit(provideOkHttpClient()); mRetrofit = provideRetrofit(provideOkHttpClient());
sApiServer = mRetrofit.create(ApiServer.class); sApiServer = mRetrofit.create(ApiServer.class);
} }
private CPListener cpListener;
public void CpListener(CPListener cpListenter) {
this.cpListener = cpListenter;
}
public CPListener getCpListener() {
return cpListener;
}
public static RetrofitClient getInstance() { public static RetrofitClient getInstance() {
if (INSTANCE == null) { if (INSTANCE == null) {
@@ -3054,21 +3062,75 @@ public class RetrofitClient {
}); });
} }
public void roomGift(String room_id, String gift_id, String gift_num, String to_uid, String public void roomGift(String room_id, String gift_id, String gift_num, String to_uid, String type, String pit_number, String heart_id, BaseObserver<RoomGiftData> observer) {
type, String pit_number, String heart_id, BaseObserver<String> observer) { sApiServer.roomGift(room_id, gift_id, gift_num, to_uid, type, pit_number, heart_id).enqueue(new Callback<BaseModel<RoomGiftData>>() {
sApiServer.roomGift(room_id, gift_id, gift_num, to_uid, type, pit_number, heart_id).enqueue(new Callback<BaseModel<String>>() {
@Override @Override
public void onResponse(Call<BaseModel<String>> call, Response<BaseModel<String>> response) { public void onResponse(Call<BaseModel<RoomGiftData>> call, Response<BaseModel<RoomGiftData>> response) {
onNextRetu(response, observer); if (response.code()==200){
BaseModel<RoomGiftData> data = response.body();
if (data.getCode()==1) {
if (data.getData().getCp_type()!=null){
if (cpListener !=null){
cpListener.onSendCpMsg(data.getData());
}
}
observer.onNext(data.getData());
}else if (data.getCode()==0){
ToastUtils.showShort(data.getMsg());
}else if (data.getCode()==301) {
try {
ToastUtils.showShort(data.getMsg());
CommonAppContext.getInstance().clearLoginInfo();
} catch (ClassNotFoundException e) {
throw new RuntimeException(e);
}
}
}
} }
@Override @Override
public void onFailure(Call<BaseModel<String>> call, Throwable t) { public void onFailure(Call<BaseModel<RoomGiftData>> call, Throwable t) {
ToastUtils.showShort(t.toString()); ToastUtils.showShort(t.toString());
} }
}); });
} }
public void cpGiveGift(String user_id, String gift_id,String room_id,BaseObserver<RoomGiftData> observer) {
sApiServer.cpGiveGift(user_id, gift_id,room_id).enqueue(new Callback<BaseModel<RoomGiftData>>() {
@Override
public void onResponse(Call<BaseModel<RoomGiftData>> call, Response<BaseModel<RoomGiftData>> response) {
if (response.code()==200){
BaseModel<RoomGiftData> data = response.body();
if (data.getCode()==1) {
if (data.getData().getCp_type()!=null){
if (cpListener !=null){
cpListener.onSendCpMsg(data.getData());
}
}
observer.onNext(data.getData());
}else if (data.getCode()==0){
ToastUtils.showShort(data.getMsg());
}else if (data.getCode()==301) {
try {
ToastUtils.showShort(data.getMsg());
CommonAppContext.getInstance().clearLoginInfo();
} catch (ClassNotFoundException e) {
throw new RuntimeException(e);
}
}
}
}
@Override
public void onFailure(Call<BaseModel<RoomGiftData>> call, Throwable t) {
LogUtils.e("cpGiveGift",t.fillInStackTrace());
}
});
}
public void getDayDropGift(BaseObserver<HeavenGiftBean> observer) { public void getDayDropGift(BaseObserver<HeavenGiftBean> observer) {
sApiServer.getDayDropGift().enqueue(new Callback<BaseModel<HeavenGiftBean>>() { sApiServer.getDayDropGift().enqueue(new Callback<BaseModel<HeavenGiftBean>>() {
@Override @Override
@@ -3383,8 +3445,7 @@ public class RetrofitClient {
}); });
} }
public void roomRelationList(String public void roomRelationList(String type, BaseObserver<List<RoomRelationBean>> observer) {
type, BaseObserver<List<RoomRelationBean>> observer) {
sApiServer.roomRelationList(type).enqueue(new Callback<BaseModel<List<RoomRelationBean>>>() { sApiServer.roomRelationList(type).enqueue(new Callback<BaseModel<List<RoomRelationBean>>>() {
@Override @Override
public void onResponse(Call<BaseModel<List<RoomRelationBean>>> call, Response<BaseModel<List<RoomRelationBean>>> response) { public void onResponse(Call<BaseModel<List<RoomRelationBean>>> call, Response<BaseModel<List<RoomRelationBean>>> response) {

View File

@@ -0,0 +1,21 @@
package com.xscm.moduleutil.listener
import com.xscm.moduleutil.bean.RoomGiftData
import com.xscm.moduleutil.bean.RoomMessageEvent
/**
* 这是cp的监听器方便在各个模块中调用
*/
interface CPListener {
/**
* 发送CP消息的处理函数
* @param gitData 礼物数据信息,包含房间礼物相关的数据
*/
fun onSendCpMsg(gitData: RoomGiftData)
/**
* 接收房间消息事件的处理函数
* @param roomMessageEvent 房间消息事件对象,包含消息相关的所有信息
*/
fun onReceiveMsg(roomMessageEvent: RoomMessageEvent)
}

View File

@@ -15,6 +15,7 @@ import com.xscm.moduleutil.bean.RoomMessageEvent;
import com.xscm.moduleutil.bean.room.EMMessageInfo; import com.xscm.moduleutil.bean.room.EMMessageInfo;
import com.xscm.moduleutil.event.RoomJoinMountModel; import com.xscm.moduleutil.event.RoomJoinMountModel;
import com.xscm.moduleutil.event.UnreadCountEvent; import com.xscm.moduleutil.event.UnreadCountEvent;
import com.xscm.moduleutil.http.RetrofitClient;
import com.xscm.moduleutil.rtc.MusicPlayBean; import com.xscm.moduleutil.rtc.MusicPlayBean;
import com.xscm.moduleutil.utils.SpUtil; import com.xscm.moduleutil.utils.SpUtil;
import com.tencent.imsdk.v2.V2TIMAdvancedMsgListener; import com.tencent.imsdk.v2.V2TIMAdvancedMsgListener;
@@ -103,6 +104,7 @@ public class MessageListenerSingleton {
} }
} }
} }
// 修改 notify 方法以增加保护 // 修改 notify 方法以增加保护
private void notifyPublicScreenListeners(RoomMessageEvent message) { private void notifyPublicScreenListeners(RoomMessageEvent message) {
synchronized (publicScreenListeners) { synchronized (publicScreenListeners) {
@@ -313,8 +315,13 @@ public class MessageListenerSingleton {
LogUtils.d("C2C 自定义(信令)消息 " + sender.getNickName()); LogUtils.d("C2C 自定义(信令)消息 " + sender.getNickName());
String message = new String(customData, StandardCharsets.UTF_8); String message = new String(customData, StandardCharsets.UTF_8);
RoomMessageEvent event = GsonUtils.fromJson(message, RoomMessageEvent.class); RoomMessageEvent event = GsonUtils.fromJson(message, RoomMessageEvent.class);
if (event.getMsgType() == 130 || event.getMsgType() == 131) {
// EventBus.getDefault().post(event);
RetrofitClient.getInstance().getCpListener().onReceiveMsg(event);
} else {
notifyMessageReceived(event); notifyMessageReceived(event);
} }
}
@Override @Override
public void onRecvGroupTextMessage(String msgID, String groupID, V2TIMGroupMemberInfo sender, String text) { public void onRecvGroupTextMessage(String msgID, String groupID, V2TIMGroupMemberInfo sender, String text) {
@@ -486,7 +493,7 @@ public class MessageListenerSingleton {
if (instance != null) { if (instance != null) {
instance.listeners.clear(); instance.listeners.clear();
removeAllListeners(); // removeAllListeners();
isInitialized = false; isInitialized = false;
groupId = null; groupId = null;
LogUtils.e("@@@", "重置成功"); LogUtils.e("@@@", "重置成功");
@@ -497,7 +504,7 @@ public class MessageListenerSingleton {
public static void reset(String roomId) { public static void reset(String roomId) {
if (instance != null) { if (instance != null) {
instance.listeners.clear(); instance.listeners.clear();
removeAllListeners(); // removeAllListeners();
isInitialized = false; isInitialized = false;
groupId = null; groupId = null;
// instance = null; // instance = null;
@@ -508,7 +515,7 @@ public class MessageListenerSingleton {
// 确保监听器已添加 // 确保监听器已添加
private void ensureListenersAdded() { public void ensureListenersAdded() {
initListeners(); initListeners();
addAllListeners(); addAllListeners();
} }
@@ -574,7 +581,32 @@ public class MessageListenerSingleton {
); );
} }
public void sendCustomC2CMessage(String userId, byte[] binaryData) { // TODO: 2025/11/19 添加发送公共方法messageType发送的typemessage发送的内容 userId发送给谁
public void sendCustomC2CMessage(int messageType, String message, String userId) {
RoomMessageEvent.T t = new RoomMessageEvent.T();
t.setFromUserInfo(SpUtil.getUserInfo());
t.setText(message);
RoomMessageEvent roomMessageEvent = new RoomMessageEvent(messageType, mRoomId, t);
String json = com.blankj.utilcode.util.GsonUtils.toJson(roomMessageEvent);
// 转换为 byte[]
byte[] binaryData = json.getBytes(StandardCharsets.UTF_8);
// 创建自定义群消息
V2TIMMessage v2TIMMessage = V2TIMManager.getMessageManager().createCustomMessage(binaryData);
v2TIMMessage.setExcludedFromUnreadCount(true);
v2TIMMessage.setExcludedFromContentModeration(true);
// v2TIMMessage.setNeedReadReceipt(true);
//
// // 发送消息
V2TIMManager.getMessageManager().sendMessage(v2TIMMessage, "u" + userId, null, V2TIMMessage.V2TIM_PRIORITY_HIGH,
true,
null,
sendCallback);
}
public void sendCustomC2CMessage125(String userId, byte[] binaryData) {
// 创建自定义群消息 // 创建自定义群消息
V2TIMMessage v2TIMMessage = V2TIMManager.getMessageManager().createCustomMessage(binaryData); V2TIMMessage v2TIMMessage = V2TIMManager.getMessageManager().createCustomMessage(binaryData);
v2TIMMessage.setExcludedFromUnreadCount(true); v2TIMMessage.setExcludedFromUnreadCount(true);

View File

@@ -6,6 +6,7 @@ import com.xscm.moduleutil.bean.GiftLabelBean;
import com.xscm.moduleutil.bean.GiftPackBean; import com.xscm.moduleutil.bean.GiftPackBean;
import com.xscm.moduleutil.bean.GiftPackListCount; import com.xscm.moduleutil.bean.GiftPackListCount;
import com.xscm.moduleutil.bean.RewardUserBean; import com.xscm.moduleutil.bean.RewardUserBean;
import com.xscm.moduleutil.bean.RoomGiftData;
import com.xscm.moduleutil.bean.RoonGiftModel; import com.xscm.moduleutil.bean.RoonGiftModel;
import com.xscm.moduleutil.bean.WalletBean; import com.xscm.moduleutil.bean.WalletBean;
import com.xscm.moduleutil.bean.room.RoomAuction; import com.xscm.moduleutil.bean.room.RoomAuction;
@@ -102,7 +103,7 @@ public class RewardGiftPresenter extends BasePresenter<RewardGiftContacts.View>
@Override @Override
public void roomGift(String room_id, String gift_id, String gift_num, String to_uid, String type, String pit_number, String heart_id) { public void roomGift(String room_id, String gift_id, String gift_num, String to_uid, String type, String pit_number, String heart_id) {
api.roomGift(room_id, gift_id, gift_num, to_uid, type, pit_number, heart_id, new BaseObserver<String>() { api.roomGift(room_id, gift_id, gift_num, to_uid, type, pit_number, heart_id, new BaseObserver<RoomGiftData>() {
@Override @Override
public void onSubscribe(Disposable d) { public void onSubscribe(Disposable d) {
@@ -110,7 +111,7 @@ public class RewardGiftPresenter extends BasePresenter<RewardGiftContacts.View>
} }
@Override @Override
public void onNext(String s) { public void onNext(RoomGiftData s) {
if (MvpRef == null) { if (MvpRef == null) {
MvpRef = new WeakReference<>(mView); MvpRef = new WeakReference<>(mView);
} }

View File

@@ -19,7 +19,7 @@ import java.util.Map;
public class ColorManager { public class ColorManager {
private static ColorManager instance; private static ColorManager instance;
private String primaryColor = "#3ABC6D"; // 默认主题色 private String primaryColor = "#3ABC6D"; // 默认主题色
private String buttonColor = "#6D6D6D"; // 默认按钮色 private String buttonColor = "#FFFFFF"; // 默认按钮色
// 监听器列表,用于通知颜色变化 // 监听器列表,用于通知颜色变化
private List<ColorChangeListener> listeners = new ArrayList<>(); private List<ColorChangeListener> listeners = new ArrayList<>();
@@ -80,7 +80,7 @@ public class ColorManager {
try { try {
return Color.parseColor(buttonColor); return Color.parseColor(buttonColor);
} catch (Exception e) { } catch (Exception e) {
return Color.parseColor("#6D6D6D"); // 默认颜色 return Color.parseColor("#FFFFFF"); // 默认颜色
} }
} }

View File

@@ -207,7 +207,7 @@ public class ImageUtils {
return; return;
} }
} }
Glide.with(mImageView).load(path).diskCacheStrategy(DiskCacheStrategy.ALL).into(mImageView); Glide.with(mImageView).load(path).placeholder(R.mipmap.default_avatar).diskCacheStrategy(DiskCacheStrategy.ALL).into(mImageView);
} }
public static void loadHeadCC(String path, ImageView mImageView) { public static void loadHeadCC(String path, ImageView mImageView) {

View File

@@ -61,7 +61,7 @@ public class MeHeadView extends ConstraintLayout {
if (nobilityImage!=null && !TextUtils.isEmpty(nobilityImage)){ if (nobilityImage!=null && !TextUtils.isEmpty(nobilityImage)){
iv_frame_bg.setVisibility(VISIBLE); iv_frame_bg.setVisibility(VISIBLE);
ImageUtils.loadHead(nobilityImage, iv_frame_bg); ImageUtils.loadRoomItem(nobilityImage, iv_frame_bg);
}else { }else {
iv_frame_bg.setVisibility(GONE); iv_frame_bg.setVisibility(GONE);
} }

View File

@@ -278,6 +278,7 @@ public class Constants {
public static final String POST_GRAB = "/api/Redpacket/grab";//抢红包 public static final String POST_GRAB = "/api/Redpacket/grab";//抢红包
public static final String GET_ROOM_GIFT = "/api/Room/room_give_gift";//直播间送礼 public static final String GET_ROOM_GIFT = "/api/Room/room_give_gift";//直播间送礼
public static final String POST_CP_GIVE_GIFT = "/api/UserCp/cpGiveGift";//用户CP礼物回赠
public static final String GET_ROOM_USER = "/api/Room/room_user_home";//房间内点击头像 public static final String GET_ROOM_USER = "/api/Room/room_user_home";//房间内点击头像
public static final String APPLY_PIT = "/api/RoomPit/apply_pit";//申请上麦 public static final String APPLY_PIT = "/api/RoomPit/apply_pit";//申请上麦
public static final String DOWN_PIT = "/api/RoomPit/down_pit";//下麦 public static final String DOWN_PIT = "/api/RoomPit/down_pit";//下麦

View File

@@ -53,7 +53,10 @@
android:layout_alignParentStart="true" android:layout_alignParentStart="true"
android:layout_marginStart="@dimen/dp_20" android:layout_marginStart="@dimen/dp_20"
android:text="取消" android:text="取消"
android:gravity="center"
android:textSize="@dimen/sp_14" android:textSize="@dimen/sp_14"
android:paddingHorizontal="@dimen/dp_20"
android:paddingVertical="@dimen/dp_10"
android:textColor="@color/color_FF999999" android:textColor="@color/color_FF999999"
android:background="@drawable/bg_r53_f3f3f3" android:background="@drawable/bg_r53_f3f3f3"
@@ -65,7 +68,11 @@
android:layout_height="@dimen/dp_42" android:layout_height="@dimen/dp_42"
android:layout_centerInParent="true" android:layout_centerInParent="true"
android:layout_alignParentEnd="true" android:layout_alignParentEnd="true"
android:paddingHorizontal="@dimen/dp_20"
android:paddingVertical="@dimen/dp_10"
android:text="确认" android:text="确认"
android:textSize="@dimen/sp_14"
android:gravity="center"
android:background="@drawable/cs"/> android:background="@drawable/cs"/>
</RelativeLayout> </RelativeLayout>
</LinearLayout> </LinearLayout>

View File

@@ -86,6 +86,17 @@
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
<ImageView
android:id="@+id/im_heartssss"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/icon_heart"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
android:scaleType="fitCenter"
android:visibility="gone"
tools:visibility="visible"/>
<ImageView <ImageView
android:id="@+id/iv_gift_select" android:id="@+id/iv_gift_select"
android:layout_width="match_parent" android:layout_width="match_parent"

View File

@@ -40,6 +40,7 @@
android:scaleType="fitXY" android:scaleType="fitXY"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintDimensionRatio="1:1" app:layout_constraintDimensionRatio="1:1"
app:layout_constraintWidth_percent="0.85"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
@@ -49,7 +50,7 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="@dimen/dp_1" android:layout_height="@dimen/dp_1"
android:orientation="horizontal" android:orientation="horizontal"
app:layout_constraintGuide_percent="0.5" /> app:layout_constraintGuide_percent="0.53" />
<ImageView <ImageView
android:id="@+id/iv_frame_bg" android:id="@+id/iv_frame_bg"

Binary file not shown.

After

Width:  |  Height:  |  Size: 890 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@@ -28,21 +28,29 @@ import android.widget.FrameLayout;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.TextView; import android.widget.TextView;
import androidx.annotation.Nullable;
import androidx.core.content.ContextCompat; import androidx.core.content.ContextCompat;
import androidx.databinding.ViewDataBinding; import androidx.databinding.ViewDataBinding;
import com.blankj.utilcode.util.ActivityUtils;
import com.blankj.utilcode.util.GsonUtils;
import com.blankj.utilcode.util.LogUtils; import com.blankj.utilcode.util.LogUtils;
import com.blankj.utilcode.util.ToastUtils; import com.blankj.utilcode.util.ToastUtils;
import com.tencent.imsdk.v2.V2TIMSDKListener; import com.tencent.imsdk.v2.V2TIMSDKListener;
import com.tencent.imsdk.v2.V2TIMValueCallback; import com.tencent.imsdk.v2.V2TIMValueCallback;
import com.tencent.qcloud.tuikit.tuichat.bean.ChatInfo; import com.tencent.qcloud.tuikit.tuichat.bean.ChatInfo;
import com.xscm.modulemain.activity.WebViewActivity;
import com.xscm.modulemain.activity.main.activity.MainActivity;
import com.xscm.modulemain.manager.RoomManager; import com.xscm.modulemain.manager.RoomManager;
import com.xscm.moduleutil.BaseEvent;
import com.xscm.moduleutil.R;
import com.xscm.moduleutil.activity.BaseAppCompatActivity; import com.xscm.moduleutil.activity.BaseAppCompatActivity;
import com.xscm.moduleutil.activity.IPresenter; import com.xscm.moduleutil.activity.IPresenter;
import com.xscm.moduleutil.activity.IView; import com.xscm.moduleutil.activity.IView;
import com.xscm.modulemain.activity.WebViewActivity;
import com.xscm.moduleutil.base.CommonAppContext; import com.xscm.moduleutil.base.CommonAppContext;
import com.xscm.moduleutil.base.WebUrlConstants; import com.xscm.moduleutil.base.WebUrlConstants;
import com.xscm.moduleutil.bean.RoomGiftData;
import com.xscm.moduleutil.bean.RoomMessageEvent;
import com.xscm.moduleutil.bean.UserBean; import com.xscm.moduleutil.bean.UserBean;
import com.xscm.moduleutil.bean.XLHBean; import com.xscm.moduleutil.bean.XLHBean;
import com.xscm.moduleutil.dialog.ConfirmDialog; import com.xscm.moduleutil.dialog.ConfirmDialog;
@@ -50,7 +58,10 @@ import com.xscm.moduleutil.event.HourlyBean;
import com.xscm.moduleutil.event.MqttBean; import com.xscm.moduleutil.event.MqttBean;
import com.xscm.moduleutil.event.RedBean; import com.xscm.moduleutil.event.RedBean;
import com.xscm.moduleutil.event.UnreadCountEvent; import com.xscm.moduleutil.event.UnreadCountEvent;
import com.xscm.moduleutil.http.BaseObserver;
import com.xscm.moduleutil.http.RetrofitClient; import com.xscm.moduleutil.http.RetrofitClient;
import com.xscm.moduleutil.listener.CPListener;
import com.xscm.moduleutil.listener.MessageListenerSingleton;
import com.xscm.moduleutil.utils.ClickUtils; import com.xscm.moduleutil.utils.ClickUtils;
import com.xscm.moduleutil.utils.ImageUtils; import com.xscm.moduleutil.utils.ImageUtils;
import com.xscm.moduleutil.utils.LanguageUtil; import com.xscm.moduleutil.utils.LanguageUtil;
@@ -64,16 +75,22 @@ import com.xscm.moduleutil.utils.SystemUtils;
import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode; import org.greenrobot.eventbus.ThreadMode;
import org.jetbrains.annotations.NotNull;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.concurrent.TimeUnit;
import io.reactivex.disposables.Disposable;
public abstract class BaseMvpActivity<P extends IPresenter, VDB extends ViewDataBinding> extends BaseAppCompatActivity<VDB> implements public abstract class BaseMvpActivity<P extends IPresenter, VDB extends ViewDataBinding> extends BaseAppCompatActivity<VDB> implements
IView<Activity> { IView<Activity> {
protected P MvpPre; protected P MvpPre;
private ConfirmDialog confirmDialog;
protected abstract P bindPresenter(); protected abstract P bindPresenter();
@@ -102,6 +119,23 @@ public abstract class BaseMvpActivity<P extends IPresenter, VDB extends ViewData
disLoading(); disLoading();
} }
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
RetrofitClient.getInstance ().CpListener(new CPListener() {
@Override
public void onReceiveMsg(@NotNull RoomMessageEvent roomMessageEvent) {
cpReceiver(roomMessageEvent);
}
@Override
public void onSendCpMsg(@NotNull RoomGiftData gitData) {
cpMsg(gitData);
}
});
}
@Override @Override
protected void onDestroy() { protected void onDestroy() {
ClickUtils.clearAllClickRecords(); ClickUtils.clearAllClickRecords();
@@ -154,6 +188,46 @@ public abstract class BaseMvpActivity<P extends IPresenter, VDB extends ViewData
super.attachBaseContext(LanguageUtil.attachBaseContext(newBase)); super.attachBaseContext(LanguageUtil.attachBaseContext(newBase));
} }
public void cpMsg(RoomGiftData event) {
String cpTypeJson = GsonUtils.toJson(event.getCp_type());
if (event.getCp_type().getCp_type() == 1) {
if (event.getGift_user_data()!=null && event.getGift_user_data().size()>0){
for (int i = 0; i <event.getGift_user_data().size(); i++)
// 创建自定义消息
MessageListenerSingleton.getInstance().sendCustomC2CMessage(130,cpTypeJson,
event.getGift_user_data().get(i).getUser_id()
);
}
}else if (event.getCp_type().getCp_type() == 2) {
if (event.getGift_user_data()!=null && event.getGift_user_data().size()>0){
for (int i = 0; i < event.getGift_user_data().size(); i++)
// 创建自定义消息
MessageListenerSingleton.getInstance().sendCustomC2CMessage(131,cpTypeJson,
event.getGift_user_data().get(i).getUser_id()
);
}
}
}
public void cpReceiver(BaseEvent event) {
String a = ActivityUtils.getTopActivity().getLocalClassName();
if (event instanceof RoomMessageEvent) {
com.xscm.moduleutil.bean.RoomGiftData.CpType text = GsonUtils.fromJson(((RoomMessageEvent) event).getText().getText().toString(),com.xscm.moduleutil.bean.RoomGiftData.CpType.class);
if (text.getCp_type() == 1) {
queren1(1,text.getText(),text.getGift_id()+"",((RoomMessageEvent) event).getText().getFromUserInfo().getUser_id()+"",((RoomMessageEvent) event).getRoomId());
}else if (text.getCp_type() == 2) {
queren1(2,text.getText1(),text.getGift_id()+"",((RoomMessageEvent) event).getText().getFromUserInfo().getUser_id()+"",((RoomMessageEvent) event).getRoomId());
}
}
}
// TODO: 2025/11/19 登录腾讯
@Subscribe(threadMode = ThreadMode.MAIN) @Subscribe(threadMode = ThreadMode.MAIN)
public void logOutEvent(UserBean userBean) { public void logOutEvent(UserBean userBean) {
// 在用户 UI 点击登录的时候调用 // 在用户 UI 点击登录的时候调用
@@ -235,25 +309,32 @@ public abstract class BaseMvpActivity<P extends IPresenter, VDB extends ViewData
} }
}; };
private void queren1() { private void queren1(int type,String content,String giftid,String userId,String roomId) {
// 创建并显示确认对话框 // 创建并显示确认对话框
new ConfirmDialog(this, new ConfirmDialog(ActivityUtils.getTopActivity(),
"温馨提示", type==1?"心动信号":"缘定三生 此刻同心",
"您的账号已在别处登录,请确认密码是否已经泄露", content,
"知道了", type==1?"回赠同心锁":"进入心动空间",
"", type==1?"再想想":"我知道了",
v -> { v -> {
if (type==1) {
// 点击“确认”按钮时执行删除操作 // 点击“确认”按钮时执行删除操作
RetrofitClient.getInstance().cpGiveGift(userId, giftid, roomId, new BaseObserver<RoomGiftData>() {
@Override
public void onSubscribe(Disposable d) {
if (CommonAppContext.getInstance().playId != null) {
RoomManager.getInstance().exitRoom(CommonAppContext.getInstance().playId);
}
try {
CommonAppContext.getInstance().clearLoginInfo();
} catch (ClassNotFoundException e) {
throw new RuntimeException(e);
} }
@Override
public void onNext(RoomGiftData roomGiftData) {
if (roomGiftData.getCp_type() != null) {
if (roomGiftData.getCp_type().getCp_type()==2){
queren1(2,roomGiftData.getCp_type().getText(),"",SpUtil.getUserId()+"","");
}
}
}
});
}
}, },
v -> { v -> {
// 点击“取消”按钮时什么都不做 // 点击“取消”按钮时什么都不做
@@ -298,7 +379,7 @@ public abstract class BaseMvpActivity<P extends IPresenter, VDB extends ViewData
private final Object hourlyQueueLock = new Object(); // 小时榜队列同步锁 private final Object hourlyQueueLock = new Object(); // 小时榜队列同步锁
private boolean isHourlyProcessing = false; // 小时榜处理状态标志 private boolean isHourlyProcessing = false; // 小时榜处理状态标志
// TODO: 2025/11/19 收到小时榜
@Subscribe(threadMode = ThreadMode.MAIN) @Subscribe(threadMode = ThreadMode.MAIN)
public void onMessageReceived(List<HourlyBean> hourlyBean) { public void onMessageReceived(List<HourlyBean> hourlyBean) {
LogUtils.e("收到小时榜", hourlyBean); LogUtils.e("收到小时榜", hourlyBean);

View File

@@ -30,7 +30,6 @@ import com.xscm.moduleutil.bean.UserBean;
import com.xscm.moduleutil.utils.BarUtils; import com.xscm.moduleutil.utils.BarUtils;
import com.xscm.moduleutil.utils.PreferencesUtils; import com.xscm.moduleutil.utils.PreferencesUtils;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode; import org.greenrobot.eventbus.ThreadMode;

View File

@@ -31,7 +31,6 @@ import androidx.core.content.ContextCompat;
import androidx.fragment.app.Fragment; import androidx.fragment.app.Fragment;
import com.alibaba.android.arouter.facade.annotation.Route; import com.alibaba.android.arouter.facade.annotation.Route;
import com.blankj.utilcode.util.ActivityUtils;
import com.blankj.utilcode.util.FragmentUtils; import com.blankj.utilcode.util.FragmentUtils;
import com.blankj.utilcode.util.LogUtils; import com.blankj.utilcode.util.LogUtils;
import com.blankj.utilcode.util.ToastUtils; import com.blankj.utilcode.util.ToastUtils;
@@ -69,6 +68,7 @@ import com.xscm.moduleutil.dialog.NewPeopleDialog;
import com.xscm.moduleutil.dialog.RechargeDialogFragment; import com.xscm.moduleutil.dialog.RechargeDialogFragment;
import com.xscm.moduleutil.event.RoomOutEvent; import com.xscm.moduleutil.event.RoomOutEvent;
import com.xscm.moduleutil.event.UnreadCountEvent; import com.xscm.moduleutil.event.UnreadCountEvent;
import com.xscm.moduleutil.listener.MessageListenerSingleton;
import com.xscm.moduleutil.utils.ARouteConstants; import com.xscm.moduleutil.utils.ARouteConstants;
import com.xscm.moduleutil.utils.BackgroundManager; import com.xscm.moduleutil.utils.BackgroundManager;
import com.xscm.moduleutil.utils.ColorManager; import com.xscm.moduleutil.utils.ColorManager;
@@ -168,6 +168,8 @@ public class MainActivity extends BaseMvpActivity<HomePresenter, ActivityMainBin
} }
}); });
} }
MessageListenerSingleton.getInstance().ensureListenersAdded();
} }
@Override @Override

View File

@@ -1,7 +1,6 @@
package com.xscm.modulemain.activity.plaza.activity; package com.xscm.modulemain.activity.plaza.activity;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.ClipData; import android.content.ClipData;
import android.content.ClipboardManager; import android.content.ClipboardManager;
import android.os.Handler; import android.os.Handler;

View File

@@ -70,7 +70,6 @@ import com.xscm.modulemain.activity.main.activity.MainActivity
import com.xscm.modulemain.activity.room.contacts.RoomContacts import com.xscm.modulemain.activity.room.contacts.RoomContacts
import com.xscm.modulemain.activity.room.fragment.ChatRoomFragment import com.xscm.modulemain.activity.room.fragment.ChatRoomFragment
import com.xscm.modulemain.activity.room.fragment.RedEnvelopesFragment import com.xscm.modulemain.activity.room.fragment.RedEnvelopesFragment
import com.xscm.modulemain.activity.room.fragment.RequestSongFragment
import com.xscm.modulemain.activity.room.fragment.RoomCabinFragment import com.xscm.modulemain.activity.room.fragment.RoomCabinFragment
import com.xscm.modulemain.activity.room.fragment.RoomChartsFragment import com.xscm.modulemain.activity.room.fragment.RoomChartsFragment
import com.xscm.modulemain.activity.room.fragment.RoomFragment import com.xscm.modulemain.activity.room.fragment.RoomFragment
@@ -108,6 +107,7 @@ import com.xscm.moduleutil.bean.HeadlineBean
import com.xscm.moduleutil.bean.MqttXlhEnd import com.xscm.moduleutil.bean.MqttXlhEnd
import com.xscm.moduleutil.bean.RedPacketInfo import com.xscm.moduleutil.bean.RedPacketInfo
import com.xscm.moduleutil.bean.RoomCharmRankBean import com.xscm.moduleutil.bean.RoomCharmRankBean
import com.xscm.moduleutil.bean.RoomGiftData
import com.xscm.moduleutil.bean.RoomInputEvent import com.xscm.moduleutil.bean.RoomInputEvent
import com.xscm.moduleutil.bean.RoomMessageEvent import com.xscm.moduleutil.bean.RoomMessageEvent
import com.xscm.moduleutil.bean.RoomMessageEvent.T import com.xscm.moduleutil.bean.RoomMessageEvent.T
@@ -122,7 +122,6 @@ import com.xscm.moduleutil.bean.room.FriendInfo.HeartList
import com.xscm.moduleutil.bean.room.FriendUserBean import com.xscm.moduleutil.bean.room.FriendUserBean
import com.xscm.moduleutil.bean.room.RoomAuction import com.xscm.moduleutil.bean.room.RoomAuction
import com.xscm.moduleutil.bean.room.RoomAuction.AuctionListBean import com.xscm.moduleutil.bean.room.RoomAuction.AuctionListBean
import com.xscm.moduleutil.bean.room.RoomBean
import com.xscm.moduleutil.bean.room.RoomHourBean import com.xscm.moduleutil.bean.room.RoomHourBean
import com.xscm.moduleutil.bean.room.RoomInfoResp import com.xscm.moduleutil.bean.room.RoomInfoResp
import com.xscm.moduleutil.bean.room.RoomOnline import com.xscm.moduleutil.bean.room.RoomOnline
@@ -1106,11 +1105,11 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
"1", "1",
giftGiveEvent!!.getPit(), giftGiveEvent!!.getPit(),
giftGiveEvent!!.heart_id, giftGiveEvent!!.heart_id,
object : BaseObserver<String?>() { object : BaseObserver<RoomGiftData?>() {
override fun onSubscribe(d: Disposable) { override fun onSubscribe(d: Disposable) {
} }
override fun onNext(s: String) { override fun onNext(s: RoomGiftData) {
showGiftGiveProgress() showGiftGiveProgress()
} }

View File

@@ -798,23 +798,6 @@ public class RoomFragment extends BaseMvpFragment<RoomPresenter, FragmentRoomBin
} }
} }
public void isMute(int is_mute) {
RoomMessageEvent.text text = new RoomMessageEvent.text();
text.setIs_mute(is_mute);
String s = com.blankj.utilcode.util.GsonUtils.toJson(text);
RoomMessageEvent.T t = new RoomMessageEvent.T();
t.setFromUserInfo(SpUtil.getUserInfo());
t.setText(s);
RoomMessageEvent roomMessageEvent = new RoomMessageEvent(126, mRoomInfoResp.getRoom_info().getRoom_id(), t);
String json = com.blankj.utilcode.util.GsonUtils.toJson(roomMessageEvent);
// 转换为 byte[]
byte[] binaryData = json.getBytes(StandardCharsets.UTF_8);
// 创建自定义消息
MessageListenerSingleton.getInstance().sendCustomC2CMessage(
SpUtil.getUserInfo().getUser_id() + "",
binaryData
);
}
// @Subscribe(threadMode = ThreadMode.MAIN) // @Subscribe(threadMode = ThreadMode.MAIN)
public void roomInfoEvent(RoomMessageEvent messageEvent) { public void roomInfoEvent(RoomMessageEvent messageEvent) {

View File

@@ -169,6 +169,39 @@ public class RoomJukeboxFragment extends BaseMvpFragment<JukeboxPresenter, Fragm
MvpPre.singerSongCut(songId + ""); MvpPre.singerSongCut(songId + "");
} }
}); });
mBinding.ciNetAva.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (ClickUtils.isFastDoubleClick(v)) {
return;
}
if (roomInfoResp.getSinger_info() != null && roomInfoResp.getSinger_info().getSong_info() != null) {
if (roomInfoResp.getSinger_info().getSong_info().getBoss_user_id() != 0) {
RoomUserInfoFragment.show(roomId, roomInfoResp.getSinger_info().getSong_info().getBoss_user_id() + "", "0", getHostUser(), false, 1, isNumberWhether(), getChildFragmentManager());
} else {
com.hjq.toast.ToastUtils.show("暂无老板点歌");
}
}
}
});
mBinding.ciUserAva.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (ClickUtils.isFastDoubleClick(v)) {
return;
}
if (roomInfoResp.getSinger_info() != null && roomInfoResp.getSinger_info().getSong_info() != null) {
if (roomInfoResp.getSinger_info().getSong_info().getSinger_user_id() != 0) {
RoomUserInfoFragment.show(roomId, roomInfoResp.getSinger_info().getSong_info().getSinger_user_id() + "", "0", getHostUser(), false, 1, isNumberWhether(), getChildFragmentManager());
} else {
com.hjq.toast.ToastUtils.show("暂无演唱者");
}
}
}
});
} }
@@ -580,6 +613,7 @@ public class RoomJukeboxFragment extends BaseMvpFragment<JukeboxPresenter, Fragm
mBinding.guestContainer.setVisibility(View.VISIBLE); mBinding.guestContainer.setVisibility(View.VISIBLE);
ImageUtils.loadHead(messageEvent.getText().getNext_song_info().getSinger_avatar(), mBinding.ciGsAva); ImageUtils.loadHead(messageEvent.getText().getNext_song_info().getSinger_avatar(), mBinding.ciGsAva);
mBinding.tvGsName.setText(messageEvent.getText().getNext_song_info().getSinger_nickname()); mBinding.tvGsName.setText(messageEvent.getText().getNext_song_info().getSinger_nickname());
roomInfoResp.getSinger_info().setNext_song_info(messageEvent.getText().getNext_song_info());
} }
} }
@@ -593,6 +627,7 @@ public class RoomJukeboxFragment extends BaseMvpFragment<JukeboxPresenter, Fragm
ImageUtils.loadHead(messageEvent.getText().getSong_info().getSinger_avatar(), mBinding.ciUserAva); ImageUtils.loadHead(messageEvent.getText().getSong_info().getSinger_avatar(), mBinding.ciUserAva);
mBinding.tvSong.setText("演唱歌曲:" + messageEvent.getText().getSong_info().getSong_name()); mBinding.tvSong.setText("演唱歌曲:" + messageEvent.getText().getSong_info().getSong_name());
roomInfoResp.getSinger_info().setSong_info(messageEvent.getText().getSong_info());
ImageUtils.loadHead(messageEvent.getText().getSong_info().getBoss_avatar(), mBinding.ciNetAva); ImageUtils.loadHead(messageEvent.getText().getSong_info().getBoss_avatar(), mBinding.ciNetAva);
mBinding.tvNetName.setText("老板"); mBinding.tvNetName.setText("老板");
songId = messageEvent.getText().getSong_info().getSinger_song_id(); songId = messageEvent.getText().getSong_info().getSinger_song_id();

View File

@@ -589,7 +589,7 @@ public class SingSongFragment extends BaseRoomFragment<SingSongPresenter, Fragme
// 转换为 byte[] // 转换为 byte[]
byte[] binaryData = json.getBytes(StandardCharsets.UTF_8); byte[] binaryData = json.getBytes(StandardCharsets.UTF_8);
// 创建自定义消息 // 创建自定义消息
MessageListenerSingleton.getInstance().sendCustomC2CMessage( MessageListenerSingleton.getInstance().sendCustomC2CMessage125(
roomInfoRespPk.getRoom_info().getPit_list().get(8).getUser_id(), roomInfoRespPk.getRoom_info().getPit_list().get(8).getUser_id(),
binaryData binaryData
); );

View File

@@ -3,6 +3,7 @@ package com.xscm.modulemain.activity.room.presenter;
import android.content.Context; import android.content.Context;
import com.xscm.modulemain.activity.room.contacts.WheatContacts; import com.xscm.modulemain.activity.room.contacts.WheatContacts;
import com.xscm.moduleutil.bean.RoomGiftData;
import com.xscm.moduleutil.bean.room.RoomApplyListBean; import com.xscm.moduleutil.bean.room.RoomApplyListBean;
import com.xscm.moduleutil.http.BaseObserver; import com.xscm.moduleutil.http.BaseObserver;
import com.xscm.moduleutil.presenter.BasePresenter; import com.xscm.moduleutil.presenter.BasePresenter;
@@ -131,7 +132,7 @@ public class WheatPresenter extends BasePresenter<WheatContacts.View> implements
@Override @Override
public void roomGift(String room_id, String gift_id, String gift_num, String to_uid, String type, String pit_number) { public void roomGift(String room_id, String gift_id, String gift_num, String to_uid, String type, String pit_number) {
api.roomGift(room_id, gift_id, gift_num, to_uid, type, pit_number,"", new BaseObserver<String>() { api.roomGift(room_id, gift_id, gift_num, to_uid, type, pit_number,"", new BaseObserver<RoomGiftData>() {
@Override @Override
public void onSubscribe(Disposable d) { public void onSubscribe(Disposable d) {
@@ -139,7 +140,7 @@ public class WheatPresenter extends BasePresenter<WheatContacts.View> implements
} }
@Override @Override
public void onNext(String s) { public void onNext(RoomGiftData s) {
if (MvpRef==null){ if (MvpRef==null){
MvpRef=new WeakReference<>(mView); MvpRef=new WeakReference<>(mView);
} }

View File

@@ -16,9 +16,7 @@ import androidx.annotation.Nullable;
import com.alibaba.android.arouter.facade.annotation.Autowired; import com.alibaba.android.arouter.facade.annotation.Autowired;
import com.alibaba.android.arouter.facade.annotation.Route; import com.alibaba.android.arouter.facade.annotation.Route;
import com.alibaba.android.arouter.launcher.ARouter;
import com.xscm.modulemain.R; import com.xscm.modulemain.R;
import com.xscm.modulemain.activity.main.activity.MainActivity;
import com.xscm.modulemain.databinding.ActivityCreatedRoomBinding; import com.xscm.modulemain.databinding.ActivityCreatedRoomBinding;
import com.example.zhouwei.library.CustomPopWindow; import com.example.zhouwei.library.CustomPopWindow;
import com.hjq.toast.ToastUtils; import com.hjq.toast.ToastUtils;

View File

@@ -19,7 +19,6 @@ import com.xscm.modulemain.activity.user.presenter.DailyTasksPresenter;
import com.xscm.modulemain.BaseMvpActivity; import com.xscm.modulemain.BaseMvpActivity;
import com.xscm.modulemain.activity.WebViewActivity; import com.xscm.modulemain.activity.WebViewActivity;
import com.xscm.modulemain.manager.RoomManager; import com.xscm.modulemain.manager.RoomManager;
import com.xscm.moduleutil.base.CommonAppContext;
import com.xscm.moduleutil.base.WebUrlConstants; import com.xscm.moduleutil.base.WebUrlConstants;
import com.xscm.moduleutil.bean.GiftBoxBean; import com.xscm.moduleutil.bean.GiftBoxBean;
import com.xscm.moduleutil.bean.GiftName; import com.xscm.moduleutil.bean.GiftName;

View File

@@ -19,7 +19,6 @@ import com.rmondjone.locktableview.LockTableView;
import com.rmondjone.xrecyclerview.ProgressStyle; import com.rmondjone.xrecyclerview.ProgressStyle;
import com.xscm.modulemain.BaseMvpActivity; import com.xscm.modulemain.BaseMvpActivity;
import com.xscm.modulemain.R; import com.xscm.modulemain.R;
import com.xscm.modulemain.activity.user.conacts.NobleTitleConacts;
import com.xscm.modulemain.activity.user.presenter.NobleTitlePresenter; import com.xscm.modulemain.activity.user.presenter.NobleTitlePresenter;
import com.xscm.modulemain.databinding.ActivityNobleTitleBinding; import com.xscm.modulemain.databinding.ActivityNobleTitleBinding;
import com.xscm.modulemain.dialog.RoomAuctionWebViewDialog; import com.xscm.modulemain.dialog.RoomAuctionWebViewDialog;

View File

@@ -17,7 +17,6 @@ import com.xscm.modulemain.activity.user.presenter.PersonalityPresenter;
import com.xscm.modulemain.BaseMvpActivity; import com.xscm.modulemain.BaseMvpActivity;
import com.xscm.modulemain.activity.WebViewActivity; import com.xscm.modulemain.activity.WebViewActivity;
import com.xscm.moduleutil.adapter.MyPagerAdapter; import com.xscm.moduleutil.adapter.MyPagerAdapter;
import com.xscm.moduleutil.base.CommonAppContext;
import com.xscm.moduleutil.base.WebUrlConstants; import com.xscm.moduleutil.base.WebUrlConstants;
import com.xscm.moduleutil.bean.PersonaltyBean; import com.xscm.moduleutil.bean.PersonaltyBean;
import com.xscm.moduleutil.utils.ColorManager; import com.xscm.moduleutil.utils.ColorManager;

View File

@@ -8,7 +8,6 @@ import android.Manifest;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.media.MediaPlayer; import android.media.MediaPlayer;
import android.media.MediaRecorder; import android.media.MediaRecorder;
import android.os.Bundle;
import android.os.Environment; import android.os.Environment;
import android.os.Handler; import android.os.Handler;
import android.os.Looper; import android.os.Looper;

View File

@@ -14,7 +14,6 @@ import com.xscm.modulemain.databinding.ActivityUnderageBinding;
import com.xscm.modulemain.activity.user.presenter.UnderagePresenter; import com.xscm.modulemain.activity.user.presenter.UnderagePresenter;
import com.xscm.modulemain.BaseMvpActivity; import com.xscm.modulemain.BaseMvpActivity;
import com.xscm.modulemain.activity.WebViewActivity; import com.xscm.modulemain.activity.WebViewActivity;
import com.xscm.moduleutil.base.CommonAppContext;
import com.xscm.moduleutil.base.WebUrlConstants; import com.xscm.moduleutil.base.WebUrlConstants;
import com.xscm.moduleutil.utils.ARouteConstants; import com.xscm.moduleutil.utils.ARouteConstants;
import com.xscm.moduleutil.utils.ColorManager; import com.xscm.moduleutil.utils.ColorManager;

View File

@@ -42,6 +42,7 @@
tools:src="@mipmap/ic_launcher" tools:src="@mipmap/ic_launcher"
android:scaleType="fitCenter" android:scaleType="fitCenter"
android:visibility="gone" android:visibility="gone"
tools:visibility="visible"
app:layout_constraintEnd_toEndOf="@+id/im_performer" app:layout_constraintEnd_toEndOf="@+id/im_performer"
app:layout_constraintTop_toTopOf="@+id/im_performer" app:layout_constraintTop_toTopOf="@+id/im_performer"
/> />

View File

@@ -368,7 +368,7 @@
android:layout_marginStart="@dimen/dp_15" android:layout_marginStart="@dimen/dp_15"
android:layout_marginTop="@dimen/dp_20" android:layout_marginTop="@dimen/dp_20"
android:layout_marginEnd="@dimen/dp_15" android:layout_marginEnd="@dimen/dp_15"
android:visibility="invisible"> android:visibility="visible">
<ImageView <ImageView
android:id="@+id/im_noblesse" android:id="@+id/im_noblesse"

View File

@@ -1,101 +0,0 @@
<?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"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/cl_gift"
android:layout_width="@dimen/dp_77"
android:layout_height="@dimen/dp_119"
android:background="@mipmap/gift_bj"
>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/cl_iv_down_on"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:ignore="MissingConstraints"
>
<ImageView
android:id="@+id/iv_gift_pic"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginLeft="9dp"
android:layout_marginTop="5dp"
android:layout_marginRight="9dp"
android:src="@mipmap/default_image"
app:layout_constraintDimensionRatio="1:1.2"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/iv_down_on"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginLeft="9dp"
android:layout_marginTop="5dp"
android:layout_marginRight="9dp"
android:scaleType="fitXY"
android:src="@mipmap/room_gift_select_bg"
android:visibility="gone"
app:layout_constraintDimensionRatio="1:1.2"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
/>
<TextView
android:id="@+id/tv_gift_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:singleLine="true"
android:text="甜蜜奶酪"
android:textColor="@color/color_FFA9A9A9"
android:textSize="11sp"
app:layout_constraintLeft_toLeftOf="@+id/iv_gift_pic"
app:layout_constraintRight_toRightOf="@+id/iv_gift_pic"
app:layout_constraintTop_toBottomOf="@+id/iv_gift_pic" />
<TextView
android:id="@+id/tv_gift_price"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="1"
android:drawableLeft="@mipmap/jinb"
android:drawablePadding="@dimen/dp_3"
android:layout_marginBottom="@dimen/dp_5"
android:textColor="@color/color_FFFFBC00"
android:textSize="11sp"
app:layout_constraintLeft_toLeftOf="@+id/iv_gift_pic"
app:layout_constraintRight_toRightOf="@+id/iv_gift_pic"
app:layout_constraintTop_toBottomOf="@+id/tv_gift_name" />
<TextView
android:id="@+id/integral"
android:layout_width="@dimen/dp_35"
android:layout_height="@dimen/dp_13"
android:layout_gravity="center_horizontal"
android:background="@mipmap/text_bj"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:gravity="center"
android:text="x30"
android:textColor="@color/color_FF333333"
android:textSize="@dimen/sp_10"
android:visibility="gone"/>
</androidx.constraintlayout.widget.ConstraintLayout>
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@mipmap/noble_is_lock"
android:visibility="gone"
android:scaleType="fitCenter"
android:id="@+id/iv_gift_select"
tools:visibility="visible"
/>
</androidx.constraintlayout.widget.ConstraintLayout>