diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 4baafce..a40b96c 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -149,10 +149,10 @@ - - - - + + + + () { + public void drawGiftList(String giftBagId, String gift_user_ids, String roomId, String num,String heart_id) { + api.drawGiftList(giftBagId, gift_user_ids, roomId, num,heart_id, new BaseObserver() { @Override public void onSubscribe(Disposable d) { diff --git a/moduleUtil/src/main/java/com/xscm/moduleutil/http/ApiServer.java b/moduleUtil/src/main/java/com/xscm/moduleutil/http/ApiServer.java index 80ba0fc..3daedc5 100644 --- a/moduleUtil/src/main/java/com/xscm/moduleutil/http/ApiServer.java +++ b/moduleUtil/src/main/java/com/xscm/moduleutil/http/ApiServer.java @@ -45,6 +45,7 @@ import com.xscm.moduleutil.bean.RoomSearchResp; import com.xscm.moduleutil.bean.RoomSubsidy; import com.xscm.moduleutil.bean.RoomTime; import com.xscm.moduleutil.bean.RoomTypeModel; +import com.xscm.moduleutil.bean.RoomUserCharmListBean; import com.xscm.moduleutil.bean.RoonGiftModel; import com.xscm.moduleutil.bean.SongMusicBean; import com.xscm.moduleutil.bean.ThemeBean; @@ -738,7 +739,7 @@ public interface ApiServer { @FormUrlEncoded @POST(Constants.POST_DRAW_GIFT_LIST) - Call> drawGiftList(@Field("gift_bag_id") String gift_bag_id, @Field("gift_user_ids") String gift_user_ids,@Field("room_id")String room_id,@Field("num")String num); + Call> drawGiftList(@Field("gift_bag_id") String gift_bag_id, @Field("gift_user_ids") String gift_user_ids,@Field("room_id")String room_id,@Field("num")String num,@Field("heart_id") String heart_id); @GET(Constants.GET_MY_RECORD) Call>> getMyRecord(@Query("gift_bag_id")String gift_bag_id,@Query("page")String page,@Query("page_size")String page_size); @@ -766,6 +767,10 @@ public interface ApiServer { @FormUrlEncoded @POST(Constants.POST_GIFT_ALL_CLEAR) - Call> getGiftPack(@Field("room_id") String roomId,@Field("to_uid") String user_id); + Call> getGiftPack(@Field("room_id") String roomId,@Field("to_uid") String user_id,@Field("heart_id") String heart_id); + + @FormUrlEncoded + @POST(Constants.POST_ROOM_USER_CHARM_LIST) + Call>> roomUserCharmList(@Field("room_id") String roomId,@Field("user_id") String user_id); } diff --git a/moduleUtil/src/main/java/com/xscm/moduleutil/http/RetrofitClient.java b/moduleUtil/src/main/java/com/xscm/moduleutil/http/RetrofitClient.java index a6ccc1c..13de419 100644 --- a/moduleUtil/src/main/java/com/xscm/moduleutil/http/RetrofitClient.java +++ b/moduleUtil/src/main/java/com/xscm/moduleutil/http/RetrofitClient.java @@ -62,6 +62,7 @@ import com.xscm.moduleutil.bean.RoomSubsidy; import com.xscm.moduleutil.bean.RoomSubsidyDetails; import com.xscm.moduleutil.bean.RoomTime; import com.xscm.moduleutil.bean.RoomTypeModel; +import com.xscm.moduleutil.bean.RoomUserCharmListBean; import com.xscm.moduleutil.bean.RoonGiftModel; import com.xscm.moduleutil.bean.SongMusicBean; import com.xscm.moduleutil.bean.ThemeBean; @@ -457,8 +458,8 @@ public class RetrofitClient { sApiServer.giftPack().compose(new DefaultTransformer<>()).subscribe(observer); } - public void getGiftPack(String roomId, String userId,BaseObserver observer){ - sApiServer.getGiftPack(roomId,userId).enqueue(new Callback>() { + public void getGiftPack(String roomId, String userId, String heart_id,BaseObserver observer){ + sApiServer.getGiftPack(roomId,userId,heart_id).enqueue(new Callback>() { @Override public void onResponse(Call> call, Response> response) { if (response.code() == 200){ @@ -2334,8 +2335,8 @@ public class RetrofitClient { } ///盲盒转盘抽奖 - public void drawGiftList(String giftBagId, String gift_user_ids, String roomId, String num,BaseObserver observer){ - sApiServer.drawGiftList(giftBagId, gift_user_ids, roomId, num).enqueue(new Callback>() { + public void drawGiftList(String giftBagId, String gift_user_ids, String roomId, String num,String heart_id,BaseObserver observer){ + sApiServer.drawGiftList(giftBagId, gift_user_ids, roomId, num,heart_id).enqueue(new Callback>() { @Override public void onResponse(Call> call, Response> response) { if (response.code() == 200) { @@ -2441,4 +2442,25 @@ public class RetrofitClient { }); } + public void roomUserCharmList(String room_id, String user_id, BaseObserver> observer){ + sApiServer.roomUserCharmList(room_id,user_id).enqueue(new Callback>>() { + @Override + public void onResponse(Call>> call, Response>> response) { + if (response.code()==200){ + BaseModel> baseModel = response.body(); + if (baseModel.getCode()==1){ + observer.onNext(baseModel.getData()); + }else if (baseModel.getCode()==0){ + observer.onNext(null); + } + } + } + + @Override + public void onFailure(Call>> call, Throwable t) { + t.printStackTrace(); + } + }); + } + } diff --git a/moduleUtil/src/main/java/com/xscm/moduleutil/listener/MessageListenerSingleton.java b/moduleUtil/src/main/java/com/xscm/moduleutil/listener/MessageListenerSingleton.java index 3f6c1e7..9a3e9ef 100644 --- a/moduleUtil/src/main/java/com/xscm/moduleutil/listener/MessageListenerSingleton.java +++ b/moduleUtil/src/main/java/com/xscm/moduleutil/listener/MessageListenerSingleton.java @@ -293,13 +293,13 @@ public class MessageListenerSingleton { V2TIMManager.getInstance().quitGroup("room" + mRoomId, new V2TIMCallback() { @Override public void onSuccess() { - LogUtils.d("退出群组成功"); + LogUtils.d("@@@","退出群组成功"+mRoomId); // removeAllListeners(); // 移除所有监听器 } @Override public void onError(int code, String desc) { - LogUtils.d("退出群组失败", code, desc); + LogUtils.d("@@@","退出群组失败"+mRoomId, code, desc); // removeAllListeners(); // 即使失败也移除监听器 } }); @@ -313,6 +313,7 @@ public class MessageListenerSingleton { isInitialized = false; // instance = null; quitGroup(roomId); + LogUtils.e("@@@","重置成功"); } } diff --git a/moduleUtil/src/main/java/com/xscm/moduleutil/presenter/RewardGiftContacts.java b/moduleUtil/src/main/java/com/xscm/moduleutil/presenter/RewardGiftContacts.java index 249f307..a63f5be 100644 --- a/moduleUtil/src/main/java/com/xscm/moduleutil/presenter/RewardGiftContacts.java +++ b/moduleUtil/src/main/java/com/xscm/moduleutil/presenter/RewardGiftContacts.java @@ -51,6 +51,6 @@ public class RewardGiftContacts { void roomAuctionJoin(String auction_id,String user_id, String gift_id, String num,String type); void giftPack(); - void getGiftPack(String roomId,String userId); + void getGiftPack(String roomId,String userId,String heart_id); } } diff --git a/moduleUtil/src/main/java/com/xscm/moduleutil/presenter/RewardGiftPresenter.java b/moduleUtil/src/main/java/com/xscm/moduleutil/presenter/RewardGiftPresenter.java index 1b3efc9..baaf347 100644 --- a/moduleUtil/src/main/java/com/xscm/moduleutil/presenter/RewardGiftPresenter.java +++ b/moduleUtil/src/main/java/com/xscm/moduleutil/presenter/RewardGiftPresenter.java @@ -210,8 +210,8 @@ public class RewardGiftPresenter extends BasePresenter } @Override - public void getGiftPack(String roomId,String userId) { - api.getGiftPack(roomId,userId, new BaseObserver() { + public void getGiftPack(String roomId,String userId,String heart_id) { + api.getGiftPack(roomId,userId,heart_id, new BaseObserver() { @Override public void onSubscribe(Disposable d) { addDisposable(d); diff --git a/moduleUtil/src/main/java/com/xscm/moduleutil/rtc/AgoraManager.java b/moduleUtil/src/main/java/com/xscm/moduleutil/rtc/AgoraManager.java index 5cf92b4..4e4e0db 100644 --- a/moduleUtil/src/main/java/com/xscm/moduleutil/rtc/AgoraManager.java +++ b/moduleUtil/src/main/java/com/xscm/moduleutil/rtc/AgoraManager.java @@ -411,17 +411,19 @@ public class AgoraManager { @SuppressLint("SuspiciousIndentation") public void setLocalAudioEnabled(boolean enabled, String userId) { if (rtcEngine != null) { - if (userId.equals(SpUtil.getUserId()+"")) { - rtcEngine.enableLocalAudio(enabled); // 启用/禁用音频采集 - } - this.isLocalAudioEnabled = enabled; - if (!enabled) { - for (SoundLevelUpdateListener listener : soundLevelUpdateListeners) { - if (listener != null) { - ThreadUtils.runOnUiThread(() -> { - // 远程用户音量变化 - listener.onRemoteSoundLevelUpdate(userId, 0); - }); + if (userId != null) { + if (userId.equals(SpUtil.getUserId() + "")) { + rtcEngine.enableLocalAudio(enabled); // 启用/禁用音频采集 + } + this.isLocalAudioEnabled = enabled; + if (!enabled) { + for (SoundLevelUpdateListener listener : soundLevelUpdateListeners) { + if (listener != null) { + ThreadUtils.runOnUiThread(() -> { + // 远程用户音量变化 + listener.onRemoteSoundLevelUpdate(userId, 0); + }); + } } } } @@ -466,6 +468,7 @@ public class AgoraManager { if (rtcEngine == null) { init(CommonAppContext.getInstance().getCurrentEnvironment().getSwSdkAppId()); } + // 正确做法 rtcEngine.muteLocalAudioStreamEx(enabled, connection); } diff --git a/moduleUtil/src/main/java/com/xscm/moduleutil/widget/AvatarFrameView.java b/moduleUtil/src/main/java/com/xscm/moduleutil/widget/AvatarFrameView.java index 6abd5de..71ac7a8 100644 --- a/moduleUtil/src/main/java/com/xscm/moduleutil/widget/AvatarFrameView.java +++ b/moduleUtil/src/main/java/com/xscm/moduleutil/widget/AvatarFrameView.java @@ -248,16 +248,11 @@ public class AvatarFrameView extends FrameLayout implements IAnimListener { private void playNextFromQueue() { // if (isDestroyed) return; // 确保在主线程中执行 - if (Looper.myLooper() != Looper.getMainLooper()) { - mainHandler.post(this::playNextFromQueue); - return; - } - // 再次检查内存状态 -// if (isMemoryLow()) { -// LogUtils.w(TAG, "Low memory, clearing queue"); -// clearQueue(); +// if (Looper.myLooper() != Looper.getMainLooper()) { +// mainHandler.post(this::playNextFromQueue); // return; // } + // 检查特效是否开启 if (SpUtil.getOpenEffect() != 1) { clearQueue(); @@ -986,16 +981,14 @@ public class AvatarFrameView extends FrameLayout implements IAnimListener { // } private void clearPrevious() { -// if (isDestroyed) return; // 确保在主线程中执行 - if (Looper.myLooper() != Looper.getMainLooper()) { - mainHandler.post(() -> { -// if (!isDestroyed) { - clearPrevious(); -// } - }); - return; - } +// if (Looper.myLooper() != Looper.getMainLooper()) { +// mainHandler.post(() -> { +// clearPrevious(); +//// } +// }); +// return; +// } try { // 停止并清理 ExoPlayer // if (exoPlayer != null) { diff --git a/moduleUtil/src/main/java/com/xscm/moduleutil/widget/Constants.java b/moduleUtil/src/main/java/com/xscm/moduleutil/widget/Constants.java index def144f..212c4cd 100644 --- a/moduleUtil/src/main/java/com/xscm/moduleutil/widget/Constants.java +++ b/moduleUtil/src/main/java/com/xscm/moduleutil/widget/Constants.java @@ -385,6 +385,7 @@ public class Constants { public static final String POST_XLH_ALL_RECORD = "/api/BlindBoxTurntable/get_xlh_all_record";///巡乐会榜单 public static final String GET_XLH_MY_RECORD = "/api/BlindBoxTurntable/get_xlh_my_record";///巡乐会记录 public static final String POST_GIFT_ALL_CLEAR = "/api/Room/room_gift_all_clear";///背包礼物全清 + public static final String POST_ROOM_USER_CHARM_LIST = "/api/Room/room_user_charm_list";///房间用户当前魅力值列表 diff --git a/moduleUtil/src/main/java/com/xscm/moduleutil/widget/RoomFriendshipWheatView.java b/moduleUtil/src/main/java/com/xscm/moduleutil/widget/RoomFriendshipWheatView.java index d872710..bae5877 100644 --- a/moduleUtil/src/main/java/com/xscm/moduleutil/widget/RoomFriendshipWheatView.java +++ b/moduleUtil/src/main/java/com/xscm/moduleutil/widget/RoomFriendshipWheatView.java @@ -68,6 +68,16 @@ public class RoomFriendshipWheatView extends BaseWheatView { } }); } + + mCharmView.setOnClickListener(new OnClickListener() { + + @Override + public void onClick(View v) { + if (mOnCharmClickListener != null && pitBean != null){ + mOnCharmClickListener.onCharmClick(RoomFriendshipWheatView.this, pitBean); + } + } + }); } @Override @@ -303,6 +313,12 @@ public class RoomFriendshipWheatView extends BaseWheatView { this.mOnZhulClickListener = listener; } + private onCharmClickListener mOnCharmClickListener; + + public void setmOnCharmClickListener(onCharmClickListener mOnCharmClickListener) { + this.mOnCharmClickListener = mOnCharmClickListener; + } + @Override public void unRegister(Object obj) { @@ -311,4 +327,8 @@ public class RoomFriendshipWheatView extends BaseWheatView { public interface OnZhulClickListener { void onZhulClick(RoomFriendshipWheatView view, RoomPitBean pitBean); } + + public interface onCharmClickListener{ + void onCharmClick(RoomFriendshipWheatView view, RoomPitBean pitBean); + } } diff --git a/moduleUtil/src/main/java/com/xscm/moduleutil/widget/RoomKtvWheatView.java b/moduleUtil/src/main/java/com/xscm/moduleutil/widget/RoomKtvWheatView.java index 48d3e99..3a9a56d 100644 --- a/moduleUtil/src/main/java/com/xscm/moduleutil/widget/RoomKtvWheatView.java +++ b/moduleUtil/src/main/java/com/xscm/moduleutil/widget/RoomKtvWheatView.java @@ -36,7 +36,14 @@ public class RoomKtvWheatView extends BaseWheatView { public RoomKtvWheatView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } + private onCharmClickListener mOnCharmClickListener; + public void setmOnCharmClickListener(onCharmClickListener mOnCharmClickListener) { + this.mOnCharmClickListener = mOnCharmClickListener; + } + public interface onCharmClickListener{ + void onCharmClick(RoomKtvWheatView view, RoomPitBean pitBean); + } @Override protected void initPit(Context context, AttributeSet attrs) { TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.RoomDefaultWheatView); @@ -45,6 +52,16 @@ public class RoomKtvWheatView extends BaseWheatView { mIvTagBoss = findViewById(R.id.iv_tag_boos); mTvTime = findViewById(R.id.tv_time); tv_time_pk = findViewById(R.id.tv_time_pk); + + mCharmView.setOnClickListener(new OnClickListener() { + + @Override + public void onClick(View v) { + if (mOnCharmClickListener != null && pitBean != null){ + mOnCharmClickListener.onCharmClick(RoomKtvWheatView.this, pitBean); + } + } + }); } @Override diff --git a/moduleUtil/src/main/java/com/xscm/moduleutil/widget/RoomMakeWheatView.java b/moduleUtil/src/main/java/com/xscm/moduleutil/widget/RoomMakeWheatView.java index 2e808d8..d271cbc 100644 --- a/moduleUtil/src/main/java/com/xscm/moduleutil/widget/RoomMakeWheatView.java +++ b/moduleUtil/src/main/java/com/xscm/moduleutil/widget/RoomMakeWheatView.java @@ -51,8 +51,38 @@ public class RoomMakeWheatView extends BaseWheatView { iv_tag_type=findViewById(R.id.iv_tag_type); mCharmView = findViewById(R.id.charm_view); mRiv.setImageResource(pitImageVId); + + if (mTvTime != null) { + mTvTime.setOnClickListener(v -> { + // 处理魅力值点击 + if (mOnCharmClickListener != null && pitBean != null) { + mOnCharmClickListener.onCharmClick(this, pitBean); + } + }); + } } +// @Override +// public void setOnClickListener(OnClickListener l) { +// // 保存外部设置的点击监听器 +// this.onWholeViewClickListener = l; +// super.setOnClickListener(l); +// } + + // 为子组件设置点击监听器时,确保不会拦截父容器的点击事件 + public void setupChildClickListeners() { + if (mRiv != null) { + mRiv.setOnClickListener(v -> { + // 处理头像点击 + if (onWholeViewClickListener != null) { + onWholeViewClickListener.onClick(this); + } + }); + } + + + } + private OnClickListener onWholeViewClickListener; @Override protected int getLayoutId() { return R.layout.room_view_make_wheat; @@ -130,8 +160,27 @@ public class RoomMakeWheatView extends BaseWheatView { iv_tag_type.setVisibility(GONE); mCharmView.setVisibility(GONE); } - } +// mCharmView.setOnClickListener(new OnClickListener() { +// +// @Override +// public void onClick(View v) { +// if (mOnCharmClickListener != null && pitBean != null){ +// mOnCharmClickListener.onCharmClick(RoomMakeWheatView.this, pitBean); +// } +// } +// }); + + } + private onCharmClickListener mOnCharmClickListener; +// + public void setmOnCharmClickListener(onCharmClickListener mOnCharmClickListener) { + this.mOnCharmClickListener = mOnCharmClickListener; + } +// + public interface onCharmClickListener{ + void onCharmClick(RoomMakeWheatView view, RoomPitBean pitBean); + } public void setChe(String che){ } diff --git a/moduleUtil/src/main/java/com/xscm/moduleutil/widget/WheatLayoutSingManager.java b/moduleUtil/src/main/java/com/xscm/moduleutil/widget/WheatLayoutSingManager.java index e082ed1..1fa87d1 100644 --- a/moduleUtil/src/main/java/com/xscm/moduleutil/widget/WheatLayoutSingManager.java +++ b/moduleUtil/src/main/java/com/xscm/moduleutil/widget/WheatLayoutSingManager.java @@ -8,6 +8,7 @@ import android.widget.LinearLayout; import androidx.annotation.Nullable; +import com.hjq.toast.ToastUtils; import com.xscm.moduleutil.R; import com.xscm.moduleutil.bean.UserOnlineStatusBean; import com.xscm.moduleutil.bean.room.RoomPitBean; @@ -36,6 +37,8 @@ public class WheatLayoutSingManager { void onMakeWheatClick(RoomSingSongWheatView view, int pitNumber); + void onMeilingClick(RoomSingSongWheatView view, int pitNumber); + } private @Nullable OnWheatClickListener wheatClickListener; @@ -101,14 +104,28 @@ public class WheatLayoutSingManager { params.setMargins(20, 20, 20, 20); singleWheatView.setLayoutParams(params); - // 添加点击事件 - singleWheatView.setOnClickListener(v -> { + GifAvatarOvalView avatarView = (GifAvatarOvalView) singleWheatView.mRiv; + avatarView.setOnClickListener(v -> { if (wheatClickListener != null) { wheatClickListener.onWheatClick(singleWheatView, pitNumber); } restoreMultiWheat(); }); + WheatCharmView charmView = singleWheatView.mCharmView; + charmView.setOnClickListener(v -> { + if (wheatClickListener != null) { + wheatClickListener.onMeilingClick(singleWheatView, Integer.parseInt(singleWheatView.pitNumber)); + } + }); +// // 添加点击事件 + singleWheatView.setOnClickListener(v -> { + if (wheatClickListener != null) { + wheatClickListener.onMakeWheatClick(singleWheatView, pitNumber); + } + restoreMultiWheat(); + }); + container.addView(singleWheatView); isSingleMode = true; currentSinglePit = pitNumber; @@ -168,9 +185,26 @@ public class WheatLayoutSingManager { } wheatView.setLayoutParams(params); + + + GifAvatarOvalView avatarView = (GifAvatarOvalView) wheatView.mRiv; + avatarView.setOnClickListener(v -> { + if (wheatClickListener != null) { + wheatClickListener.onWheatClick(wheatView, pitNumber); + } + }); + + WheatCharmView charmView = wheatView.mCharmView; + charmView.setOnClickListener(v -> { + if (wheatClickListener != null) { + ToastUtils.show("点击了麦位"); + wheatClickListener.onMeilingClick(wheatView, pitNumber); + } + }); + wheatView.setOnClickListener(v -> { if (wheatClickListener != null) { - wheatClickListener.onWheatClick(wheatView, Integer.parseInt(wheatView.pitNumber)); + wheatClickListener.onMeilingClick(wheatView, Integer.parseInt(wheatView.pitNumber)); } }); diff --git a/moduleUtil/src/main/res/layout/room_view_ktv_wheat.xml b/moduleUtil/src/main/res/layout/room_view_ktv_wheat.xml index 7dda84b..315eb14 100644 --- a/moduleUtil/src/main/res/layout/room_view_ktv_wheat.xml +++ b/moduleUtil/src/main/res/layout/room_view_ktv_wheat.xml @@ -27,6 +27,13 @@ + + + + + + + + app:layout_constraintHeight_percent="0.52" /> + + - - - - list); - void setLikeZone(); + void setLikeZone(int type); void setCircleDetail(CircleListBean bean); diff --git a/modulecircle/src/main/java/com/example/modulecircle/fragment/CircleCategoryFragment.java b/modulecircle/src/main/java/com/example/modulecircle/fragment/CircleCategoryFragment.java index 1f141d9..1f53d1b 100644 --- a/modulecircle/src/main/java/com/example/modulecircle/fragment/CircleCategoryFragment.java +++ b/modulecircle/src/main/java/com/example/modulecircle/fragment/CircleCategoryFragment.java @@ -240,7 +240,7 @@ public class CircleCategoryFragment extends BaseMvpFragment implemen @Override public void onNext(String s) { - MvpRef.get().setLikeZone(); + MvpRef.get().setLikeZone(2); } }); } @@ -146,7 +146,7 @@ public class CirclePresenter extends BasePresenter implemen @Override public void onNext(String s) { - MvpRef.get().setLikeZone(); + MvpRef.get().setLikeZone(1); } }); } diff --git a/moduleroom/src/main/java/com/example/moduleroom/activity/RoomActivity.java b/moduleroom/src/main/java/com/example/moduleroom/activity/RoomActivity.java index d6af001..ff6a4d7 100644 --- a/moduleroom/src/main/java/com/example/moduleroom/activity/RoomActivity.java +++ b/moduleroom/src/main/java/com/example/moduleroom/activity/RoomActivity.java @@ -21,6 +21,7 @@ import android.graphics.drawable.ColorDrawable; import android.os.Bundle; import android.os.CountDownTimer; import android.os.Looper; +import android.os.StrictMode; import android.text.Spannable; import android.text.SpannableStringBuilder; import android.text.TextUtils; @@ -57,6 +58,7 @@ import androidx.recyclerview.widget.LinearLayoutManager; import com.alibaba.android.arouter.facade.annotation.Autowired; import com.alibaba.android.arouter.facade.annotation.Route; import com.alibaba.android.arouter.launcher.ARouter; +import com.blankj.utilcode.BuildConfig; import com.blankj.utilcode.util.GsonUtils; import com.blankj.utilcode.util.LogUtils; import com.blankj.utilcode.util.ThreadUtils; @@ -213,7 +215,7 @@ public class RoomActivity extends BaseMvpActivity sActivityRef; // 存储当前显示的弹框引用 private List activeDialogs = new ArrayList<>(); @@ -227,6 +229,7 @@ public class RoomActivity extends BaseMvpActivity= viewX && x <= viewX + viewWidth && +// y >= viewY && y <= viewY + viewHeight) { +// // 将事件传递给该视图 +// return negativeMarginView.dispatchTouchEvent(ev); +// } +// } +// } +// +// return super.dispatchTouchEvent(ev); +// } @Override public void onConfigurationChanged(@NonNull Configuration newConfig) { @@ -263,7 +297,7 @@ public class RoomActivity extends BaseMvpActivity { // 使用Handler确保在主线程中调用 - new android.os.Handler(Looper.getMainLooper()).post(() -> { - MvpPre.getRoomIn(roomId, password); - MvpPre.getRoomOnline(roomId, "1", "10"); - }); + MvpPre.getRoomIn(roomId, password); + MvpPre.getRoomOnline(roomId, "1", "10"); }); } @@ -470,7 +512,7 @@ public class RoomActivity extends BaseMvpActivity() { + if (giftGiveEvent.auction_id != null && !giftGiveEvent.auction_id.isEmpty()) { + RetrofitClient.getInstance().roomAuctionJoin(giftGiveEvent.getAuction_id(), giftGiveEvent.getUserId(), giftGiveEvent.getRoonGiftModel().getGift_id(), giftGiveEvent.getNum(), "1", new BaseObserver() { @Override public void onSubscribe(Disposable d) { // showGiftGiveProgress(); @@ -496,6 +538,7 @@ public class RoomActivity extends BaseMvpActivity() { @Override @@ -844,8 +887,20 @@ public class RoomActivity extends BaseMvpActivity pitList = mRoomInfoResp.getRoom_info().getPit_list(); if (pitList != null && !pitList.isEmpty()) { try { @@ -1376,11 +1433,15 @@ public class RoomActivity extends BaseMvpActivity { if (!isFinishing() && !isDestroyed()) { if (!pendingRoomId.equals(lastSwitchedRoomId)) { + MvpPre.quitRoom2(messageEvent.getRoomId(), SpUtil.getUserId() + ""); + quit(); + MessageListenerSingleton.reset(messageEvent.getRoomId()); + MessageListenerSingleton.getInstance().joinGroup(pendingRoomId); MvpPre.getRoomIn(pendingRoomId, ""); lastSwitchedRoomId = pendingRoomId; AgoraManager.getInstance(context).setLastRoomId(messageEvent.getRoomId()); @@ -1423,6 +1484,7 @@ public class RoomActivity extends BaseMvpActivity { @@ -51,5 +52,7 @@ public class RoomUserContacts { void topRelationCard(String id); void deleteRelationCard(String id); + + void clearUserCharm(String roomId,String userId); } } diff --git a/moduleroom/src/main/java/com/example/moduleroom/dialog/RoomGiftDialogFragment.java b/moduleroom/src/main/java/com/example/moduleroom/dialog/RoomGiftDialogFragment.java index 762780d..a276590 100644 --- a/moduleroom/src/main/java/com/example/moduleroom/dialog/RoomGiftDialogFragment.java +++ b/moduleroom/src/main/java/com/example/moduleroom/dialog/RoomGiftDialogFragment.java @@ -51,6 +51,7 @@ import com.xscm.moduleutil.bean.room.RoomInfoResp; import com.xscm.moduleutil.bean.room.RoomPitBean; import com.xscm.moduleutil.color.ThemeableDrawableUtils; import com.xscm.moduleutil.dialog.RechargeDialogFragment; +import com.xscm.moduleutil.dialog.WebViewDialog; import com.xscm.moduleutil.dialog.giftLottery.GiftLotteryDialog; import com.xscm.moduleutil.event.GiftDoubleClickEvent; import com.xscm.moduleutil.event.GiftUserRefreshEvent; @@ -305,7 +306,7 @@ public class RoomGiftDialogFragment extends BaseMvpDialogFragment { + if (ClickUtils.isFastDoubleClick()) { + return; + } + if (mBinding.ivAuction1.getUserId() != null && !mBinding.ivAuction1.getUserId().equals("")) { + RoomUserInfoFragment.show(roomInfoResp.getRoom_info().getRoom_id(), mBinding.ivAuction1.getUserId(), mBinding.ivAuction1.pitNumber, getHostUser(), false, 1, 0, getChildFragmentManager()); + } + }); + + mBinding.ivAuction1.setmOnCharmClickListener(new RoomMakeWheatView.onCharmClickListener() { + + @Override + public void onCharmClick(RoomMakeWheatView view, RoomPitBean pitBean) { + if (ClickUtils.isFastDoubleClick()) { + return; + } + if (pitBean.getUser_id() != null && !pitBean.getUser_id().isEmpty() && !pitBean.getUser_id().equals("0")) { + RoomCharmDialog.newInstance(roomInfoResp.getRoom_info().getRoom_id(), pitBean.getUser_id()).show(getChildFragmentManager(), "RoomCharmDialog"); + } + } + }); + + mBinding.ivAuction2.setOnClickListener(view -> { + if (ClickUtils.isFastDoubleClick()) { + return; + } + if (mBinding.ivAuction2.getUserId() != null && !mBinding.ivAuction2.getUserId().equals("")) { + RoomUserInfoFragment.show(roomInfoResp.getRoom_info().getRoom_id(), mBinding.ivAuction2.getUserId(), mBinding.ivAuction2.pitNumber, getHostUser(), false, 1, 0, getChildFragmentManager()); + } + }); + mBinding.ivAuction2.setmOnCharmClickListener(new RoomMakeWheatView.onCharmClickListener() { + + @Override + public void onCharmClick(RoomMakeWheatView view, RoomPitBean pitBean) { + if (ClickUtils.isFastDoubleClick()) { + return; + } + if (pitBean.getUser_id() != null && !pitBean.getUser_id().isEmpty() && !pitBean.getUser_id().equals("0")) { + RoomCharmDialog.newInstance(roomInfoResp.getRoom_info().getRoom_id(), pitBean.getUser_id()).show(getChildFragmentManager(), "RoomCharmDialog"); + } + } + }); + mBinding.ivAuction3.setOnClickListener(view -> { + if (ClickUtils.isFastDoubleClick()) { + return; + } + if (mBinding.ivAuction3.getUserId() != null && !mBinding.ivAuction3.getUserId().equals("")) { + RoomUserInfoFragment.show(roomInfoResp.getRoom_info().getRoom_id(), mBinding.ivAuction3.getUserId(), mBinding.ivAuction3.pitNumber, getHostUser(), false, 1, 0, getChildFragmentManager()); + } + }); + mBinding.ivAuction3.setmOnCharmClickListener(new RoomMakeWheatView.onCharmClickListener() { + + @Override + public void onCharmClick(RoomMakeWheatView view, RoomPitBean pitBean) { + if (ClickUtils.isFastDoubleClick()) { + return; + } + if (pitBean.getUser_id() != null && !pitBean.getUser_id().isEmpty() && !pitBean.getUser_id().equals("0")) { + RoomCharmDialog.newInstance(roomInfoResp.getRoom_info().getRoom_id(), pitBean.getUser_id()).show(getChildFragmentManager(), "RoomCharmDialog"); + } + } + }); } private void onChock(View view) { + if (ClickUtils.isFastDoubleClick()) { + return; + } int id = view.getId(); if (id == R.id.iv_jp) { // 添加多层空值检查 @@ -339,7 +408,7 @@ public class RoomAuctionFragment extends BaseMvpFragment 5) { RoomUserInfoFragment.show(roomInfoResp.getRoom_info().getRoom_id(), auctionList.get(5).getUser_id(), "", getHostUser(), false, 1, 0, getChildFragmentManager()); } + } else if (id == R.id.tv_p_b) { + if (wheatView2.pitBean.getUser_id() == null || wheatView2.pitBean.getUser_id().equals("") || wheatView2.pitBean.getUser_id().equals("0")) { + return; + } + RoomCharmDialog.newInstance(roomInfoResp.getRoom_info().getRoom_id(), wheatView2.pitBean.getUser_id()).show(getChildFragmentManager(), "RoomCharmDialog"); } } @@ -861,6 +937,42 @@ public class RoomAuctionFragment extends BaseMvpFragment pitArr){ + public void upFriendList(List pitArr) { FriendshipRoomFragment friendshipRoomFragment = findFragmentByTag(FriendshipRoomFragment.class); if (friendshipRoomFragment != null) { friendshipRoomFragment.upFriendList(); @@ -477,8 +477,10 @@ public class RoomFragment extends BaseMvpFragment { +// View muZc = view.findViewById(R.id.mu_zc); +// ViewGroup parent = (ViewGroup) muZc.getParent(); +// +// Rect bounds = new Rect(); +// muZc.getHitRect(bounds); +// // 扩展点击区域 +// bounds.top -=55; +// bounds.bottom += 50; +// bounds.left -= 30; +// bounds.right += 30; +// +// parent.setTouchDelegate(new TouchDelegate(bounds, muZc)); +// }); + } + + public View getNegativeMarginView() { + return mBinding.muZc; + } public void upRoomInfo(RoomInfoResp roomInfoResp) { this.roomInfoResp = roomInfoResp; } @@ -145,6 +175,7 @@ public class RoomKtvFragment extends BaseMvpFragment { +// // 转发点击事件给实际的 mu_zc 视图 +// muZc.performClick(); +// }); + } private int isNumberWhether() { @@ -571,6 +670,7 @@ public class RoomKtvFragment extends BaseMvpFragment0){ + if (roomInfoResp.getUser_info().getPit_number() > 0) { - }else { + } else { // if (mBinding.muZc.pitBean.getUser_id().equals(SpUtil.getUserId() + "")) { // ((RoomActivity) getActivity()).setRoleType(2, -1); // ((RoomActivity) getActivity()).switchMic(2); // } else { - ((RoomActivity) getActivity()).setRoleType(0, 0); - ((RoomActivity) getActivity()).switchMic(2); + ((RoomActivity) getActivity()).setRoleType(0, 0); + ((RoomActivity) getActivity()).switchMic(2); // } @@ -660,7 +760,7 @@ public class RoomKtvFragment extends BaseMvpFragment pitList = new ArrayList<>(); @@ -1260,6 +1272,25 @@ public class SingSongFragment extends BaseRoomFragment implements R if (resp.getUser_info().getPit_number()!=0){ enableJs=true; } - + LogUtils.e("token",token); + LogUtils.e("roomId:",roomId); // 初始化 Agora 并加入房间 AgoraManager.getInstance(getView().getSelfActivity()) .joinRoom(token, roomId, uid, enableMic,enableJs); diff --git a/moduleroom/src/main/java/com/example/moduleroom/presenter/RoomUserPresenter.java b/moduleroom/src/main/java/com/example/moduleroom/presenter/RoomUserPresenter.java index 23e5795..fca3337 100644 --- a/moduleroom/src/main/java/com/example/moduleroom/presenter/RoomUserPresenter.java +++ b/moduleroom/src/main/java/com/example/moduleroom/presenter/RoomUserPresenter.java @@ -172,6 +172,25 @@ public class RoomUserPresenter extends BasePresenter impl }); } + @Override + public void clearUserCharm(String roomId, String userId) { + api.clearUserCharm(roomId, userId, new BaseObserver() { + + @Override + public void onSubscribe(Disposable d) { + addDisposable(d); + } + + @Override + public void onNext(String s) { + if (MvpRef==null){ + MvpRef=new WeakReference<>(mView); + } + MvpRef.get().clearUserCharm(); + } + }); + } + @Override public void kickOutRoom(String roomId, String userId) { if (api==null){ diff --git a/moduleroom/src/main/res/layout/fragment_room_ktv.xml b/moduleroom/src/main/res/layout/fragment_room_ktv.xml index 278955d..857c73d 100644 --- a/moduleroom/src/main/res/layout/fragment_room_ktv.xml +++ b/moduleroom/src/main/res/layout/fragment_room_ktv.xml @@ -13,7 +13,8 @@ android:layout_height="@dimen/dp_277" android:layout_marginStart="@dimen/dp_16" android:layout_marginTop="@dimen/dp_13" - android:layout_marginEnd="@dimen/dp_16"> + android:layout_marginEnd="@dimen/dp_16" + android:clipChildren="false"> - - - - - - - - - - - + + + + + + + + + + + - + app:layout_constraintTop_toTopOf="parent" + app:room_wheat_number="9" /> + + + + + + + + + + + + + + + app:layout_constraintTop_toBottomOf="@+id/mu_jb" /> diff --git a/moduleroom/src/main/res/layout/room_gift_dialog.xml b/moduleroom/src/main/res/layout/room_gift_dialog.xml index 76019c7..074e111 100644 --- a/moduleroom/src/main/res/layout/room_gift_dialog.xml +++ b/moduleroom/src/main/res/layout/room_gift_dialog.xml @@ -18,7 +18,7 @@ android:layout_height="wrap_content" android:layout_marginStart="@dimen/dp_2" android:layout_marginEnd="@dimen/dp_2" - android:layout_marginBottom="@dimen/dp_12" + android:layout_marginBottom="@dimen/dp_5" android:background="@mipmap/gift_mh" android:layout_above="@+id/cl" android:orientation="vertical" diff --git a/moduleroom/src/main/res/layout/room_top.xml b/moduleroom/src/main/res/layout/room_top.xml index 1a6146b..91568b2 100644 --- a/moduleroom/src/main/res/layout/room_top.xml +++ b/moduleroom/src/main/res/layout/room_top.xml @@ -229,7 +229,7 @@ android:layout_height="wrap_content" android:layout_alignParentEnd="true" android:layout_toEndOf="@+id/rl" - android:layout_marginTop="@dimen/dp_50" + android:layout_marginTop="@dimen/dp_40" android:background="@android:color/transparent" android:layout="@layout/top_overlay_buttons" android:visibility="gone" diff --git a/modulevocal/src/main/java/com/example/modulevocal/activity/SettingActivity.java b/modulevocal/src/main/java/com/example/modulevocal/activity/SettingActivity.java index ba90551..7d035e5 100644 --- a/modulevocal/src/main/java/com/example/modulevocal/activity/SettingActivity.java +++ b/modulevocal/src/main/java/com/example/modulevocal/activity/SettingActivity.java @@ -115,8 +115,15 @@ public class SettingActivity extends BaseMvpActivity