From 268c3cdd98764a79b7c54d620bb9d933d4c6dc42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A2=81=E5=B0=8F=E6=B1=9F?= <461355754@qq.com> Date: Wed, 14 Jan 2026 10:09:45 +0800 Subject: [PATCH] =?UTF-8?q?1:=E5=9C=A8=E9=85=92=E5=90=A7=E6=88=BF=E5=B0=8F?= =?UTF-8?q?=E9=BB=91=E5=B1=8B=E4=B8=AD=EF=BC=8C=E7=82=B9=E5=87=BB=E9=80=81?= =?UTF-8?q?=E7=A4=BC=E6=B7=BB=E5=8A=A0=E4=BA=8C=E6=AC=A1=E5=BC=B9=E7=AA=97?= =?UTF-8?q?=EF=BC=8C=E5=B9=B6=E4=B8=94=E5=9C=A8=E7=82=B9=E5=87=BB=E9=80=80?= =?UTF-8?q?=E5=87=BA=E6=88=BF=E9=97=B4=E7=9A=84=E6=97=B6=E5=80=99=EF=BC=8C?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=BA=8C=E6=AC=A1=E5=BC=B9=E6=A1=86=E7=A1=AE?= =?UTF-8?q?=E8=AE=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../room/fragment/RoomPrivateFragment.kt | 74 ++++++++--- .../dialog/barRoom/PrivateGiftDialog.kt | 96 ++++++++++++++ .../src/main/res/layout/dialog_private.xml | 119 ++++++++++++++++++ gradle.properties | 4 +- 4 files changed, 276 insertions(+), 17 deletions(-) create mode 100644 MainModule/src/main/java/com/xscm/modulemain/dialog/barRoom/PrivateGiftDialog.kt create mode 100644 MainModule/src/main/res/layout/dialog_private.xml diff --git a/MainModule/src/main/java/com/xscm/modulemain/activity/room/fragment/RoomPrivateFragment.kt b/MainModule/src/main/java/com/xscm/modulemain/activity/room/fragment/RoomPrivateFragment.kt index 7a0e604f..e931ab2b 100644 --- a/MainModule/src/main/java/com/xscm/modulemain/activity/room/fragment/RoomPrivateFragment.kt +++ b/MainModule/src/main/java/com/xscm/modulemain/activity/room/fragment/RoomPrivateFragment.kt @@ -19,15 +19,18 @@ import com.xscm.modulemain.activity.room.activity.RoomActivity import com.xscm.modulemain.activity.room.contacts.PrivateContacts import com.xscm.modulemain.activity.room.presenter.PrivatePresenter import com.xscm.modulemain.databinding.FragmentRoomPrivateBinding +import com.xscm.modulemain.dialog.barRoom.PrivateGiftDialog import com.xscm.moduleutil.base.BaseMvpFragment import com.xscm.moduleutil.base.CommonAppContext import com.xscm.moduleutil.bean.RoomMessageEvent import com.xscm.moduleutil.bean.RoonGiftModel import com.xscm.moduleutil.bean.WalletBean import com.xscm.moduleutil.bean.room.RoomCpUserBean +import com.xscm.moduleutil.bean.room.RoomGiveGiftModel import com.xscm.moduleutil.bean.room.RoomInfoResp import com.xscm.moduleutil.bean.room.RoomPitBean import com.xscm.moduleutil.bean.room.RoomUserBean +import com.xscm.moduleutil.dialog.ConfirmDialog import com.xscm.moduleutil.listener.MessageExListenerSingleton import com.xscm.moduleutil.rtc.AgoraManager import io.reactivex.Observable @@ -71,6 +74,9 @@ class RoomPrivateFragment(var mRoomInfoResp: RoomInfoResp?) : private var sendGiftResult = false + private var privateGiftDialog: PrivateGiftDialog? = null + private var dialogPrivate = false + override fun initView() { giftViewList.clear() giftTViewList.clear() @@ -94,14 +100,33 @@ class RoomPrivateFragment(var mRoomInfoResp: RoomInfoResp?) : ToastUtils.showShort("手太快了,正在发送中...") return@setOnClickListener } + val sendGiftUserId = mBinding.rpwv2.pitBean.user_id + if (dialogPrivate) { + MvpPre.sendGift(mRoomId, it.tag.toString(), sendGiftUserId, index) + it.visibility = View.INVISIBLE + giftTViewList[index].visibility = View.INVISIBLE + sendGiftResult = true + } else { + if (privateGiftDialog == null) { + privateGiftDialog = PrivateGiftDialog( + ActivityUtils.getTopActivity() + ) + } + privateGiftDialog?.show( + giftTViewList[index].tag.toString(), + giftTViewList[index].text.toString().toInt() + ) + privateGiftDialog?.setOnConfirmListener { isSelected -> + dialogPrivate = isSelected + MvpPre.sendGift(mRoomId, it.tag.toString(), sendGiftUserId, index) + it.visibility = View.INVISIBLE + giftTViewList[index].visibility = View.INVISIBLE + sendGiftResult = true + } + } - MvpPre.sendGift(mRoomId, it.tag.toString(), sendGiftUserId,index) - it.visibility = View.INVISIBLE - giftTViewList[index].visibility = View.INVISIBLE - - sendGiftResult = true } } @@ -109,8 +134,24 @@ class RoomPrivateFragment(var mRoomInfoResp: RoomInfoResp?) : mBinding?.tvHeartNum?.text = mRoomInfoResp?.room_info?.hot_value mBinding?.tvBack?.setOnClickListener { - //返回到上一个房间 - MvpPre?.exitRoom(mRoomId,mUserInfo?.user_id.toString()) + ConfirmDialog( + ActivityUtils.getTopActivity(), + "温馨提示", + "是否退出当前交友小屋?", + "确定", + "取消", + { + //返回到上一个房间 + MvpPre?.exitRoom(mRoomId, mUserInfo?.user_id.toString()) + }, + { + + }, + false, + 0 + ).show() + + } // 定义两个 RoomPitBean 对象,分别用于显示在 roomMakeWheat1 和 roomMakeWheat2 @@ -172,7 +213,8 @@ class RoomPrivateFragment(var mRoomInfoResp: RoomInfoResp?) : fun roomTypeSwitch(mRoomInfoResp: RoomInfoResp) { this.mRoomInfoResp = mRoomInfoResp - + sendGiftResult = false + dialogPrivate = false mUserInfo = this.mRoomInfoResp?.user_info mRoomId = this.mRoomInfoResp?.room_info?.room_id!! cpUserBean = this.mRoomInfoResp?.cp_user @@ -221,6 +263,7 @@ class RoomPrivateFragment(var mRoomInfoResp: RoomInfoResp?) : // 设置 padding(左、上、右、下) itemImage.setPadding(paddingPx, paddingPx, paddingPx, paddingPx) itemImage.tag = showList[0].gift_id + giftTViewList[idx].tag = showList[0].gift_name Glide.with(itemImage) .load(showList[0].base_image) .into(itemImage) @@ -237,22 +280,23 @@ class RoomPrivateFragment(var mRoomInfoResp: RoomInfoResp?) : val showList = if (giftList.size > 5) { list.shuffled().take(6) - }else{ - list.shuffled().take(giftList.size-1) + } else { + list.shuffled().take(giftList.size - 1) } for (i in showList.indices) { val itemImage = giftViewList[i] - val price = if (showList.size > i){ + val price = if (showList.size > i) { showList[i].gift_price.toInt() - }else{ + } else { showList[showList.size - 1].gift_price.toInt() } giftTViewList[i].text = price.toString() + giftTViewList[i].tag = showList[i].gift_name - itemImage.tag = if (showList.size > i){ + itemImage.tag = if (showList.size > i) { showList[i].gift_id - }else{ + } else { showList[showList.size - 1].gift_id } // 根据价格设置不同的宽高 @@ -294,7 +338,7 @@ class RoomPrivateFragment(var mRoomInfoResp: RoomInfoResp?) : // "lxj", // ("退出房间时间:" + TimeUtils.date2String(Date())).toString() + ":退出的roomId" + mRoomId, "需要加入的房间:"+AgoraManager.getInstance().lastRoomId // ) - MessageExListenerSingleton.quitGroup(mRoomId) +// MessageExListenerSingleton.quitGroup(mRoomId) //// (activity as RoomActivity).quit() //// CommonAppContext.getInstance().isPlaying = false //// CommonAppContext.getInstance().isShow = false diff --git a/MainModule/src/main/java/com/xscm/modulemain/dialog/barRoom/PrivateGiftDialog.kt b/MainModule/src/main/java/com/xscm/modulemain/dialog/barRoom/PrivateGiftDialog.kt new file mode 100644 index 00000000..6abe19ac --- /dev/null +++ b/MainModule/src/main/java/com/xscm/modulemain/dialog/barRoom/PrivateGiftDialog.kt @@ -0,0 +1,96 @@ +package com.xscm.modulemain.dialog.barRoom + +import android.content.Context +import android.view.Gravity +import android.view.ViewGroup +import com.blankj.utilcode.util.ScreenUtils +import com.xscm.modulemain.R +import com.xscm.modulemain.databinding.DialogFlirtatiousBinding +import com.xscm.modulemain.databinding.DialogPrivateBinding +import com.xscm.moduleutil.bean.WalletBean +import com.xscm.moduleutil.color.ThemeableDrawableUtils +import com.xscm.moduleutil.http.BaseObserver +import com.xscm.moduleutil.http.RetrofitClient +import com.xscm.moduleutil.utils.ColorManager +import com.xscm.moduleutil.utils.SpUtil +import com.xscm.moduleutil.widget.dialog.BaseDialog +import io.reactivex.disposables.Disposable + +/** + * 项目名称:羽声语音 + * 时间:2026/1/13 23:24 + * 用途:酒吧房交友小屋送礼添加弹框 + */ +class PrivateGiftDialog (context: Context) : + BaseDialog(context, com.xscm.moduleutil.R.style.BaseDialogStyleH) { + + // 定义回调接口 + private var onConfirmCallback: ((Boolean) -> Unit)? = null + private var isSelected: Boolean = false + // 设置回调接口的方法 + fun setOnConfirmListener(callback: (Boolean) -> Unit): PrivateGiftDialog { + onConfirmCallback = callback + return this + } + + override fun getLayoutId(): Int { + return R.layout.dialog_private + } + + override fun initView() { + setupWindow() + ThemeableDrawableUtils.setThemeableRoundedBackground( + mBinding.tvConfirm, + ColorManager.getInstance().primaryColorInt, + 53 + ) + mBinding.tvConfirm.setTextColor(ColorManager.getInstance().buttonColorInt) + // 设置点击事件 + mBinding.ivClose.setOnClickListener { + dismiss() + } + mBinding.tvConfirm.setOnClickListener { + onConfirmCallback?.invoke(isSelected) + dismiss() + } + mBinding.tvCancel.setOnClickListener { + dismiss() + } + mBinding.vCheckbox.setOnClickListener { + it.isSelected = !it.isSelected + isSelected = it.isSelected + + } + } + + fun show(giftName: String, sexy_coin: Int) { + super.show() + mBinding.tvTitle.text = "确认送出 ${giftName} 礼物吗?共计需要 ${sexy_coin}个 金币。" + } + + override fun initData() { + // 初始化数据,如果需要的话 + RetrofitClient.getInstance().wallet(object : BaseObserver() { + override fun onSubscribe(d: Disposable) { + } + + override fun onNext(t: WalletBean) { + } + }) + } + + + private fun setupWindow() { + val window = window ?: return + window.setGravity(Gravity.CENTER) + window.setLayout( + (ScreenUtils.getScreenWidth() * 315f / 375).toInt(), + ViewGroup.LayoutParams.WRAP_CONTENT + ) + window.setBackgroundDrawableResource(android.R.color.transparent) + + val params = window.attributes + params.windowAnimations = com.xscm.moduleutil.R.style.BaseDialogStyleH + window.attributes = params + } +} \ No newline at end of file diff --git a/MainModule/src/main/res/layout/dialog_private.xml b/MainModule/src/main/res/layout/dialog_private.xml new file mode 100644 index 00000000..ec3d7095 --- /dev/null +++ b/MainModule/src/main/res/layout/dialog_private.xml @@ -0,0 +1,119 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/gradle.properties b/gradle.properties index 92e2baac..831dcdc6 100644 --- a/gradle.properties +++ b/gradle.properties @@ -28,8 +28,8 @@ isBuildModule=false #org.gradle.deamon=false android.injected.testOnly=false -APP_VERSION_NAME=1.0.9.7 -APP_VERSION_CODE=87 +APP_VERSION_NAME=1.0.9.8 +APP_VERSION_CODE=88 org.gradle.jvm.toolchain.useLegacyAdapters=false #org.gradle.java.home=C\:\\Users\\qx\\.jdks\\ms-17.0.15