1:完成cp效果展示,
This commit is contained in:
@@ -122,6 +122,7 @@ public class GiftPackAdapter extends BaseAdapter {
|
||||
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.integral = (TextView) convertView.findViewById(R.id.integral);
|
||||
viewHolder.im_heart = (ImageView) convertView.findViewById(R.id.im_heartssss);
|
||||
convertView.setTag(viewHolder);
|
||||
} else {
|
||||
viewHolder = (GiftPackAdapter.ViewHolder) convertView.getTag();
|
||||
@@ -168,5 +169,6 @@ public class GiftPackAdapter extends BaseAdapter {
|
||||
public TextView tv_gift_change_love_values;
|
||||
public ImageView ivDownOn;
|
||||
public ConstraintLayout cl_iv_down_on;
|
||||
public ImageView im_heart;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.xscm.moduleutil.adapter;
|
||||
|
||||
import static android.view.View.GONE;
|
||||
import static android.view.View.VISIBLE;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.content.Context;
|
||||
@@ -122,14 +123,16 @@ public class GiftRoomAdapter extends BaseAdapter {
|
||||
if (convertView == null) {
|
||||
convertView = inflater.inflate(R.layout.item_gift_room, parent, false);
|
||||
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_price = (TextView) convertView.findViewById(R.id.tv_gift_price);
|
||||
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.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);
|
||||
|
||||
// im_heart现在位于顶层布局中
|
||||
viewHolder.im_heart = (ImageView) convertView.findViewById(R.id.im_heartssss);
|
||||
convertView.setTag(viewHolder);
|
||||
} else {
|
||||
viewHolder = (ViewHolder) convertView.getTag();
|
||||
@@ -146,7 +149,15 @@ public class GiftRoomAdapter extends BaseAdapter {
|
||||
if (giftModel.getIs_lock()==0){
|
||||
viewHolder.iv_gift_select.setVisibility(GONE);
|
||||
}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,
|
||||
@@ -214,6 +225,7 @@ public class GiftRoomAdapter extends BaseAdapter {
|
||||
public TextView tv_gift_change_love_values;
|
||||
public ImageView ivDownOn;
|
||||
public ImageView iv_gift_select;
|
||||
public ImageView im_heart;
|
||||
public ConstraintLayout cl_iv_down_on;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,14 +1,17 @@
|
||||
package com.xscm.moduleutil.bean;
|
||||
|
||||
import com.xscm.moduleutil.BaseEvent;
|
||||
import com.xscm.moduleutil.bean.blindboxwheel.BlindBoxBean;
|
||||
import com.xscm.moduleutil.bean.room.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
public class RoomMessageEvent {
|
||||
public class RoomMessageEvent extends BaseEvent {
|
||||
private int MsgType; // 消息类型,如 QXRoomMessageTypeJoin
|
||||
private String RoomId; // 房间 ID
|
||||
private T Text; // 携带的数据对象
|
||||
@@ -100,12 +103,15 @@ public class RoomMessageEvent {
|
||||
|
||||
private SingerInfo.SongInfo song_info;
|
||||
private SingerInfo.SongInfo next_song_info;
|
||||
|
||||
|
||||
}
|
||||
|
||||
@Data
|
||||
public static class text {
|
||||
private long position;
|
||||
private int is_mute;
|
||||
private RoomGiftData.CpType cp_type;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -34,6 +34,8 @@ public class RoonGiftModel {
|
||||
private int activities_id;//4:盲盒 ;5:天空之境;
|
||||
private int gift_bag;//10:天空之境 11:岁月之城 12:时空之巅
|
||||
private int is_lock;//爵位礼物 0:不锁 1:锁
|
||||
|
||||
private int is_cp;//1:是 0:不是
|
||||
public boolean isCan_send_self() {
|
||||
if ( isManghe()) {
|
||||
return true;
|
||||
|
||||
@@ -89,6 +89,10 @@ public class EMMessageInfo implements MultiItemEntity {
|
||||
public static final int QXRoomMessageTypeMuteRemoteAudio = 125;
|
||||
///小黑屋 关麦
|
||||
public static final int QXRoomMessageTypeMuteLocalAudio = 126;
|
||||
public static final int QXRoomMessageTypeCPDx = 130;//心动礼物,单向发送
|
||||
public static final int QXRoomMessageTypeCPSx = 131;//心动礼物,双向发送
|
||||
|
||||
|
||||
|
||||
/// 交友房阶段发生变化
|
||||
public static final int QXRoomMessageTypeRoomFriendPartDidChanged = 1049;
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -515,7 +515,11 @@ public interface ApiServer {
|
||||
|
||||
@FormUrlEncoded
|
||||
@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)
|
||||
Call<BaseModel<FirstChargeGiftBean>> firstChargeGift();
|
||||
|
||||
@@ -22,6 +22,7 @@ import com.xscm.moduleutil.bean.blindboxwheel.BlindReslutBean;
|
||||
import com.xscm.moduleutil.bean.blindboxwheel.XlhDrawBean;
|
||||
import com.xscm.moduleutil.bean.room.*;
|
||||
import com.xscm.moduleutil.bean.zhuangb.ZhuangBanShangChengBean;
|
||||
import com.xscm.moduleutil.listener.CPListener;
|
||||
import com.xscm.moduleutil.listener.MessageListenerSingleton;
|
||||
import com.xscm.moduleutil.utils.SpUtil;
|
||||
import com.xscm.moduleutil.utils.SystemUtils;
|
||||
@@ -39,7 +40,6 @@ import java.security.SecureRandom;
|
||||
import java.security.cert.X509Certificate;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.EventListener;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
@@ -48,7 +48,6 @@ import javax.net.ssl.SSLContext;
|
||||
import javax.net.ssl.TrustManager;
|
||||
import javax.net.ssl.X509TrustManager;
|
||||
|
||||
import io.reactivex.disposables.Disposable;
|
||||
import okhttp3.Cache;
|
||||
import okhttp3.OkHttpClient;
|
||||
import okhttp3.ResponseBody;
|
||||
@@ -142,6 +141,15 @@ public class RetrofitClient {
|
||||
mRetrofit = provideRetrofit(provideOkHttpClient());
|
||||
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() {
|
||||
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
|
||||
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<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) {
|
||||
sApiServer.roomGift(room_id, gift_id, gift_num, to_uid, type, pit_number, heart_id).enqueue(new Callback<BaseModel<RoomGiftData>>() {
|
||||
@Override
|
||||
public void onResponse(Call<BaseModel<String>> call, Response<BaseModel<String>> response) {
|
||||
onNextRetu(response, observer);
|
||||
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<String>> call, Throwable t) {
|
||||
public void onFailure(Call<BaseModel<RoomGiftData>> call, Throwable t) {
|
||||
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) {
|
||||
sApiServer.getDayDropGift().enqueue(new Callback<BaseModel<HeavenGiftBean>>() {
|
||||
@Override
|
||||
@@ -3383,8 +3445,7 @@ public class RetrofitClient {
|
||||
});
|
||||
}
|
||||
|
||||
public void roomRelationList(String
|
||||
type, BaseObserver<List<RoomRelationBean>> observer) {
|
||||
public void roomRelationList(String type, BaseObserver<List<RoomRelationBean>> observer) {
|
||||
sApiServer.roomRelationList(type).enqueue(new Callback<BaseModel<List<RoomRelationBean>>>() {
|
||||
@Override
|
||||
public void onResponse(Call<BaseModel<List<RoomRelationBean>>> call, Response<BaseModel<List<RoomRelationBean>>> response) {
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
@@ -15,6 +15,7 @@ import com.xscm.moduleutil.bean.RoomMessageEvent;
|
||||
import com.xscm.moduleutil.bean.room.EMMessageInfo;
|
||||
import com.xscm.moduleutil.event.RoomJoinMountModel;
|
||||
import com.xscm.moduleutil.event.UnreadCountEvent;
|
||||
import com.xscm.moduleutil.http.RetrofitClient;
|
||||
import com.xscm.moduleutil.rtc.MusicPlayBean;
|
||||
import com.xscm.moduleutil.utils.SpUtil;
|
||||
import com.tencent.imsdk.v2.V2TIMAdvancedMsgListener;
|
||||
@@ -103,6 +104,7 @@ public class MessageListenerSingleton {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 修改 notify 方法以增加保护
|
||||
private void notifyPublicScreenListeners(RoomMessageEvent message) {
|
||||
synchronized (publicScreenListeners) {
|
||||
@@ -217,7 +219,7 @@ public class MessageListenerSingleton {
|
||||
try {
|
||||
// 先退出当前群组(如果需要)
|
||||
if (groupId != null && !groupId.equals(roomId)) {
|
||||
LogUtils.d("MessageListener", "开始退出群组: " + groupId +"____room:"+ roomId);
|
||||
LogUtils.d("MessageListener", "开始退出群组: " + groupId + "____room:" + roomId);
|
||||
CountDownLatch quitLatch = new CountDownLatch(1);
|
||||
boolean[] quitSuccess = {false};
|
||||
|
||||
@@ -225,14 +227,14 @@ public class MessageListenerSingleton {
|
||||
V2TIMManager.getInstance().quitGroup("room" + groupId, new V2TIMCallback() {
|
||||
@Override
|
||||
public void onSuccess() {
|
||||
LogUtils.d("MessageListener", "退出群组成功: " + groupId+"____room:"+ roomId);
|
||||
LogUtils.d("MessageListener", "退出群组成功: " + groupId + "____room:" + roomId);
|
||||
quitSuccess[0] = true;
|
||||
quitLatch.countDown();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(int code, String desc) {
|
||||
LogUtils.e("MessageListener", "退出群组失败: " + groupId +"____room:"+ roomId + ", code=" + code + ", desc=" + desc);
|
||||
LogUtils.e("MessageListener", "退出群组失败: " + groupId + "____room:" + roomId + ", code=" + code + ", desc=" + desc);
|
||||
quitSuccess[0] = false;
|
||||
quitLatch.countDown();
|
||||
}
|
||||
@@ -313,7 +315,12 @@ public class MessageListenerSingleton {
|
||||
LogUtils.d("C2C 自定义(信令)消息 " + sender.getNickName());
|
||||
String message = new String(customData, StandardCharsets.UTF_8);
|
||||
RoomMessageEvent event = GsonUtils.fromJson(message, RoomMessageEvent.class);
|
||||
notifyMessageReceived(event);
|
||||
if (event.getMsgType() == 130 || event.getMsgType() == 131) {
|
||||
// EventBus.getDefault().post(event);
|
||||
RetrofitClient.getInstance().getCpListener().onReceiveMsg(event);
|
||||
} else {
|
||||
notifyMessageReceived(event);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -486,7 +493,7 @@ public class MessageListenerSingleton {
|
||||
|
||||
if (instance != null) {
|
||||
instance.listeners.clear();
|
||||
removeAllListeners();
|
||||
// removeAllListeners();
|
||||
isInitialized = false;
|
||||
groupId = null;
|
||||
LogUtils.e("@@@", "重置成功");
|
||||
@@ -497,7 +504,7 @@ public class MessageListenerSingleton {
|
||||
public static void reset(String roomId) {
|
||||
if (instance != null) {
|
||||
instance.listeners.clear();
|
||||
removeAllListeners();
|
||||
// removeAllListeners();
|
||||
isInitialized = false;
|
||||
groupId = null;
|
||||
// instance = null;
|
||||
@@ -508,7 +515,7 @@ public class MessageListenerSingleton {
|
||||
|
||||
|
||||
// 确保监听器已添加
|
||||
private void ensureListenersAdded() {
|
||||
public void ensureListenersAdded() {
|
||||
initListeners();
|
||||
addAllListeners();
|
||||
}
|
||||
@@ -574,7 +581,32 @@ public class MessageListenerSingleton {
|
||||
);
|
||||
}
|
||||
|
||||
public void sendCustomC2CMessage(String userId, byte[] binaryData) {
|
||||
// TODO: 2025/11/19 添加发送公共方法,messageType:发送的type;message:发送的内容 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.setExcludedFromUnreadCount(true);
|
||||
|
||||
@@ -6,6 +6,7 @@ import com.xscm.moduleutil.bean.GiftLabelBean;
|
||||
import com.xscm.moduleutil.bean.GiftPackBean;
|
||||
import com.xscm.moduleutil.bean.GiftPackListCount;
|
||||
import com.xscm.moduleutil.bean.RewardUserBean;
|
||||
import com.xscm.moduleutil.bean.RoomGiftData;
|
||||
import com.xscm.moduleutil.bean.RoonGiftModel;
|
||||
import com.xscm.moduleutil.bean.WalletBean;
|
||||
import com.xscm.moduleutil.bean.room.RoomAuction;
|
||||
@@ -102,7 +103,7 @@ public class RewardGiftPresenter extends BasePresenter<RewardGiftContacts.View>
|
||||
|
||||
@Override
|
||||
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
|
||||
public void onSubscribe(Disposable d) {
|
||||
@@ -110,7 +111,7 @@ public class RewardGiftPresenter extends BasePresenter<RewardGiftContacts.View>
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(String s) {
|
||||
public void onNext(RoomGiftData s) {
|
||||
if (MvpRef == null) {
|
||||
MvpRef = new WeakReference<>(mView);
|
||||
}
|
||||
|
||||
@@ -19,7 +19,7 @@ import java.util.Map;
|
||||
public class ColorManager {
|
||||
private static ColorManager instance;
|
||||
private String primaryColor = "#3ABC6D"; // 默认主题色
|
||||
private String buttonColor = "#6D6D6D"; // 默认按钮色
|
||||
private String buttonColor = "#FFFFFF"; // 默认按钮色
|
||||
|
||||
// 监听器列表,用于通知颜色变化
|
||||
private List<ColorChangeListener> listeners = new ArrayList<>();
|
||||
@@ -80,7 +80,7 @@ public class ColorManager {
|
||||
try {
|
||||
return Color.parseColor(buttonColor);
|
||||
} catch (Exception e) {
|
||||
return Color.parseColor("#6D6D6D"); // 默认颜色
|
||||
return Color.parseColor("#FFFFFF"); // 默认颜色
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -207,7 +207,7 @@ public class ImageUtils {
|
||||
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) {
|
||||
|
||||
@@ -61,7 +61,7 @@ public class MeHeadView extends ConstraintLayout {
|
||||
|
||||
if (nobilityImage!=null && !TextUtils.isEmpty(nobilityImage)){
|
||||
iv_frame_bg.setVisibility(VISIBLE);
|
||||
ImageUtils.loadHead(nobilityImage, iv_frame_bg);
|
||||
ImageUtils.loadRoomItem(nobilityImage, iv_frame_bg);
|
||||
}else {
|
||||
iv_frame_bg.setVisibility(GONE);
|
||||
}
|
||||
|
||||
@@ -278,6 +278,7 @@ public class Constants {
|
||||
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 POST_CP_GIVE_GIFT = "/api/UserCp/cpGiveGift";//用户CP礼物回赠
|
||||
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 DOWN_PIT = "/api/RoomPit/down_pit";//下麦
|
||||
|
||||
@@ -53,7 +53,10 @@
|
||||
android:layout_alignParentStart="true"
|
||||
android:layout_marginStart="@dimen/dp_20"
|
||||
android:text="取消"
|
||||
android:gravity="center"
|
||||
android:textSize="@dimen/sp_14"
|
||||
android:paddingHorizontal="@dimen/dp_20"
|
||||
android:paddingVertical="@dimen/dp_10"
|
||||
android:textColor="@color/color_FF999999"
|
||||
android:background="@drawable/bg_r53_f3f3f3"
|
||||
|
||||
@@ -65,7 +68,11 @@
|
||||
android:layout_height="@dimen/dp_42"
|
||||
android:layout_centerInParent="true"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:paddingHorizontal="@dimen/dp_20"
|
||||
android:paddingVertical="@dimen/dp_10"
|
||||
android:text="确认"
|
||||
android:textSize="@dimen/sp_14"
|
||||
android:gravity="center"
|
||||
android:background="@drawable/cs"/>
|
||||
</RelativeLayout>
|
||||
</LinearLayout>
|
||||
|
||||
@@ -86,6 +86,17 @@
|
||||
|
||||
</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
|
||||
android:id="@+id/iv_gift_select"
|
||||
android:layout_width="match_parent"
|
||||
|
||||
@@ -40,6 +40,7 @@
|
||||
android:scaleType="fitXY"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintDimensionRatio="1:1"
|
||||
app:layout_constraintWidth_percent="0.85"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
@@ -49,7 +50,7 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/dp_1"
|
||||
android:orientation="horizontal"
|
||||
app:layout_constraintGuide_percent="0.5" />
|
||||
app:layout_constraintGuide_percent="0.53" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/iv_frame_bg"
|
||||
|
||||
BIN
BaseModule/src/main/res/mipmap-hdpi/icon_heart.webp
Normal file
BIN
BaseModule/src/main/res/mipmap-hdpi/icon_heart.webp
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 890 B |
BIN
BaseModule/src/main/res/mipmap-xhdpi/icon_heart.webp
Normal file
BIN
BaseModule/src/main/res/mipmap-xhdpi/icon_heart.webp
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.2 KiB |
BIN
BaseModule/src/main/res/mipmap-xxhdpi/icon_heart.webp
Normal file
BIN
BaseModule/src/main/res/mipmap-xxhdpi/icon_heart.webp
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.1 KiB |
@@ -28,21 +28,29 @@ import android.widget.FrameLayout;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.core.content.ContextCompat;
|
||||
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.ToastUtils;
|
||||
import com.tencent.imsdk.v2.V2TIMSDKListener;
|
||||
import com.tencent.imsdk.v2.V2TIMValueCallback;
|
||||
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.moduleutil.BaseEvent;
|
||||
import com.xscm.moduleutil.R;
|
||||
import com.xscm.moduleutil.activity.BaseAppCompatActivity;
|
||||
import com.xscm.moduleutil.activity.IPresenter;
|
||||
import com.xscm.moduleutil.activity.IView;
|
||||
import com.xscm.modulemain.activity.WebViewActivity;
|
||||
import com.xscm.moduleutil.base.CommonAppContext;
|
||||
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.XLHBean;
|
||||
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.RedBean;
|
||||
import com.xscm.moduleutil.event.UnreadCountEvent;
|
||||
import com.xscm.moduleutil.http.BaseObserver;
|
||||
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.ImageUtils;
|
||||
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.Subscribe;
|
||||
import org.greenrobot.eventbus.ThreadMode;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
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
|
||||
IView<Activity> {
|
||||
|
||||
protected P MvpPre;
|
||||
private ConfirmDialog confirmDialog;
|
||||
|
||||
protected abstract P bindPresenter();
|
||||
|
||||
@@ -102,6 +119,23 @@ public abstract class BaseMvpActivity<P extends IPresenter, VDB extends ViewData
|
||||
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
|
||||
protected void onDestroy() {
|
||||
ClickUtils.clearAllClickRecords();
|
||||
@@ -154,6 +188,46 @@ public abstract class BaseMvpActivity<P extends IPresenter, VDB extends ViewData
|
||||
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)
|
||||
public void logOutEvent(UserBean userBean) {
|
||||
// 在用户 UI 点击登录的时候调用
|
||||
@@ -235,30 +309,37 @@ 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 -> {
|
||||
// 点击“确认”按钮时执行删除操作
|
||||
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 -> {
|
||||
// 点击“取消”按钮时什么都不做
|
||||
|
||||
}, false, 0).show();
|
||||
}, false,0).show();
|
||||
}
|
||||
|
||||
|
||||
@@ -298,7 +379,7 @@ public abstract class BaseMvpActivity<P extends IPresenter, VDB extends ViewData
|
||||
private final Object hourlyQueueLock = new Object(); // 小时榜队列同步锁
|
||||
private boolean isHourlyProcessing = false; // 小时榜处理状态标志
|
||||
|
||||
|
||||
// TODO: 2025/11/19 收到小时榜
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
public void onMessageReceived(List<HourlyBean> hourlyBean) {
|
||||
LogUtils.e("收到小时榜", hourlyBean);
|
||||
@@ -1008,7 +1089,7 @@ public abstract class BaseMvpActivity<P extends IPresenter, VDB extends ViewData
|
||||
public void onEvent(ChatInfo event) {
|
||||
String id = event.getId().replace("g", "");
|
||||
Intent intent = new Intent(this, WebViewActivity.class);
|
||||
intent.putExtra("url", String.format(WebUrlConstants.INSTANCE.getWEB_SET_GROUP_URL(), SpUtil.getToken(),id));
|
||||
intent.putExtra("url", String.format(WebUrlConstants.INSTANCE.getWEB_SET_GROUP_URL(), SpUtil.getToken(), id));
|
||||
startActivity(intent);
|
||||
}
|
||||
|
||||
|
||||
@@ -30,7 +30,6 @@ import com.xscm.moduleutil.bean.UserBean;
|
||||
import com.xscm.moduleutil.utils.BarUtils;
|
||||
import com.xscm.moduleutil.utils.PreferencesUtils;
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
import org.greenrobot.eventbus.Subscribe;
|
||||
import org.greenrobot.eventbus.ThreadMode;
|
||||
|
||||
|
||||
@@ -31,7 +31,6 @@ import androidx.core.content.ContextCompat;
|
||||
import androidx.fragment.app.Fragment;
|
||||
|
||||
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.LogUtils;
|
||||
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.event.RoomOutEvent;
|
||||
import com.xscm.moduleutil.event.UnreadCountEvent;
|
||||
import com.xscm.moduleutil.listener.MessageListenerSingleton;
|
||||
import com.xscm.moduleutil.utils.ARouteConstants;
|
||||
import com.xscm.moduleutil.utils.BackgroundManager;
|
||||
import com.xscm.moduleutil.utils.ColorManager;
|
||||
@@ -168,6 +168,8 @@ public class MainActivity extends BaseMvpActivity<HomePresenter, ActivityMainBin
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
MessageListenerSingleton.getInstance().ensureListenersAdded();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
package com.xscm.modulemain.activity.plaza.activity;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.app.Activity;
|
||||
import android.content.ClipData;
|
||||
import android.content.ClipboardManager;
|
||||
import android.os.Handler;
|
||||
|
||||
@@ -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.fragment.ChatRoomFragment
|
||||
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.RoomChartsFragment
|
||||
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.RedPacketInfo
|
||||
import com.xscm.moduleutil.bean.RoomCharmRankBean
|
||||
import com.xscm.moduleutil.bean.RoomGiftData
|
||||
import com.xscm.moduleutil.bean.RoomInputEvent
|
||||
import com.xscm.moduleutil.bean.RoomMessageEvent
|
||||
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.RoomAuction
|
||||
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.RoomInfoResp
|
||||
import com.xscm.moduleutil.bean.room.RoomOnline
|
||||
@@ -1106,11 +1105,11 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
|
||||
"1",
|
||||
giftGiveEvent!!.getPit(),
|
||||
giftGiveEvent!!.heart_id,
|
||||
object : BaseObserver<String?>() {
|
||||
object : BaseObserver<RoomGiftData?>() {
|
||||
override fun onSubscribe(d: Disposable) {
|
||||
}
|
||||
|
||||
override fun onNext(s: String) {
|
||||
override fun onNext(s: RoomGiftData) {
|
||||
showGiftGiveProgress()
|
||||
}
|
||||
|
||||
|
||||
@@ -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)
|
||||
public void roomInfoEvent(RoomMessageEvent messageEvent) {
|
||||
|
||||
@@ -166,7 +166,40 @@ public class RoomJukeboxFragment extends BaseMvpFragment<JukeboxPresenter, Fragm
|
||||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
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("暂无演唱者");
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -321,40 +354,40 @@ public class RoomJukeboxFragment extends BaseMvpFragment<JukeboxPresenter, Fragm
|
||||
}
|
||||
adapter.setNewData(roomPitBeans);
|
||||
|
||||
if (roomInfoResp.getSinger_info()!=null){
|
||||
if (roomInfoResp.getSinger_info().getSong_info()!=null){
|
||||
if (roomInfoResp.getSinger_info() != null) {
|
||||
if (roomInfoResp.getSinger_info().getSong_info() != null) {
|
||||
mBinding.tvPerformerName.setVisibility(GONE);
|
||||
mBinding.tvNetName.setVisibility(VISIBLE);
|
||||
mBinding.ciNetAva.setVisibility(VISIBLE);
|
||||
ImageUtils.loadHead(roomInfoResp.getSinger_info().getSong_info().getSinger_avatar(),mBinding.ciUserAva);
|
||||
mBinding.tvSong.setText("演唱歌曲:"+roomInfoResp.getSinger_info().getSong_info().getSong_name());
|
||||
ImageUtils.loadHead(roomInfoResp.getSinger_info().getSong_info().getBoss_avatar(),mBinding.ciNetAva);
|
||||
ImageUtils.loadHead(roomInfoResp.getSinger_info().getSong_info().getSinger_avatar(), mBinding.ciUserAva);
|
||||
mBinding.tvSong.setText("演唱歌曲:" + roomInfoResp.getSinger_info().getSong_info().getSong_name());
|
||||
ImageUtils.loadHead(roomInfoResp.getSinger_info().getSong_info().getBoss_avatar(), mBinding.ciNetAva);
|
||||
mBinding.tvNetName.setText("老板");
|
||||
songId= roomInfoResp.getSinger_info().getSong_info().getSinger_song_id();
|
||||
songId = roomInfoResp.getSinger_info().getSong_info().getSinger_song_id();
|
||||
|
||||
if (roomInfoResp.getSinger_info().getNext_song_info()!=null){
|
||||
if (roomInfoResp.getSinger_info().getNext_song_info() != null) {
|
||||
mBinding.guestContainer.setVisibility(View.VISIBLE);
|
||||
ImageUtils.loadHead(roomInfoResp.getSinger_info().getNext_song_info().getSinger_avatar(),mBinding.ciGsAva);
|
||||
ImageUtils.loadHead(roomInfoResp.getSinger_info().getNext_song_info().getSinger_avatar(), mBinding.ciGsAva);
|
||||
mBinding.tvGsName.setText(roomInfoResp.getSinger_info().getNext_song_info().getSinger_nickname());
|
||||
}else {
|
||||
} else {
|
||||
mBinding.guestContainer.setVisibility(GONE);
|
||||
}
|
||||
|
||||
String userId= String.valueOf(roomInfoResp.getSinger_info().getSong_info().getSinger_user_id());
|
||||
if(mBinding.wvZc.getUserId().equals(userId)){
|
||||
String userId = String.valueOf(roomInfoResp.getSinger_info().getSong_info().getSinger_user_id());
|
||||
if (mBinding.wvZc.getUserId().equals(userId)) {
|
||||
mBinding.wvZc.pitBean.setImageType(true);
|
||||
mBinding.wvZc.setData(mBinding.wvZc.pitBean);
|
||||
}else {
|
||||
} else {
|
||||
for (RoomPitBean roomPitBean : roomPitBeans) {
|
||||
if (roomPitBean.getUser_id().equals(userId)){
|
||||
if (roomPitBean.getUser_id().equals(userId)) {
|
||||
roomPitBean.setImageType(true);
|
||||
}else {
|
||||
} else {
|
||||
roomPitBean.setImageType(false);
|
||||
}
|
||||
}
|
||||
adapter.notifyDataSetChanged();
|
||||
}
|
||||
}else {
|
||||
} else {
|
||||
mBinding.tvNetName.setVisibility(GONE);
|
||||
mBinding.ciNetAva.setVisibility(GONE);
|
||||
}
|
||||
@@ -509,9 +542,9 @@ public class RoomJukeboxFragment extends BaseMvpFragment<JukeboxPresenter, Fragm
|
||||
List<RoomPitBean> dataList = new ArrayList<>(adapter.getData());
|
||||
int fromIndex = Integer.parseInt(fromPit) - 1;
|
||||
int toIndex = Integer.parseInt(toPit) - 1;
|
||||
if(toIndex>adapter.getData().size()-1){
|
||||
UserInfo fromUserInfo=event.getText().getFromUserInfo();
|
||||
pitNumber= toPit;
|
||||
if (toIndex > adapter.getData().size() - 1) {
|
||||
UserInfo fromUserInfo = event.getText().getFromUserInfo();
|
||||
pitNumber = toPit;
|
||||
RoomPitBean pitBean = new RoomPitBean();
|
||||
pitBean.setPit_number(pitNumber);
|
||||
pitBean.setUser_id(fromUserInfo.getUser_id() + "");
|
||||
@@ -533,7 +566,7 @@ public class RoomJukeboxFragment extends BaseMvpFragment<JukeboxPresenter, Fragm
|
||||
temp.setSex("");
|
||||
temp.setCharm("");
|
||||
temp.setDress("");
|
||||
dataList.set(fromIndex,temp);
|
||||
dataList.set(fromIndex, temp);
|
||||
adapter.notifyDataSetChanged();
|
||||
return;
|
||||
}
|
||||
@@ -576,35 +609,37 @@ public class RoomJukeboxFragment extends BaseMvpFragment<JukeboxPresenter, Fragm
|
||||
|
||||
// TODO: 2025/11/18 下一首歌的演唱者
|
||||
public void event1071(RoomMessageEvent messageEvent) {
|
||||
if (messageEvent.getText().getNext_song_info()!=null){
|
||||
if (messageEvent.getText().getNext_song_info() != null) {
|
||||
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());
|
||||
roomInfoResp.getSinger_info().setNext_song_info(messageEvent.getText().getNext_song_info());
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: 2025/11/18 当前 歌曲的演唱者
|
||||
public void event1070(RoomMessageEvent messageEvent) {
|
||||
|
||||
if(messageEvent.getText().getSong_info()!=null){
|
||||
if (messageEvent.getText().getSong_info() != null) {
|
||||
mBinding.tvPerformerName.setVisibility(GONE);
|
||||
mBinding.tvNetName.setVisibility(VISIBLE);
|
||||
mBinding.ciNetAva.setVisibility(VISIBLE);
|
||||
ImageUtils.loadHead(messageEvent.getText().getSong_info().getSinger_avatar(),mBinding.ciUserAva);
|
||||
mBinding.tvSong.setText("演唱歌曲:"+messageEvent.getText().getSong_info().getSong_name());
|
||||
ImageUtils.loadHead(messageEvent.getText().getSong_info().getSinger_avatar(), mBinding.ciUserAva);
|
||||
mBinding.tvSong.setText("演唱歌曲:" + messageEvent.getText().getSong_info().getSong_name());
|
||||
|
||||
ImageUtils.loadHead(messageEvent.getText().getSong_info().getBoss_avatar(),mBinding.ciNetAva);
|
||||
roomInfoResp.getSinger_info().setSong_info(messageEvent.getText().getSong_info());
|
||||
ImageUtils.loadHead(messageEvent.getText().getSong_info().getBoss_avatar(), mBinding.ciNetAva);
|
||||
mBinding.tvNetName.setText("老板");
|
||||
songId= messageEvent.getText().getSong_info().getSinger_song_id();
|
||||
String userId= String.valueOf(messageEvent.getText().getSong_info().getSinger_user_id());
|
||||
if(mBinding.wvZc.getUserId().equals(userId)){
|
||||
songId = messageEvent.getText().getSong_info().getSinger_song_id();
|
||||
String userId = String.valueOf(messageEvent.getText().getSong_info().getSinger_user_id());
|
||||
if (mBinding.wvZc.getUserId().equals(userId)) {
|
||||
mBinding.wvZc.pitBean.setImageType(true);
|
||||
mBinding.wvZc.setData(mBinding.wvZc.pitBean);
|
||||
}else {
|
||||
} else {
|
||||
for (RoomPitBean roomPitBean : adapter.getData()) {
|
||||
if (roomPitBean.getUser_id().equals(userId)){
|
||||
if (roomPitBean.getUser_id().equals(userId)) {
|
||||
roomPitBean.setImageType(true);
|
||||
}else {
|
||||
} else {
|
||||
roomPitBean.setImageType(false);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -589,7 +589,7 @@ public class SingSongFragment extends BaseRoomFragment<SingSongPresenter, Fragme
|
||||
// 转换为 byte[]
|
||||
byte[] binaryData = json.getBytes(StandardCharsets.UTF_8);
|
||||
// 创建自定义消息
|
||||
MessageListenerSingleton.getInstance().sendCustomC2CMessage(
|
||||
MessageListenerSingleton.getInstance().sendCustomC2CMessage125(
|
||||
roomInfoRespPk.getRoom_info().getPit_list().get(8).getUser_id(),
|
||||
binaryData
|
||||
);
|
||||
|
||||
@@ -3,6 +3,7 @@ package com.xscm.modulemain.activity.room.presenter;
|
||||
import android.content.Context;
|
||||
|
||||
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.http.BaseObserver;
|
||||
import com.xscm.moduleutil.presenter.BasePresenter;
|
||||
@@ -131,7 +132,7 @@ public class WheatPresenter extends BasePresenter<WheatContacts.View> implements
|
||||
|
||||
@Override
|
||||
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
|
||||
public void onSubscribe(Disposable d) {
|
||||
@@ -139,7 +140,7 @@ public class WheatPresenter extends BasePresenter<WheatContacts.View> implements
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(String s) {
|
||||
public void onNext(RoomGiftData s) {
|
||||
if (MvpRef==null){
|
||||
MvpRef=new WeakReference<>(mView);
|
||||
}
|
||||
|
||||
@@ -16,9 +16,7 @@ import androidx.annotation.Nullable;
|
||||
|
||||
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.xscm.modulemain.R;
|
||||
import com.xscm.modulemain.activity.main.activity.MainActivity;
|
||||
import com.xscm.modulemain.databinding.ActivityCreatedRoomBinding;
|
||||
import com.example.zhouwei.library.CustomPopWindow;
|
||||
import com.hjq.toast.ToastUtils;
|
||||
|
||||
@@ -19,7 +19,6 @@ import com.xscm.modulemain.activity.user.presenter.DailyTasksPresenter;
|
||||
import com.xscm.modulemain.BaseMvpActivity;
|
||||
import com.xscm.modulemain.activity.WebViewActivity;
|
||||
import com.xscm.modulemain.manager.RoomManager;
|
||||
import com.xscm.moduleutil.base.CommonAppContext;
|
||||
import com.xscm.moduleutil.base.WebUrlConstants;
|
||||
import com.xscm.moduleutil.bean.GiftBoxBean;
|
||||
import com.xscm.moduleutil.bean.GiftName;
|
||||
|
||||
@@ -19,7 +19,6 @@ import com.rmondjone.locktableview.LockTableView;
|
||||
import com.rmondjone.xrecyclerview.ProgressStyle;
|
||||
import com.xscm.modulemain.BaseMvpActivity;
|
||||
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.databinding.ActivityNobleTitleBinding;
|
||||
import com.xscm.modulemain.dialog.RoomAuctionWebViewDialog;
|
||||
|
||||
@@ -17,7 +17,6 @@ import com.xscm.modulemain.activity.user.presenter.PersonalityPresenter;
|
||||
import com.xscm.modulemain.BaseMvpActivity;
|
||||
import com.xscm.modulemain.activity.WebViewActivity;
|
||||
import com.xscm.moduleutil.adapter.MyPagerAdapter;
|
||||
import com.xscm.moduleutil.base.CommonAppContext;
|
||||
import com.xscm.moduleutil.base.WebUrlConstants;
|
||||
import com.xscm.moduleutil.bean.PersonaltyBean;
|
||||
import com.xscm.moduleutil.utils.ColorManager;
|
||||
|
||||
@@ -8,7 +8,6 @@ import android.Manifest;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.media.MediaPlayer;
|
||||
import android.media.MediaRecorder;
|
||||
import android.os.Bundle;
|
||||
import android.os.Environment;
|
||||
import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
|
||||
@@ -14,7 +14,6 @@ import com.xscm.modulemain.databinding.ActivityUnderageBinding;
|
||||
import com.xscm.modulemain.activity.user.presenter.UnderagePresenter;
|
||||
import com.xscm.modulemain.BaseMvpActivity;
|
||||
import com.xscm.modulemain.activity.WebViewActivity;
|
||||
import com.xscm.moduleutil.base.CommonAppContext;
|
||||
import com.xscm.moduleutil.base.WebUrlConstants;
|
||||
import com.xscm.moduleutil.utils.ARouteConstants;
|
||||
import com.xscm.moduleutil.utils.ColorManager;
|
||||
|
||||
@@ -42,6 +42,7 @@
|
||||
tools:src="@mipmap/ic_launcher"
|
||||
android:scaleType="fitCenter"
|
||||
android:visibility="gone"
|
||||
tools:visibility="visible"
|
||||
app:layout_constraintEnd_toEndOf="@+id/im_performer"
|
||||
app:layout_constraintTop_toTopOf="@+id/im_performer"
|
||||
/>
|
||||
|
||||
@@ -368,7 +368,7 @@
|
||||
android:layout_marginStart="@dimen/dp_15"
|
||||
android:layout_marginTop="@dimen/dp_20"
|
||||
android:layout_marginEnd="@dimen/dp_15"
|
||||
android:visibility="invisible">
|
||||
android:visibility="visible">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/im_noblesse"
|
||||
|
||||
@@ -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>
|
||||
Reference in New Issue
Block a user