From d80222afef75b6f7d2d21de434e30b0861643d91 Mon Sep 17 00:00:00 2001 From: lzl <1239365383@qq.com> Date: Wed, 12 Nov 2025 16:42:51 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=88=E5=B9=B62?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- MainModule/build.gradle | 1 + MainModule/src/main/AndroidManifest.xml | 13 + .../java/com/xscm/modulemain/Application.kt | 2 +- .../activity/main/activity/MainActivity.java | 5 +- .../activity/room/activity/RoomActivity.kt | 236 ++++- .../room/fragment/ChatRoomFragment.java | 48 +- .../room/fragment/FriendshipRoomFragment.java | 2 +- .../room/fragment/MusicSongListFragment.java | 4 +- .../room/fragment/RequestFragment.java | 18 +- .../room/fragment/RoomCabinFragment.java | 22 +- .../activity/room/fragment/RoomFragment.java | 16 +- .../room/fragment/RoomKtvFragment.java | 38 +- .../room/fragment/SingSongFragment.java | 41 +- .../room/fragment/VoiceCategoryFragment.java | 2 +- .../room/presenter/HotListPresenter.java | 2 +- .../room/presenter/RoomPresenter.java | 4 +- .../presenter/VoiceCategoryPresenter.java | 7 +- .../activity/user/PageViewModel.java | 4 +- .../user/activity/GiftWallActivity.java | 24 +- .../user/activity/NobleDetailsActivity.java | 39 +- .../user/activity/NoblePaymentActivity.java | 44 +- .../user/activity/NobleTitleActivity.java | 43 +- .../user/activity/SettingActivity.java | 28 +- .../user/conacts/GiftWallConacts.java | 3 +- .../activity/user/conacts/MeConacts.java | 11 +- .../user/conacts/NobleTitleConacts.java | 9 +- .../activity/user/conacts/SettingConacts.java | 2 + .../user/fragment/PlaceholderFragment.java | 12 +- .../user/fragment/UserHomepageFragment.java | 17 +- .../user/fragment/VocalRangeFragment.java | 201 ++-- .../user/presenter/EditUserPresenter.java | 7 +- .../user/presenter/GiftWallPresenter.java | 5 +- .../activity/user/presenter/MePresenter.java | 64 +- .../user/presenter/NobleTitlePresenter.java | 16 +- .../user/presenter/RechargePresenter.java | 2 +- .../user/presenter/SettingPresenter.java | 28 +- .../xscm/modulemain/adapter/BlackAdapter.java | 2 +- .../modulemain/adapter/EaseChatAdapter.java | 84 +- .../modulemain/adapter/EmotionAdapter.java | 11 +- .../adapter/ExpandColumnAdapter.java | 4 +- .../modulemain/adapter/GiftWallAdapter.java | 9 +- .../modulemain/adapter/GridNobleAdapter.java | 14 +- .../adapter/NoblePrivilegeAdapter.java | 4 +- .../adapter/NobliityBannerAdapter.java | 7 +- .../adapter/SearchUserResultAdapter.java | 2 +- .../adapter/SectionsGifPagerAdapter.java | 12 +- .../dialog/RoomUserInfoFragment.java | 8 +- .../dialog/SoundEffectsDialogFragment.java | 10 +- .../dialog/TunerDialogFragment.java | 14 +- .../xscm/modulemain/manager/RoomManager.java | 2 +- .../modulemain/widget/WheatLayoutManager.kt | 1 + .../res/layout/activity_currency_exchange.xml | 2 +- .../src/main/res/layout/activity_main.xml | 55 +- .../src/main/res/layout/activity_recharge.xml | 2 +- .../src/main/res/layout/activity_setting.xml | 55 +- .../main/res/layout/activity_withdrawal.xml | 2 +- .../main/res/layout/fragment_vocal_range.xml | 923 +++++++++++++----- .../src/main/res/layout/item_emotion.xml | 63 +- MainModule/src/main/res/layout/room_top.xml | 3 +- MainModule/src/main/res/layout/user_top.xml | 13 +- app/build.gradle | 14 +- .../qxcm/qxlive/wxapi/WXPayEntryActivity.java | 3 +- gradle/libs.versions.toml | 9 + settings.gradle | 2 +- 64 files changed, 1561 insertions(+), 789 deletions(-) diff --git a/MainModule/build.gradle b/MainModule/build.gradle index 53f229e5..b44aa45b 100644 --- a/MainModule/build.gradle +++ b/MainModule/build.gradle @@ -50,6 +50,7 @@ dependencies { implementation libs.material implementation libs.activity implementation libs.constraintlayout + implementation project(':locktableview') // implementation project(':modulevoice') // implementation project(':modulecircle') // implementation project(':modulevocal') diff --git a/MainModule/src/main/AndroidManifest.xml b/MainModule/src/main/AndroidManifest.xml index 52660643..801888ef 100644 --- a/MainModule/src/main/AndroidManifest.xml +++ b/MainModule/src/main/AndroidManifest.xml @@ -166,6 +166,19 @@ android:name=".activity.user.activity.RealNameActivity" android:exported="false" /> + + + + + list; if (activitiesPermission != null) { + mBinding.dvr.setVisibility(View.VISIBLE); list = new ArrayList<>(); if (activitiesPermission.getFirst_charge_permission() == 1) { PermissionPicBean bean = new PermissionPicBean(); @@ -859,6 +860,8 @@ public class MainActivity extends BaseMvpActivity(), override fun initData() { if (!EasyPermissions.hasPermissions(this, *permissions)) { - PermissionDescriptionHelper.addPermissionDescription( - false, - mBinding?.root as ViewGroup, - permissions - ) + PermissionDescriptionHelper.addPermissionDescription(false, mBinding?.root as ViewGroup, permissions) EasyPermissions.requestPermissions( this, "请开启录音使用权限", 1, *permissions @@ -492,7 +495,7 @@ class RoomActivity : BaseMvpActivity(), this, LinearLayoutManager.HORIZONTAL, false ) likeUserAdapter = LikeUserAdapter() - mBinding!!.roomTop.userRecyclerView.adapter = likeUserAdapter + mBinding?.roomTop?.userRecyclerView?.adapter = likeUserAdapter likeUserAdapter!!.onItemClickListener = BaseQuickAdapter.OnItemClickListener { adapter, view, position -> // RoomOnlineDialogFragment.show(roomId, "", mRoomUserBean, mRoomInfoResp, getSupportFragmentManager()); @@ -690,14 +693,22 @@ class RoomActivity : BaseMvpActivity(), } } +/** + * 设置顶部操作按钮的可见性和点击事件 + * 包括结束按钮和延时按钮的初始化和事件绑定 + */ fun tob() { + // 获取并显示stubButtons2布局 val stub = mBinding!!.roomTop.stubButtons2 stub.visibility = View.VISIBLE + // 获取结束按钮和延时按钮的ImageView控件 val imActionJs = mBinding!!.roomTop.imActionJs.findViewById(R.id.im_action_js) val imActionYs = mBinding!!.roomTop.imActionYs.findViewById(R.id.im_action_ys) if (imActionJs != null && imActionYs != null) { imActionJs.setOnClickListener { dialogEnd() } + // 设置结束按钮点击事件,调用dialogEnd()方法 imActionYs.setOnClickListener { + // 设置延时按钮点击事件,调用MvpPre的auctionDelay方法,传入当前拍卖ID MvpPre!!.auctionDelay( SpUtil.getauctionId() ) @@ -744,6 +755,8 @@ class RoomActivity : BaseMvpActivity(), if (visible) View.VISIBLE else View.INVISIBLE } + // 根据传入的visible参数设置JS按钮的可见性 + // 使用View.VISIBLE显示按钮,使用View.INVISIBLE隐藏按钮 fun upYs(visible: Boolean) { mBinding!!.roomTop.imActionYs.visibility = if (visible) View.VISIBLE else View.INVISIBLE @@ -820,7 +833,7 @@ class RoomActivity : BaseMvpActivity(), * 释放当前房间 */ private fun releaseRoom() { - AgoraManager.getInstance(this).cleanup() + AgoraManager.getInstance().cleanup() CommonAppContext.getInstance().isPlaying = false CommonAppContext.getInstance().isShow = false QXGiftPlayerManager.getInstance(applicationContext).destroyEffectSvga() @@ -930,9 +943,9 @@ class RoomActivity : BaseMvpActivity(), mBinding!!.roomTop.btnFollow.text = "收藏" } if ((roomBean.type_id == "3" || roomBean.type_id == "1" || roomBean.type_id == "4") && roomBean.label_id == "2") { - AgoraManager.getInstance(this).isBjMusic = false + AgoraManager.getInstance().isBjMusic = false } else { - AgoraManager.getInstance(this).isBjMusic = true + AgoraManager.getInstance().isBjMusic = true } @@ -1549,7 +1562,7 @@ class RoomActivity : BaseMvpActivity(), } else { if (customMusicFloatingView != null) { customMusicFloatingView!!.destroy() - AgoraManager.getInstance(this@RoomActivity).desMusic() + AgoraManager.getInstance().desMusic() isMusic = false } @@ -1605,20 +1618,20 @@ class RoomActivity : BaseMvpActivity(), if (customMusicFloatingView != null) { customMusicFloatingView!!.destroy() } - AgoraManager.getInstance(this@RoomActivity).desMusic() + AgoraManager.getInstance().desMusic() if ((mRoomInfoResp!!.room_info.type_id == "1" || mRoomInfoResp!!.room_info.type_id == "4" || mRoomInfoResp!!.room_info.type_id == "3" || mRoomInfoResp!!.room_info.type_id == "8") && mRoomInfoResp!!.room_info.label_id == "2" ) { for (roomPitBean in mRoomInfoResp!!.song_pit_list) { - AgoraManager.getInstance(this@RoomActivity).ClientRole(false) + AgoraManager.getInstance().ClientRole(false) ivWheatFeeding(com.xscm.moduleutil.R.mipmap.room_wheat_feeding) mBinding?.rlMic?.visibility = View.GONE } if (mRoomInfoResp!!.song_user_info != null && mRoomInfoResp!!.song_user_info.user_id != null) { if (mRoomInfoResp!!.song_user_info.user_id == SpUtil.getUserId().toString() + "") { - AgoraManager.getInstance(this@RoomActivity).ClientRole(false) + AgoraManager.getInstance().ClientRole(false) ivWheatFeeding(com.xscm.moduleutil.R.mipmap.room_wheat_feeding) mBinding?.rlMic?.visibility = View.GONE } @@ -1719,7 +1732,7 @@ class RoomActivity : BaseMvpActivity(), if (userId == currentUserId && "9" == pitNumber) { if (customMusicFloatingView != null) { customMusicFloatingView!!.destroy() - AgoraManager.getInstance(this@RoomActivity).desMusic() + AgoraManager.getInstance().desMusic() isMusic = false } mBinding!!.roomTop.rl.visibility = View.GONE @@ -1844,12 +1857,134 @@ class RoomActivity : BaseMvpActivity(), } } - private fun handleMsgType1001(messageEvent: RoomMessageEvent) { - if (messageEvent.text.fromUserInfo.user_id != SpUtil.getUserId()) { - number++ +// private fun handleMsgType1001(messageEvent: RoomMessageEvent) { +// if (messageEvent.text.fromUserInfo.user_id != SpUtil.getUserId()) { +// number++ +// } +// mBinding!!.roomTop.tvNum.text = number.toString() +// } + + private var currentMqttView: View? = null // 正在播放 + var decorView: ViewGroup? = null //礼物的 + + + private fun handleMsgType1001(roomMessageEvent: RoomMessageEvent) { + if (roomMessageEvent.text.fromUserInfo.enter_image?.isNotEmpty() == true){ + showFloatingMessage(roomMessageEvent.text.fromUserInfo) } - mBinding!!.roomTop.tvNum.text = number.toString() +// number++ +// mBinding!!.roomTop.tvNum.text = number.toString() + "" } + private fun showFloatingMessage(userInfo: UserInfo) { + try { + // 清理之前的视图(如果存在) + if ( currentMqttView?.getParent() != null) { + val parent = currentMqttView?.getParent() as ViewGroup + parent.removeView(currentMqttView) + } + + if (decorView == null) { + decorView = getWindow().getDecorView() as ViewGroup? + } + + currentMqttView = LayoutInflater.from(this).inflate(R.layout.item_noble_piaoping, null) + val layoutParams = FrameLayout.LayoutParams( + FrameLayout.LayoutParams.MATCH_PARENT, + FrameLayout.LayoutParams.WRAP_CONTENT + ) + layoutParams.topMargin = DisplayUtil.dip2px(this, 300f) + layoutParams.gravity = Gravity.TOP or Gravity.CENTER_HORIZONTAL + currentMqttView?.setLayoutParams(layoutParams) + decorView?.addView(currentMqttView) + currentMqttView?.let { updateFloatingViewData(it, userInfo) } + + currentMqttView?.let { + resetAndStartMqttAnimation(it, Runnable { + // 清理当前视图 + if (currentMqttView?.getParent() != null) { + val parent = currentMqttView?.getParent() as ViewGroup + parent.removeView(currentMqttView) + } + currentMqttView = null + + }) + } + } catch (e: java.lang.Exception) { + + } + } + private fun resetAndStartMqttAnimation(view: View, onAnimationEnd: Runnable) { + try { + val screenWidth = getScreenWidth() + // 设置初始位置:在屏幕右侧外部(完全不可见) + view.setTranslationX(screenWidth.toFloat()) + + + val enterAnim = TranslateAnimation( + Animation.ABSOLUTE, screenWidth.toFloat(), + Animation.ABSOLUTE, ((screenWidth - SystemUtils.getWidth(316)) / 2).toFloat(), + Animation.ABSOLUTE, 0f, + Animation.ABSOLUTE, 0f + ) + enterAnim.setDuration(1500) + enterAnim.setInterpolator(DecelerateInterpolator(2.0f)) + enterAnim.setAnimationListener(object : Animation.AnimationListener { + override fun onAnimationStart(animation: Animation?) { + } + + override fun onAnimationEnd(animation: Animation?) { + // 停留后退出 + CommonAppContext.postDelayed(Runnable { + val exitAnim = TranslateAnimation( + Animation.ABSOLUTE, ((screenWidth - SystemUtils.getWidth(316)) / 2).toFloat(), + Animation.ABSOLUTE, -screenWidth.toFloat(), + Animation.ABSOLUTE, 0f, + Animation.ABSOLUTE, 0f + ) + exitAnim.setDuration(3000) + exitAnim.setInterpolator(DecelerateInterpolator(2f)) + exitAnim.setAnimationListener(object : Animation.AnimationListener { + override fun onAnimationStart(animation: Animation?) { + } + + override fun onAnimationEnd(animation: Animation?) { + // 移除视图并处理下一个 + onAnimationEnd.run() + } + + override fun onAnimationRepeat(animation: Animation?) { + } + }) + view.startAnimation(exitAnim) + }, 5000) // 停留1秒 + } + + override fun onAnimationRepeat(animation: Animation?) { + } + }) + view.startAnimation(enterAnim) + } catch (e: java.lang.Exception) { + LogUtils.e("MQTT动画启动失败", e) + onAnimationEnd.run() + } + } + private fun getScreenWidth(): Int { + val displayMetrics = DisplayMetrics() + if (getWindowManager() != null) { + getWindowManager().getDefaultDisplay().getMetrics(displayMetrics) + return displayMetrics.widthPixels + } + return getResources().getDisplayMetrics().widthPixels + } + + private fun updateFloatingViewData(view: View, userInfo: UserInfo) { + val textView = view.findViewById(R.id.tv_name) + val im_bj = view.findViewById(R.id.im_bj) + + textView.text = userInfo.enter_text + ImageUtils.loadHeadCC(userInfo.enter_image, im_bj) + } + private fun handleMsgType1002(messageEvent: RoomMessageEvent, text: T?) { number-- @@ -1965,7 +2100,7 @@ class RoomActivity : BaseMvpActivity(), MessageListenerSingleton.getInstance().joinGroup(pendingRoomId) MvpPre!!.getRoomIn(pendingRoomId, "") lastSwitchedRoomId = pendingRoomId!! - AgoraManager.getInstance(OkDownloadProvider.context).lastRoomId = + AgoraManager.getInstance().lastRoomId = messageEvent.roomId } } @@ -2057,9 +2192,9 @@ class RoomActivity : BaseMvpActivity(), val parsedText: RoomMessageEvent.text = GsonUtils.fromJson(text, RoomMessageEvent.text::class.java) if (parsedText.is_mute == 1) { - AgoraManagerEx.getInstance(this).muteLocalAudioStreamEx(true) + AgoraManagerEx.getInstance().muteLocalAudioStreamEx(true) } else { - AgoraManagerEx.getInstance(this).muteLocalAudioStreamEx(false) + AgoraManagerEx.getInstance().muteLocalAudioStreamEx(false) } } catch (e: Exception) { // Handle exception @@ -2098,7 +2233,7 @@ class RoomActivity : BaseMvpActivity(), private fun handleMsgType126(messageEvent: RoomMessageEvent, text: T?) { if (text == null) return - AgoraManager.getInstance(this) + AgoraManager.getInstance() .setLocalAudioEnabled(false, text.fromUserInfo.user_id.toString() + "") } @@ -2291,7 +2426,7 @@ class RoomActivity : BaseMvpActivity(), mBinding!!.imVoive.setImageResource(com.xscm.moduleutil.R.mipmap.room_voice_kg) voive = true } - AgoraManager.getInstance(this).muteSpeaker(!voive) + AgoraManager.getInstance().muteSpeaker(!voive) } else if (id == R.id.rl_more) { //点击PK val fragment = RoomPkDialogFragment.newInstance( roomId, @@ -2414,7 +2549,7 @@ class RoomActivity : BaseMvpActivity(), CommonAppContext.getInstance().isPlaying = false CommonAppContext.getInstance().isShow = false QXGiftPlayerManager.getInstance(this).destroyEffectSvga() - AgoraManager.getInstance(this).cleanup() + AgoraManager.getInstance().cleanup() MyRoomSingleton.getInstance().onExitRoom() MessageListenerSingleton.quitGroup(roomId) @@ -2518,15 +2653,15 @@ class RoomActivity : BaseMvpActivity(), fun switchMic(type: Int) { if (type == 1) { mBinding!!.ivMic.setImageResource(com.xscm.moduleutil.R.mipmap.room_microphone) - AgoraManager.getInstance(this) + AgoraManager.getInstance() .setLocalAudioEnabled(true, SpUtil.getUserId().toString() + "") isSwith = false - AgoraManager.getInstance(this).muteLocalAudioStream(false) - AgoraManager.getInstance(this).ClientRole(true) + AgoraManager.getInstance().muteLocalAudioStream(false) + AgoraManager.getInstance().ClientRole(true) CommonAppContext.getInstance().isMai = true } else { mBinding!!.ivMic.setImageResource(com.xscm.moduleutil.R.mipmap.room_microphone_off) - AgoraManager.getInstance(this) + AgoraManager.getInstance() .setLocalAudioEnabled(false, SpUtil.getUserId().toString() + "") isSwith = true isMute(1) @@ -2611,7 +2746,7 @@ class RoomActivity : BaseMvpActivity(), val typeId = mRoomInfoResp!!.room_info.type_id val labelId = mRoomInfoResp!!.room_info.label_id - val userPitNumber = mRoomInfoResp!!.user_info.pit_number + val userPitNumber = mRoomInfoResp?.user_info?.pit_number!! // 情况1: typeId = 6 时,只显示消息按钮 if ("6" == typeId) { @@ -2938,9 +3073,9 @@ class RoomActivity : BaseMvpActivity(), // mBinding.roomTop.btnFollow.setBackground(getResources().getDrawable(com.xscm.moduleutil.R.mipmap.collect)); } if ((roomBean.type_id == "3" || roomBean.type_id == "1" || roomBean.type_id == "4") && roomBean.label_id == "2") { - AgoraManager.getInstance(this).isBjMusic = false + AgoraManager.getInstance().isBjMusic = false } else { - AgoraManager.getInstance(this).isBjMusic = true + AgoraManager.getInstance().isBjMusic = true } AgoraManager.stopMuisc() @@ -3016,7 +3151,7 @@ class RoomActivity : BaseMvpActivity(), ivSoundEffects(false) } // } - if (mRoomInfoResp!!.user_info.user_id == SpUtil.getUserId() + if (mRoomInfoResp?.user_info?.user_id == SpUtil.getUserId() && mRoomInfoResp!!.user_info.pit_number == 9 && mRoomInfoResp!!.room_info.type_id != "2" && mRoomInfoResp!!.room_info.type_id != "6" @@ -3162,13 +3297,13 @@ class RoomActivity : BaseMvpActivity(), */ fun initializeAudio() { if (mRoomUserBean!!.pit_number != 0) { - AgoraManager.getInstance(this).ClientRole(true) - AgoraManager.getInstance(this).muteLocalAudioStream(false) + AgoraManager.getInstance().ClientRole(true) + AgoraManager.getInstance().muteLocalAudioStream(false) } else { - AgoraManager.getInstance(this).ClientRole(false) - AgoraManager.getInstance(this).muteLocalAudioStream(true) + AgoraManager.getInstance().ClientRole(false) + AgoraManager.getInstance().muteLocalAudioStream(true) } - AgoraManager.getInstance(this) + AgoraManager.getInstance() .setLocalAudioEnabled(false, SpUtil.getUserId().toString() + "") } @@ -3385,7 +3520,7 @@ class RoomActivity : BaseMvpActivity(), customMusicFloatingView!!.setOnItemClickListener(object : OnMusicItemClickListener { override fun onMinimize() { customMusicFloatingView!!.destroy() - AgoraManager.getInstance(this@RoomActivity).desMusic() + AgoraManager.getInstance().desMusic() isMusic = false } @@ -3398,20 +3533,20 @@ class RoomActivity : BaseMvpActivity(), override fun onPause() { // ToastUtils.showShort("暂停播放"); // 调用播放器或通知 MusicView - AgoraManager.getInstance(this@RoomActivity).pauseMusic() + AgoraManager.getInstance().pauseMusic() } override fun onResume() { // ToastUtils.showShort("恢复播放"); // 调用播放器或通知 MusicView - AgoraManager.getInstance(this@RoomActivity).resumeMusic() + AgoraManager.getInstance().resumeMusic() } override fun onNext() { // ToastUtils.showShort("下一首"); // 切换歌曲 // List musicSongBeans = AgoraManager.getInstance(RoomActivity.this).getMusicList(); - AgoraManager.nextSong() + AgoraManager.getInstance().nextSong() } }) // customMusicFloatingView.initView(); @@ -3484,8 +3619,8 @@ class RoomActivity : BaseMvpActivity(), } // 恢复音频状态 - if (AgoraManager.getInstance(this) != null) { - AgoraManager.getInstance(this).resumeMusic() + if (AgoraManager.getInstance() != null) { + AgoraManager.getInstance().resumeMusic() } // 清除最小化状态标志 @@ -3732,7 +3867,7 @@ class RoomActivity : BaseMvpActivity(), fun quit() { CommonAppContext.getInstance().isPlaying = false CommonAppContext.getInstance().isShow = false - AgoraManager.getInstance(this).cleanup() + AgoraManager.getInstance().cleanup() MyRoomSingleton.getInstance().onExitRoom() } @@ -3743,10 +3878,10 @@ class RoomActivity : BaseMvpActivity(), fun jiaR() { LogUtils.e( "@@@", - "上一个房间的roonid" + AgoraManager.getInstance(OkDownloadProvider.context).lastRoomId + "上一个房间的roonid" + AgoraManager.getInstance().lastRoomId ) - MvpPre?.getRoomIn(AgoraManager.getInstance(OkDownloadProvider.context).lastRoomId, "") - AgoraManager.getInstance(OkDownloadProvider.context).lastRoomId = "" + MvpPre?.getRoomIn(AgoraManager.getInstance().lastRoomId, "") + AgoraManager.getInstance().lastRoomId = "" } override fun userGuanzSuccess(s: String) { @@ -3844,6 +3979,9 @@ class RoomActivity : BaseMvpActivity(), } GiftDisplayManager.getInstance().clearAll() mBinding!!.giftContainer.removeAllViews() + CommonAppContext.getInstance().isMai = false + CommonAppContext.getInstance().playId = null + // 确保父类的 onDestroy 被调用 super.finish() } @@ -3880,8 +4018,8 @@ class RoomActivity : BaseMvpActivity(), } // 6. 清理 Agora 资源 -// if (AgoraManager.getInstance(this) != null) { -// AgoraManager.getInstance(this).cleanup(); +// if (AgoraManager.getInstance() != null) { +// AgoraManager.getInstance().cleanup(); // } // 清理所有弹框 dismissAllDialogs() diff --git a/MainModule/src/main/java/com/xscm/modulemain/activity/room/fragment/ChatRoomFragment.java b/MainModule/src/main/java/com/xscm/modulemain/activity/room/fragment/ChatRoomFragment.java index 1fc43cc5..bdea20f6 100644 --- a/MainModule/src/main/java/com/xscm/modulemain/activity/room/fragment/ChatRoomFragment.java +++ b/MainModule/src/main/java/com/xscm/modulemain/activity/room/fragment/ChatRoomFragment.java @@ -90,6 +90,11 @@ public class ChatRoomFragment extends BaseMvpFragment messageQueue = new ArrayList<>(); + // 将messageQueue移到类级别,并添加同步控制 + private final List messageQueue = new ArrayList<>(); + private final Object queueLock = new Object(); // 用于同步的锁对象 + private final Handler messageHandler = new Handler(Looper.getMainLooper()) { @Override public void handleMessage(@NonNull Message msg) { if (msg.what == MSG_HANDLE_ROOM_MESSAGE) { - if (!messageQueue.isEmpty()) { - // 批量处理消息 - processBatchMessages(messageQueue); - messageQueue.clear(); - } else if (msg.obj instanceof RoomMessageEvent) { - // 处理单条消息 - processRoomMessage((RoomMessageEvent) msg.obj); + synchronized (queueLock) { + if (!messageQueue.isEmpty()) { + // 批量处理消息 + processBatchMessages(new ArrayList<>(messageQueue)); // 创建副本避免并发修改 + messageQueue.clear(); + } else if (msg.obj instanceof RoomMessageEvent) { + // 处理单条消息 + processRoomMessage((RoomMessageEvent) msg.obj); + } } } } diff --git a/MainModule/src/main/java/com/xscm/modulemain/activity/room/fragment/FriendshipRoomFragment.java b/MainModule/src/main/java/com/xscm/modulemain/activity/room/fragment/FriendshipRoomFragment.java index f86a6b20..4ef2a00c 100644 --- a/MainModule/src/main/java/com/xscm/modulemain/activity/room/fragment/FriendshipRoomFragment.java +++ b/MainModule/src/main/java/com/xscm/modulemain/activity/room/fragment/FriendshipRoomFragment.java @@ -899,7 +899,7 @@ public class FriendshipRoomFragment extends BaseRoomFragment musicSongBeans = new ArrayList<>(); - List music = AgoraManager.getInstance(getContext()).getMusicList(); + List music = AgoraManager.getInstance().getMusicList(); if (music != null && music.size() > 0) { for (int i = 0; i < music.size(); i++) { MusicSongBean musicSongBean = new MusicSongBean(); diff --git a/MainModule/src/main/java/com/xscm/modulemain/activity/room/fragment/RequestFragment.java b/MainModule/src/main/java/com/xscm/modulemain/activity/room/fragment/RequestFragment.java index 05e416ed..66ad4888 100644 --- a/MainModule/src/main/java/com/xscm/modulemain/activity/room/fragment/RequestFragment.java +++ b/MainModule/src/main/java/com/xscm/modulemain/activity/room/fragment/RequestFragment.java @@ -131,7 +131,7 @@ public class RequestFragment extends BaseMvpFragment music = new ArrayList<>(); music.add(item); - AgoraManager.getInstance(getContext()).setMusicList(music); + AgoraManager.getInstance().setMusicList(music); EventBus.getDefault().post(item); - AgoraManager.getInstance(getContext()).nextSong(); + AgoraManager.getInstance().nextSong(); } else { - List music = AgoraManager.getInstance(getContext()).getMusicList(); + List music = AgoraManager.getInstance().getMusicList(); music.add(item); - AgoraManager.getInstance(getContext()).setMusicList(music); + AgoraManager.getInstance().setMusicList(music); } } diff --git a/MainModule/src/main/java/com/xscm/modulemain/activity/room/fragment/RoomCabinFragment.java b/MainModule/src/main/java/com/xscm/modulemain/activity/room/fragment/RoomCabinFragment.java index 086b4256..5f4c80ab 100644 --- a/MainModule/src/main/java/com/xscm/modulemain/activity/room/fragment/RoomCabinFragment.java +++ b/MainModule/src/main/java/com/xscm/modulemain/activity/room/fragment/RoomCabinFragment.java @@ -252,7 +252,7 @@ public class RoomCabinFragment extends BaseRoomFragment= Double.parseDouble(musicSongBean.getDuration())) { - AgoraManager.getInstance(getActivity()).stopMuisc(); + AgoraManager.getInstance().stopMuisc(); MvpPre.changeSong(roomInfoResp.getRoom_info().getRoom_id(), did); } } @@ -647,17 +647,17 @@ public class RoomKtvFragment extends BaseMvpFragment= 0) { + flexboxLayout.removeView(rootContainer); + } + } if (wheatLayoutManager1 != null) { wheatLayoutManager1.clear(); @@ -1437,12 +1444,20 @@ public class SingSongFragment extends BaseRoomFragment implem LogUtils.e("token",token); LogUtils.e("roomId:",roomId); // 初始化 Agora 并加入房间 - AgoraManager.getInstance(getView().getSelfActivity()) + AgoraManager.getInstance() .joinRoom(token, roomId, uid, enableMic,enableJs); // 2. 加入房间 // rtcCore.joinRoom(token, roomId, uid, enableMic); diff --git a/MainModule/src/main/java/com/xscm/modulemain/activity/room/presenter/RoomPresenter.java b/MainModule/src/main/java/com/xscm/modulemain/activity/room/presenter/RoomPresenter.java index 830de898..21fd43e5 100644 --- a/MainModule/src/main/java/com/xscm/modulemain/activity/room/presenter/RoomPresenter.java +++ b/MainModule/src/main/java/com/xscm/modulemain/activity/room/presenter/RoomPresenter.java @@ -58,10 +58,10 @@ public class RoomPresenter extends BasePresenter implements R LogUtils.e("roomId:",roomId); if (getView()!= null && getView().getSelfActivity()!=null){ - AgoraManager.getInstance(getView().getSelfActivity()) + AgoraManager.getInstance() .joinRoom(token, roomId, uid, enableMic,enableJs); }else { - AgoraManager.getInstance(mContext.getApplicationContext()) + AgoraManager.getInstance() .joinRoom(token, roomId, uid, enableMic,enableJs); } if (MvpRef==null){ diff --git a/MainModule/src/main/java/com/xscm/modulemain/activity/room/presenter/VoiceCategoryPresenter.java b/MainModule/src/main/java/com/xscm/modulemain/activity/room/presenter/VoiceCategoryPresenter.java index 03c84b34..aa671509 100644 --- a/MainModule/src/main/java/com/xscm/modulemain/activity/room/presenter/VoiceCategoryPresenter.java +++ b/MainModule/src/main/java/com/xscm/modulemain/activity/room/presenter/VoiceCategoryPresenter.java @@ -55,11 +55,11 @@ public class VoiceCategoryPresenter extends BasePresenter>() {}.getType(); // List restoredRoomModels = GsonUtils.getGSON().fromJson(SpUtils.getHomeBanner(), listType); // MvpRef.get().setBanners(restoredRoomModels); - api.getBanners(new BaseObserver>() { + api.getBanners(s,new BaseObserver>() { @Override public void onSubscribe(Disposable d) { addDisposable(d); @@ -74,9 +74,8 @@ public class VoiceCategoryPresenter extends BasePresenter implements GiftWallConacts.View { - SectionsPagerAdapter sectionsPagerAdapter; + SectionsGifPagerAdapter sectionsPagerAdapter; @Override protected void initData() { @@ -35,7 +33,7 @@ public class GiftWallActivity extends BaseMvpActivity implements NobleTitleConacts.View { +public class NobleTitleActivity extends BaseMvpActivity implements com.xscm.modulemain.activity.user.conacts.NobleTitleConacts.View { private LinearLayout mContentView; private List mNobilityPowerItemList = new ArrayList<>(); private String lid; diff --git a/MainModule/src/main/java/com/xscm/modulemain/activity/user/activity/SettingActivity.java b/MainModule/src/main/java/com/xscm/modulemain/activity/user/activity/SettingActivity.java index e5c8a723..cdee8234 100644 --- a/MainModule/src/main/java/com/xscm/modulemain/activity/user/activity/SettingActivity.java +++ b/MainModule/src/main/java/com/xscm/modulemain/activity/user/activity/SettingActivity.java @@ -23,6 +23,7 @@ import com.xscm.modulemain.activity.user.presenter.SettingPresenter; import com.xscm.modulemain.BaseMvpActivity; import com.xscm.modulemain.dialog.YouthModelDialog; import com.xscm.moduleutil.base.CommonAppContext; +import com.xscm.moduleutil.bean.UserInfo; import com.xscm.moduleutil.dialog.RealNameDialog; import com.xscm.moduleutil.utils.ARouteConstants; import com.xscm.moduleutil.utils.SpUtil; @@ -50,6 +51,7 @@ public class SettingActivity extends BaseMvpActivity bannerModels); } public interface IMePre extends IPresenter { @@ -33,6 +37,9 @@ public final class MeConacts { void entranceCheckFirstRecharge(); void getMemberList(String userId, int page); + + + void wallet(); } } diff --git a/MainModule/src/main/java/com/xscm/modulemain/activity/user/conacts/NobleTitleConacts.java b/MainModule/src/main/java/com/xscm/modulemain/activity/user/conacts/NobleTitleConacts.java index a2f3d776..7e82805e 100644 --- a/MainModule/src/main/java/com/xscm/modulemain/activity/user/conacts/NobleTitleConacts.java +++ b/MainModule/src/main/java/com/xscm/modulemain/activity/user/conacts/NobleTitleConacts.java @@ -1,9 +1,14 @@ -package com.example.modulevocal.conacts; +package com.xscm.modulemain.activity.user.conacts; import android.app.Activity; + import com.xscm.moduleutil.activity.IPresenter; import com.xscm.moduleutil.activity.IView; -import com.xscm.moduleutil.bean.*; +import com.xscm.moduleutil.bean.AppPay; +import com.xscm.moduleutil.bean.BindType; +import com.xscm.moduleutil.bean.NobilitDeatils; +import com.xscm.moduleutil.bean.NobilitList; +import com.xscm.moduleutil.bean.NobilityPrice; import java.util.List; diff --git a/MainModule/src/main/java/com/xscm/modulemain/activity/user/conacts/SettingConacts.java b/MainModule/src/main/java/com/xscm/modulemain/activity/user/conacts/SettingConacts.java index 7d69ecae..cd314485 100644 --- a/MainModule/src/main/java/com/xscm/modulemain/activity/user/conacts/SettingConacts.java +++ b/MainModule/src/main/java/com/xscm/modulemain/activity/user/conacts/SettingConacts.java @@ -15,5 +15,7 @@ public class SettingConacts { void clearLoginInfo(); void cancel(); + + void getModifyHideStatus(String hide_status); } } diff --git a/MainModule/src/main/java/com/xscm/modulemain/activity/user/fragment/PlaceholderFragment.java b/MainModule/src/main/java/com/xscm/modulemain/activity/user/fragment/PlaceholderFragment.java index 30a8318b..7139105e 100644 --- a/MainModule/src/main/java/com/xscm/modulemain/activity/user/fragment/PlaceholderFragment.java +++ b/MainModule/src/main/java/com/xscm/modulemain/activity/user/fragment/PlaceholderFragment.java @@ -1,4 +1,4 @@ -package com.example.modulevocal.activity.ui.main; +package com.xscm.modulemain.activity.user.fragment; import android.content.Context; import android.os.Bundle; @@ -6,14 +6,16 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.GridView; -import android.widget.TextView; -import androidx.annotation.Nullable; + import androidx.annotation.NonNull; import androidx.fragment.app.Fragment; -import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; -import com.example.modulevocal.databinding.FragmentGiftWallBinding; + +import com.xscm.modulemain.activity.user.PageViewModel; +import com.xscm.modulemain.adapter.GiftWallAdapter; +import com.xscm.modulemain.databinding.FragmentGiftWallBinding; import com.xscm.moduleutil.bean.GiftUserWallBean; + import org.jetbrains.annotations.NotNull; import java.util.ArrayList; diff --git a/MainModule/src/main/java/com/xscm/modulemain/activity/user/fragment/UserHomepageFragment.java b/MainModule/src/main/java/com/xscm/modulemain/activity/user/fragment/UserHomepageFragment.java index e6a31ab2..22d6e871 100644 --- a/MainModule/src/main/java/com/xscm/modulemain/activity/user/fragment/UserHomepageFragment.java +++ b/MainModule/src/main/java/com/xscm/modulemain/activity/user/fragment/UserHomepageFragment.java @@ -114,11 +114,24 @@ public class UserHomepageFragment extends BaseMvpFragment bannerModels) { + mBinding.banner.setBannerData(com.xscm.moduleutil.R.layout.index_image_banner, bannerModels); + } - /** - * 获取守护数 - */ -// @Override -// public void setMemberList(GuardMemberBean guardMemberBean) { -//// if (guardMemberBean != null) { -//// mBinding.tvGuardNum.setText(guardMemberBean.getHead().getTotal_number()); -//// } -// } private void copyUserId(CharSequence content) { ClipboardManager clipboard = (ClipboardManager) getActivity().getSystemService(CLIPBOARD_SERVICE); @@ -327,85 +391,6 @@ public class VocalRangeFragment extends BaseMvpFragment initItems() { -// List items = new ArrayList<>(); -// // 成为大神 -// MeItemBean skill = new MeItemBean(true, true); -// skill.setIcon(R.mipmap.me_icon_cwds); -// skill.setName("成为大神"); -// skill.setType("skill"); -// items.add(skill); -// // 我的订单 -//// MeItemBean order = new MeItemBean(true, false); -//// order.setIcon(R.mipmap.me_icon_wddd); -//// order.setName("我的订单"); -//// order.setType("order"); -//// items.add(order); -//// // 评价订单 -//// MeItemBean pjOrder = new MeItemBean(true, false); -//// pjOrder.setIcon(R.mipmap.me_icon_pjdd); -//// pjOrder.setName("评价订单"); -//// pjOrder.setType("pjOrder"); -//// items.add(pjOrder); -// // 我的等级 -// MeItemBean wdDengji = new MeItemBean(true, true); -// wdDengji.setIcon(R.mipmap.me_icon_wddj); -// wdDengji.setName("我的等级"); -// wdDengji.setType("wdDengji"); -// items.add(wdDengji); -// // 我的公会 -// MeItemBean wdGonghui = new MeItemBean(true, true); -// wdGonghui.setIcon(R.mipmap.me_icon_wdgh); -// wdGonghui.setName("我的公会"); -// wdGonghui.setType("wdGonghui"); -// items.add(wdGonghui); -//// // 邀请有礼 -//// MeItemBean yqYouli = new MeItemBean(true, true); -//// yqYouli.setIcon(R.mipmap.me_icon_yqyl); -//// yqYouli.setName("邀请有礼"); -//// yqYouli.setType("yqYouli"); -//// items.add(yqYouli); -// // 实名认证 -// MeItemBean verified = new MeItemBean(false, true); -// verified.setIcon(R.mipmap.me_icon_smrz); -// verified.setName("实名认证"); -// verified.setType("verified"); -// items.add(verified); -// -// return items; -// } - -// private List initItems2() { -// List items = new ArrayList<>(); -// // 在线客服 -// MeItemBean customerService = new MeItemBean(true, true); -// customerService.setType("customer_service"); -// customerService.setName("在线客服"); -// customerService.setIcon(R.mipmap.me_icon_service); -// items.add(customerService); -// // 帮助中心 -// MeItemBean helpCenter = new MeItemBean(true, true); -// helpCenter.setType("help_center"); -// helpCenter.setName("帮助中心"); -// helpCenter.setIcon(R.mipmap.me_icon_help); -// items.add(helpCenter); -// // 设置 -// MeItemBean settings = new MeItemBean(false, true); -// settings.setType("settings"); -// settings.setName("设置"); -// settings.setIcon(R.mipmap.me_icon_setting); -// items.add(settings); -// -// return items; -// } - - /** - * 关闭首充入口 - */ -// @Subscribe(threadMode = ThreadMode.MAIN) -// public void closeFirstCharge(CloseFirstChargeEvent closeFirstChargeEvent) { -//// mBinding.ivFirstCharge.setVisibility(View.GONE); -// } @Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { diff --git a/MainModule/src/main/java/com/xscm/modulemain/activity/user/presenter/EditUserPresenter.java b/MainModule/src/main/java/com/xscm/modulemain/activity/user/presenter/EditUserPresenter.java index b9e2f78d..d1094047 100644 --- a/MainModule/src/main/java/com/xscm/modulemain/activity/user/presenter/EditUserPresenter.java +++ b/MainModule/src/main/java/com/xscm/modulemain/activity/user/presenter/EditUserPresenter.java @@ -12,15 +12,17 @@ import com.xscm.moduleutil.utils.cos.CosUploadManager; import com.xscm.moduleutil.utils.oss.OSSOperUtils; import java.io.File; +import java.lang.ref.WeakReference; import java.util.List; import io.reactivex.disposables.Disposable; public class EditUserPresenter extends BasePresenter implements EditUserConactos.IMePre { + EditUserConactos.View mView; public EditUserPresenter(EditUserConactos.View view, Context context) { super(view, context); + mView = view; } - @Override public void topicList(String page, String page_limit) { @@ -85,6 +87,9 @@ public class EditUserPresenter extends BasePresenter impl @Override public void onNext(UserInfo userInfo) { + if (MvpRef==null){ + MvpRef=new WeakReference<>(mView); + } MvpRef.get().getUserHomeSuccess(userInfo); } }); diff --git a/MainModule/src/main/java/com/xscm/modulemain/activity/user/presenter/GiftWallPresenter.java b/MainModule/src/main/java/com/xscm/modulemain/activity/user/presenter/GiftWallPresenter.java index e50b1ab1..ef2c884e 100644 --- a/MainModule/src/main/java/com/xscm/modulemain/activity/user/presenter/GiftWallPresenter.java +++ b/MainModule/src/main/java/com/xscm/modulemain/activity/user/presenter/GiftWallPresenter.java @@ -1,9 +1,12 @@ -package com.example.modulevocal.activity.ui.main; +package com.xscm.modulemain.activity.user.presenter; import android.content.Context; + +import com.xscm.modulemain.activity.user.conacts.GiftWallConacts; import com.xscm.moduleutil.bean.GiftUserWallBean; import com.xscm.moduleutil.http.BaseObserver; import com.xscm.moduleutil.presenter.BasePresenter; + import io.reactivex.disposables.Disposable; /** diff --git a/MainModule/src/main/java/com/xscm/modulemain/activity/user/presenter/MePresenter.java b/MainModule/src/main/java/com/xscm/modulemain/activity/user/presenter/MePresenter.java index 9356e1ac..e88ddc39 100644 --- a/MainModule/src/main/java/com/xscm/modulemain/activity/user/presenter/MePresenter.java +++ b/MainModule/src/main/java/com/xscm/modulemain/activity/user/presenter/MePresenter.java @@ -3,16 +3,23 @@ package com.xscm.modulemain.activity.user.presenter; import android.content.Context; import com.xscm.modulemain.activity.user.conacts.MeConacts; +import com.xscm.moduleutil.bean.BannerModel; import com.xscm.moduleutil.bean.UserInfo; +import com.xscm.moduleutil.bean.WalletBean; import com.xscm.moduleutil.http.BaseObserver; import com.xscm.moduleutil.presenter.BasePresenter; +import java.lang.ref.WeakReference; +import java.util.List; + import io.reactivex.disposables.Disposable; public class MePresenter extends BasePresenter implements MeConacts.IMePre { + MeConacts.View mView; public MePresenter(MeConacts.View view, Context context) { super(view, context); + mView = view; } @Override @@ -164,28 +171,39 @@ public class MePresenter extends BasePresenter implements MeCona } - public void getConfig() { -// api.appUpdate(new com.qpyy.libcommon.http.BaseObserver() { -// @Override -// public void onSubscribe(Disposable d) { -// addDisposable(d); -// } -// -// @Override -// public void onNext(AppUpdateModel appUpdateModel) { -// String channelId = "default"; -// try { -// channelId = MetaDataUtils.getMetaDataInApp("TD_CHANNEL_ID"); -// } catch (Exception e) { -// e.printStackTrace(); -// } -// MvpRef.get().hideSkill(appUpdateModel != null && appUpdateModel.getChannels() != null && appUpdateModel.getChannels().contains(channelId)); -// } -// -// @Override -// public void onComplete() { -// -// } -// }); + @Override + public void wallet() { + api.wallet(new BaseObserver() { + @Override + public void onSubscribe(Disposable d) { + addDisposable(d); + } + + @Override + public void onNext(WalletBean walletBean) { + MvpRef.get().wallet(walletBean); + } + }); + } + + public void getBanners(String s) { +// Type listType = new TypeToken>() {}.getType(); +// List restoredRoomModels = GsonUtils.getGSON().fromJson(SpUtils.getHomeBanner(), listType); +// MvpRef.get().setBanners(restoredRoomModels); + api.getBanners(s,new BaseObserver>() { + @Override + public void onSubscribe(Disposable d) { + addDisposable(d); + } + + @Override + public void onNext(List bannerModels) { + if (MvpRef==null){ + MvpRef=new WeakReference<>(mView); + } + MvpRef.get().setBanners(bannerModels); + } + + }); } } diff --git a/MainModule/src/main/java/com/xscm/modulemain/activity/user/presenter/NobleTitlePresenter.java b/MainModule/src/main/java/com/xscm/modulemain/activity/user/presenter/NobleTitlePresenter.java index 19e3313a..2b4b5e15 100644 --- a/MainModule/src/main/java/com/xscm/modulemain/activity/user/presenter/NobleTitlePresenter.java +++ b/MainModule/src/main/java/com/xscm/modulemain/activity/user/presenter/NobleTitlePresenter.java @@ -1,17 +1,23 @@ -package com.example.modulevocal.presenter; +package com.xscm.modulemain.activity.user.presenter; import android.content.Context; -import com.example.modulevocal.conacts.MeConacts; -import com.example.modulevocal.conacts.NobleTitleConacts; -import com.xscm.moduleutil.bean.*; + +import com.xscm.modulemain.activity.user.conacts.NobleTitleConacts; +import com.xscm.moduleutil.bean.AppPay; +import com.xscm.moduleutil.bean.BindType; +import com.xscm.moduleutil.bean.NobilitDeatils; +import com.xscm.moduleutil.bean.NobilitList; +import com.xscm.moduleutil.bean.NobilityPrice; import com.xscm.moduleutil.http.BaseObserver; import com.xscm.moduleutil.presenter.BasePresenter; -import io.reactivex.disposables.Disposable; + import org.jetbrains.annotations.NotNull; import java.lang.ref.WeakReference; import java.util.List; +import io.reactivex.disposables.Disposable; + /** * com.example.modulevocal.presenter * qx diff --git a/MainModule/src/main/java/com/xscm/modulemain/activity/user/presenter/RechargePresenter.java b/MainModule/src/main/java/com/xscm/modulemain/activity/user/presenter/RechargePresenter.java index 57770b68..d1871288 100644 --- a/MainModule/src/main/java/com/xscm/modulemain/activity/user/presenter/RechargePresenter.java +++ b/MainModule/src/main/java/com/xscm/modulemain/activity/user/presenter/RechargePresenter.java @@ -51,7 +51,7 @@ public class RechargePresenter extends BasePresenter impl @Override public void appPay(String user_id, String money, String coin, String type, String type_params, String type_id) { - api.appPay(user_id, money, coin, type,type_params,type_id, new BaseObserver() { + api.appPay(user_id, money, coin, type,type_params,type_id,"", new BaseObserver() { @Override public void onSubscribe(Disposable d) { addDisposable(d); diff --git a/MainModule/src/main/java/com/xscm/modulemain/activity/user/presenter/SettingPresenter.java b/MainModule/src/main/java/com/xscm/modulemain/activity/user/presenter/SettingPresenter.java index 11475f6e..04d3db8b 100644 --- a/MainModule/src/main/java/com/xscm/modulemain/activity/user/presenter/SettingPresenter.java +++ b/MainModule/src/main/java/com/xscm/modulemain/activity/user/presenter/SettingPresenter.java @@ -6,13 +6,18 @@ import com.xscm.modulemain.activity.user.conacts.SettingConacts; import com.xscm.moduleutil.http.BaseObserver; import com.xscm.moduleutil.presenter.BasePresenter; +import org.jetbrains.annotations.NotNull; + +import java.lang.ref.WeakReference; + import io.reactivex.disposables.Disposable; public class SettingPresenter extends BasePresenter implements SettingConacts.IMePre { + private SettingConacts.View mView; public SettingPresenter(SettingConacts.View view, Context context) { super(view, context); + mView = view; } - @Override public void clearLoginInfo() { api.clearLoginInfo(new BaseObserver() { @@ -23,6 +28,9 @@ public class SettingPresenter extends BasePresenter impleme @Override public void onNext(String s) { + if (MvpRef==null){ + MvpRef=new WeakReference<>(mView); + } MvpRef.get().clearLoginInfo(s); } }); @@ -39,8 +47,26 @@ public class SettingPresenter extends BasePresenter impleme @Override public void onNext(String s) { + if (MvpRef==null){ + MvpRef=new WeakReference<>(mView); + } MvpRef.get().cancel(s); } }); } + + @Override + public void getModifyHideStatus(String hide_status) { + api.getModifyHideStatus(hide_status, new BaseObserver() { + @Override + public void onSubscribe(@NotNull Disposable d) { + addDisposable(d); + } + + @Override + public void onNext(@NotNull String s) { + + } + }); + } } diff --git a/MainModule/src/main/java/com/xscm/modulemain/adapter/BlackAdapter.java b/MainModule/src/main/java/com/xscm/modulemain/adapter/BlackAdapter.java index cdb35a77..8c37df17 100644 --- a/MainModule/src/main/java/com/xscm/modulemain/adapter/BlackAdapter.java +++ b/MainModule/src/main/java/com/xscm/modulemain/adapter/BlackAdapter.java @@ -45,7 +45,7 @@ public class BlackAdapter extends BaseQuickAdapter() { - @Override - public boolean onResourceReady(Drawable resource, Object model, Target target, - DataSource dataSource, boolean isFirstResource) { - // 检查视图是否仍属于当前数据项 - if (uniqueId.equals(emojiImageView.getTag())) { - // 加载完成后执行 - new Handler().postDelayed(() -> { - // 再次检查视图状态 - if (uniqueId.equals(emojiImageView.getTag())) { - Glide.with(mContext) - .load(emMessage.getText().getEmoji().getImage()) - .into(emojiImageView); - } - }, 1500); + if (!emMessage.getText().getEmoji().getAnimate_image().isEmpty()) { + // 使用 RequestListener 监听加载完成 + Glide.with(mContext) + .load(emMessage.getText().getEmoji().getAnimate_image()) + .listener(new RequestListener() { + @Override + public boolean onResourceReady(Drawable resource, Object model, Target target, + DataSource dataSource, boolean isFirstResource) { + // 检查视图是否仍属于当前数据项 + if (uniqueId.equals(emojiImageView.getTag())) { + // 加载完成后执行 + new Handler().postDelayed(() -> { + // 再次检查视图状态 + if (uniqueId.equals(emojiImageView.getTag())) { + Glide.with(mContext) + .load(emMessage.getText().getEmoji().getImage()) + .into(emojiImageView); + } + }, 1500); + } + return false; } - return false; - } - @Override - public boolean onLoadFailed(@Nullable GlideException e, Object model, Target target, - boolean isFirstResource) { - return false; - } - }) - .into(emojiImageView); + @Override + public boolean onLoadFailed(@Nullable GlideException e, Object model, Target target, + boolean isFirstResource) { + + return false; + } + }) + .into(emojiImageView); + }else { + Glide.with(mContext) + .load(emMessage.getText().getEmoji().getImage()) + .into(emojiImageView); + } } else { helper.getView(com.xscm.moduleutil.R.id.tv_content).setVisibility(View.VISIBLE); emojiImageView.setVisibility(View.GONE); @@ -573,7 +592,7 @@ public class EaseChatAdapter extends BaseMultiItemQuickAdapter { + if (item.is_lock()==1){ + ToastUtils.show("当前属于爵位专属,请先开通爵位"); + return; + } if (onEmotionClickListener != null) { onEmotionClickListener.onEmotionClick(item); } diff --git a/MainModule/src/main/java/com/xscm/modulemain/adapter/ExpandColumnAdapter.java b/MainModule/src/main/java/com/xscm/modulemain/adapter/ExpandColumnAdapter.java index 5258e8bc..368c4b8b 100644 --- a/MainModule/src/main/java/com/xscm/modulemain/adapter/ExpandColumnAdapter.java +++ b/MainModule/src/main/java/com/xscm/modulemain/adapter/ExpandColumnAdapter.java @@ -1,5 +1,6 @@ package com.xscm.modulemain.adapter; +import android.graphics.Color; import android.view.View; import android.widget.ImageView; import android.widget.LinearLayout; @@ -53,6 +54,7 @@ public class ExpandColumnAdapter extends BaseQuickAdapter { if (selectedPosition != -1){ if (selectedPosition == 0){ - AgoraManager.getInstance(getActivity()).potexao(new File(getSavePath() + "xs.mp3").getPath()); + AgoraManager.getInstance().potexao(new File(getSavePath() + "xs.mp3").getPath()); }else if (selectedPosition == 1){ - AgoraManager.getInstance(getActivity()).potexao(new File(getSavePath() + "hh.mp3").getPath()); + AgoraManager.getInstance().potexao(new File(getSavePath() + "hh.mp3").getPath()); }else if (selectedPosition == 2){ - AgoraManager.getInstance(getActivity()).potexao(new File(getSavePath() + "gg.mp3").getPath()); + AgoraManager.getInstance().potexao(new File(getSavePath() + "gg.mp3").getPath()); }else if (selectedPosition == 3){ - AgoraManager.getInstance(getActivity()).potexao(new File(getSavePath() + "zs.mp3").getPath()); + AgoraManager.getInstance().potexao(new File(getSavePath() + "zs.mp3").getPath()); }else if (selectedPosition == 4){ - AgoraManager.getInstance(getActivity()).potexao(new File(getSavePath() + "mmd.mp3").getPath()); + AgoraManager.getInstance().potexao(new File(getSavePath() + "mmd.mp3").getPath()); } } diff --git a/MainModule/src/main/java/com/xscm/modulemain/dialog/TunerDialogFragment.java b/MainModule/src/main/java/com/xscm/modulemain/dialog/TunerDialogFragment.java index 392c7703..53642fb8 100644 --- a/MainModule/src/main/java/com/xscm/modulemain/dialog/TunerDialogFragment.java +++ b/MainModule/src/main/java/com/xscm/modulemain/dialog/TunerDialogFragment.java @@ -105,7 +105,7 @@ public class TunerDialogFragment extends BaseMvpDialogFragment diff --git a/MainModule/src/main/res/layout/activity_main.xml b/MainModule/src/main/res/layout/activity_main.xml index 0b4e3c53..fc9e93b4 100644 --- a/MainModule/src/main/res/layout/activity_main.xml +++ b/MainModule/src/main/res/layout/activity_main.xml @@ -229,34 +229,45 @@ - - + android:gravity="center_vertical" + android:orientation="horizontal" + android:visibility="gone" + tools:visibility="visible"> + + + + android:visibility="gone"> + diff --git a/MainModule/src/main/res/layout/activity_setting.xml b/MainModule/src/main/res/layout/activity_setting.xml index b816622a..17c0b1c0 100644 --- a/MainModule/src/main/res/layout/activity_setting.xml +++ b/MainModule/src/main/res/layout/activity_setting.xml @@ -111,6 +111,34 @@ android:layout_alignParentBottom="true" android:background="@color/color_FFE5E5E5" /> + + + + + + + + + + - - - - - - - - - diff --git a/MainModule/src/main/res/layout/fragment_vocal_range.xml b/MainModule/src/main/res/layout/fragment_vocal_range.xml index 37f08467..4893a380 100644 --- a/MainModule/src/main/res/layout/fragment_vocal_range.xml +++ b/MainModule/src/main/res/layout/fragment_vocal_range.xml @@ -7,6 +7,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:overScrollMode="never" + android:background="@mipmap/home_bj" android:paddingBottom="@dimen/dp_60"> + app:layout_constraintTop_toTopOf="parent" + android:visibility="gone"> + android:src="@drawable/image_yq"/> + android:src="@drawable/custom"/> + android:src="@mipmap/setting"/> @@ -57,18 +56,18 @@ + app:layout_constraintTop_toTopOf="parent"/> - + app:layout_constraintTop_toTopOf="@+id/riv_user_head" + android:layout_marginStart="@dimen/dp_14" + tools:text="用户22333333"/> - + - + - + - - - + - - - - - + + + + + + + + - - - - - - + + + + + + + - - - - - + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -175,7 +217,7 @@ + android:layout_gravity="center|center_horizontal|center_vertical" + android:orientation="vertical"> + + android:textColor="#CCCDC8" + android:textSize="@dimen/sp_12"/> - @@ -215,8 +258,8 @@ android:layout_width="@dimen/dp_1" android:layout_height="@dimen/dp_18" android:layout_gravity="center_vertical" - android:background="@color/white" - android:visibility="gone" /> + android:background="#444541" + /> + android:orientation="vertical"> + + - - + android:textColor="#CCCDC8" + android:textSize="@dimen/sp_12"/> @@ -251,8 +294,8 @@ android:layout_width="@dimen/dp_1" android:layout_height="@dimen/dp_18" android:layout_gravity="center_vertical" - android:background="@color/white" - android:visibility="gone" /> + android:background="#444541" + /> + + - - + android:textColor="#CCCDC8" + android:textSize="@dimen/sp_12"/> @@ -289,7 +332,7 @@ android:layout_height="@dimen/dp_18" android:layout_gravity="center_vertical" android:background="@color/white" - android:visibility="gone" /> + android:visibility="gone"/> + android:visibility="gone"> + android:textSize="@dimen/sp_20"/> + android:textSize="@dimen/sp_12"/> - - - - - - - - - - - + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + android:text="更多" + android:gravity="center" + android:drawableRight="@mipmap/arrow_right" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="@id/im_noblesse" + android:layout_marginEnd="@dimen/dp_15" + android:textColor="#EECE72" + android:textSize="@dimen/sp_14"/> - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + android:layout_marginTop="@dimen/dp_12" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/rl" + app:pointsVisibility="false"/> + + + android:paddingStart="@dimen/dp_16" + android:paddingBottom="@dimen/dp_12" + android:paddingEnd="@dimen/dp_16" + > + + - + - + + + + + + + + + + + + + + + + + + - - - - - - - + android:layout_width="@dimen/dp_24" + android:layout_height="@dimen/dp_24" + android:src="@mipmap/my_dan"/> + android:textColor="#CCCDC8" + android:textSize="@dimen/sp_12"/> + + + + + + + + + + + + + + + + @@ -465,15 +799,102 @@ android:layout_width="wrap_content" android:layout_height="@dimen/dp_17" android:layout_marginTop="@dimen/dp_3" - android:text="@string/guild" - android:textColor="@color/color_FF333333" - android:textSize="@dimen/sp_12" /> + android:text="@string/setting_name" + android:textColor="#CCCDC8" + android:textSize="@dimen/sp_12"/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + android:layout_width="@dimen/dp_24" + android:layout_height="@dimen/dp_24" + android:src="@mipmap/me_test" + + /> + android:text="@string/daily" + android:textColor="#CCCDC8" + android:textSize="@dimen/sp_12"/> + + + + + + + @@ -503,30 +950,30 @@ android:orientation="horizontal"> + android:layout_width="@dimen/dp_24" + android:layout_height="@dimen/dp_24" + android:src="@mipmap/me_income"/> + android:text="个税客服" + android:textColor="#CCCDC8" + android:textSize="@dimen/sp_12"/> - + + + + - + + + + + + + - - - diff --git a/MainModule/src/main/res/layout/item_emotion.xml b/MainModule/src/main/res/layout/item_emotion.xml index 40de97b4..8c97ed19 100644 --- a/MainModule/src/main/res/layout/item_emotion.xml +++ b/MainModule/src/main/res/layout/item_emotion.xml @@ -1,34 +1,45 @@ + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="@dimen/dp_60" + android:layout_height="@dimen/dp_85" + xmlns:tools="http://schemas.android.com/tools" + > + android:id="@+id/iv_emotion" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:scaleType="fitCenter" + tools:src="@mipmap/ic_launcher" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintEnd_toEndOf="parent" + android:layout_marginBottom="@dimen/dp_10" + app:layout_constraintTop_toTopOf="parent" /> + android:id="@+id/tv_emotion_name" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginTop="@dimen/dp_4" + android:ellipsize="end" + android:maxLines="1" + android:gravity="center" + android:textColor="#BBB9C6" + android:textSize="12sp" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/iv_emotion" /> + + diff --git a/MainModule/src/main/res/layout/room_top.xml b/MainModule/src/main/res/layout/room_top.xml index 125db6bf..a7fd39af 100644 --- a/MainModule/src/main/res/layout/room_top.xml +++ b/MainModule/src/main/res/layout/room_top.xml @@ -108,7 +108,8 @@ android:gravity="center" android:text="0" android:textColor="@color/white" - android:textSize="@dimen/sp_12" /> + android:textSize="@dimen/sp_12" + android:visibility="gone"/> + android:textSize="@dimen/sp_12" + android:visibility="gone"/> + +