1:添加酒吧房各个弹框,只有界面

This commit is contained in:
2026-01-05 16:17:04 +08:00
parent 9ef4f27ed9
commit 44ebb14fb3
39 changed files with 1970 additions and 4 deletions

View File

@@ -5,6 +5,7 @@ import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.ActivityInfo;
import android.content.res.Resources;
import android.graphics.drawable.Drawable;
import android.net.Uri;
@@ -84,6 +85,7 @@ public abstract class BaseAppCompatActivity<VDB extends ViewDataBinding> extends
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
getWindow().getDecorView().setBackgroundResource(R.mipmap.log_bj);
setContentView(getLayoutId());
doDone();

View File

@@ -26,6 +26,8 @@ public class RoomSettingBean implements MultiItemEntity {
public static final int QXRoomSettingTypeRoomTypeLianG = 31;
//签约
public static final int QXRoomSettingTypeRoomTypeSIGNCONTRACT = 32;
//酒吧房
public static final int QXRoomSettingTypeRoomTypePUBROOM = 36;
/// 常用工具
/// 房间补贴

View File

@@ -31,7 +31,7 @@ public enum QXRoomSeatViewType {
/**
* 酒吧
*/
PUB(7,"酒吧"),
PUB(11,"酒吧"),
/**
* 小黑屋麦位

View File

@@ -15,7 +15,7 @@ enum class RoomType(
DATING("交友", 1,3, 4, 8), // 1、3、4、8 均对应交友
BLACK_ROOM("小黑屋", 6),
JUKEBOX("点唱", 9),
PUB_ROOM("酒吧", 7),
PUB_ROOM("酒吧", 11),
MUTUAL_ENTERTAINMENT("互娱", 7),
SIGN_CONTRACT("签约", 10);

View File

@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:angle="360"
android:endColor="#ff093a1f"
android:startColor="#ff1e4853"
android:type="linear"
android:useLevel="true" />
<corners
android:bottomLeftRadius="0dp"
android:bottomRightRadius="0dp"
android:topLeftRadius="14dp"
android:topRightRadius="14dp" />
</shape>

Binary file not shown.

After

Width:  |  Height:  |  Size: 108 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 702 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 618 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 182 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 590 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 570 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 391 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@@ -8,6 +8,7 @@ import com.xscm.modulemain.activity.room.activity.RoomActivity
import com.xscm.modulemain.activity.room.presenter.PubPresenter
import com.xscm.modulemain.databinding.FragmentPubRoomBinding
import com.xscm.modulemain.dialog.RoomUserInfoFragment
import com.xscm.modulemain.dialog.barRoom.RoomDurationDialog
import com.xscm.modulemain.widget.RoomPubWheatView
import com.xscm.moduleutil.base.BaseMvpFragment
import com.xscm.moduleutil.bean.RoomMessageEvent
@@ -127,6 +128,10 @@ class RoomPubFragment(var mRoomInfoResp: RoomInfoResp?) :
}
}
}
mBinding.ivSetTime.setOnClickListener {
RoomDurationDialog(ActivityUtils.getTopActivity(),mRoomId).show()
}
}
fun roomInfoUpdate(roomInfoResp: RoomInfoResp) {

View File

@@ -0,0 +1,101 @@
package com.xscm.modulemain.adapter
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ImageView
import android.widget.TextView
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.recyclerview.widget.RecyclerView
import com.xscm.modulemain.R
import com.xscm.moduleutil.bean.RoonGiftModel
import com.xscm.moduleutil.color.ThemeableDrawableUtils
import com.xscm.moduleutil.utils.ColorManager
import com.xscm.moduleutil.utils.ImageUtils
/**
* 项目名称:羽声语音
* 时间2026/1/5 10:57
* 用途:
*/
class RoomGiftGivingAdapter(private val dataList: List<RoonGiftModel>,
private val onItemSelectedListener: (RoonGiftModel, Int) -> Unit
) : RecyclerView.Adapter<RoomGiftGivingAdapter.ViewHolder>() {
private var selectedPosition = -1 // 默认没有选中项
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val view = LayoutInflater.from(parent.context)
.inflate(R.layout.item_gift_giving, parent, false)
return ViewHolder(view)
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
val item = dataList[position]
holder.bind(item, position)
}
override fun getItemCount(): Int = dataList.size
inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
private val iv_gift_pic: ImageView = itemView.findViewById(R.id.iv_gift_pic)
private val tv_gift_name: TextView = itemView.findViewById(R.id.tv_gift_name)
private val tv_gift_price: TextView = itemView.findViewById(R.id.tv_gift_price)
private val tv_gift_desc: TextView = itemView.findViewById(R.id.tv_gift_desc)
private val tv_wheat_qd: TextView = itemView.findViewById(R.id.tv_wheat_qd)
fun bind(item: RoonGiftModel, position: Int) {
tv_gift_name.text = item.gift_name
tv_gift_price.text = item.gift_price
// viewHolder.item_layout.setTag(R.id.id_gift_tag, giftModel);
//加载礼物图片
ImageUtils.loadImageView(item.base_image, iv_gift_pic)
ThemeableDrawableUtils.setThemeableRoundedBackground(
tv_wheat_qd,
ColorManager.getInstance().primaryColorInt,
53
)
tv_wheat_qd.setTextColor(ColorManager.getInstance().buttonColorInt)
tv_wheat_qd.setOnClickListener {
// 回调选中的值和位置
onItemSelectedListener(item, position)
}
}
}
/**
* 设置选中的位置
*/
fun setSelectedPosition(position: Int) {
if (position in 0 until itemCount && position != selectedPosition) {
val previousPosition = selectedPosition
selectedPosition = position
if (previousPosition != -1) {
notifyItemChanged(previousPosition)
}
notifyItemChanged(position)
}
}
/**
* 获取当前选中的位置
*/
fun getSelectedPosition(): Int = selectedPosition
/**
* 获取当前选中的值
*/
fun getSelectedValue(): RoonGiftModel? {
return if (selectedPosition in 0 until itemCount) {
dataList[selectedPosition]
} else {
null
}
}
}

View File

@@ -110,6 +110,8 @@ public class RoomSettingAdapter extends BaseQuickAdapter<RoomSettingBean, BaseVi
return com.xscm.moduleutil.R.mipmap.icon_liang;
case RoomSettingBean.QXRoomSettingTypeRoomTypeSIGNCONTRACT:
return com.xscm.moduleutil.R.mipmap.icon_sign_contract;
case RoomSettingBean.QXRoomSettingTypeRoomTypePUBROOM:
return com.xscm.moduleutil.R.mipmap.icon_liang;
// 常用工具
case RoomSettingBean.QXRoomSettingTypeRoomSubsidy:
return com.xscm.moduleutil.R.mipmap.ic_subsidy;

View File

@@ -0,0 +1,124 @@
package com.xscm.modulemain.adapter
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ImageView
import android.widget.TextView
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.recyclerview.widget.RecyclerView
import com.xscm.modulemain.R
import com.xscm.moduleutil.bean.RoonGiftModel
import com.xscm.moduleutil.utils.ImageUtils
/**
* 项目名称:羽声语音
* 时间2026/1/5 9:36
* 用途:
*/
class RoomWishGiftAdapter(private val dataList: List<RoonGiftModel>,
private val onItemSelectedListener: (RoonGiftModel, Int) -> Unit
) : RecyclerView.Adapter<RoomWishGiftAdapter.ViewHolder>() {
private var selectedPosition = -1 // 默认没有选中项
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val view = LayoutInflater.from(parent.context)
.inflate(R.layout.item_wish_gift, parent, false)
return ViewHolder(view)
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
val item = dataList[position]
holder.bind(item, position)
}
override fun getItemCount(): Int = dataList.size
inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
private val iv_gift_pic: ImageView = itemView.findViewById(R.id.iv_gift_pic)
private val tv_gift_name: TextView = itemView.findViewById(R.id.tv_gift_name)
private val tv_gift_price: TextView = itemView.findViewById(R.id.tv_gift_price)
private val cl_iv_down_on: ConstraintLayout = itemView.findViewById(R.id.cl_iv_down_on)
private val iv_down_on: ImageView = itemView.findViewById(R.id.iv_down_on)
fun bind(item: RoonGiftModel, position: Int) {
tv_gift_name.text = item.gift_name
tv_gift_price.text = item.gift_price
// viewHolder.item_layout.setTag(R.id.id_gift_tag, giftModel);
//加载礼物图片
ImageUtils.loadImageView(item.getBase_image(), iv_gift_pic)
// //设置选中后的样式
// if (item.isSelected()) { //被选中
// cl_iv_down_on.setBackgroundResource(com.xscm.moduleutil.R.mipmap.room_gift_bjx)
// iv_down_on.setVisibility(View.GONE)
// } else {
// iv_down_on.setVisibility(View.GONE)
// cl_iv_down_on.setBackgroundResource(0)
// }
// 设置选中状态
if (position == selectedPosition) {
cl_iv_down_on.setBackgroundResource(com.xscm.moduleutil.R.mipmap.room_gift_bjx)
} else {
cl_iv_down_on.setBackgroundResource(0)
}
// 设置点击事件
itemView.setOnClickListener {
// 如果点击的是已选中的项,不做处理
if (position == selectedPosition) return@setOnClickListener
// 更新选中位置
val previousPosition = selectedPosition
selectedPosition = position
// 通知之前选中的项更新背景
if (previousPosition != -1) {
notifyItemChanged(previousPosition)
}
// 通知当前选中的项更新背景
notifyItemChanged(position)
// 回调选中的值和位置
onItemSelectedListener(item, position)
}
}
}
/**
* 设置选中的位置
*/
fun setSelectedPosition(position: Int) {
if (position in 0 until itemCount && position != selectedPosition) {
val previousPosition = selectedPosition
selectedPosition = position
if (previousPosition != -1) {
notifyItemChanged(previousPosition)
}
notifyItemChanged(position)
}
}
/**
* 获取当前选中的位置
*/
fun getSelectedPosition(): Int = selectedPosition
/**
* 获取当前选中的值
*/
fun getSelectedValue(): RoonGiftModel? {
return if (selectedPosition in 0 until itemCount) {
dataList[selectedPosition]
} else {
null
}
}
}

View File

@@ -0,0 +1,98 @@
package com.xscm.modulemain.adapter
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ImageView
import android.widget.TextView
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.recyclerview.widget.RecyclerView
import com.xscm.modulemain.R
import com.xscm.moduleutil.bean.RoonGiftModel
import com.xscm.moduleutil.color.ThemeableDrawableUtils
import com.xscm.moduleutil.utils.ColorManager
import com.xscm.moduleutil.utils.ImageUtils
/**
* 项目名称:羽声语音
* 时间2026/1/5 11:23
* 用途:
*/
class SetupCustomGiftAdapter(private val dataList: List<RoonGiftModel>,
private val onItemSelectedListener: (RoonGiftModel, Int) -> Unit
) : RecyclerView.Adapter<SetupCustomGiftAdapter.ViewHolder>() {
private var selectedPosition = -1 // 默认没有选中项
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val view = LayoutInflater.from(parent.context)
.inflate(R.layout.item_setup_custom_gift, parent, false)
return ViewHolder(view)
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
val item = dataList[position]
holder.bind(item, position)
}
override fun getItemCount(): Int = dataList.size
inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
private val iv_gift_pic: ImageView = itemView.findViewById(R.id.iv_gift_pic)
private val tv_gift_name: TextView = itemView.findViewById(R.id.tv_gift_name)
private val tv_gift_price: TextView = itemView.findViewById(R.id.tv_gift_price)
private val tv_gift_desc: TextView = itemView.findViewById(R.id.tv_gift_desc)
private val tv_wheat_sz: TextView = itemView.findViewById(R.id.tv_wheat_sz)
fun bind(item: RoonGiftModel, position: Int) {
tv_gift_name.text = item.gift_name
tv_gift_price.text = item.gift_price
//加载礼物图片
ImageUtils.loadImageView(item.getBase_image(), iv_gift_pic)
ThemeableDrawableUtils.setThemeableRoundedBackground(
tv_wheat_sz,
ColorManager.getInstance().primaryColorInt,
53
)
tv_wheat_sz.setTextColor(ColorManager.getInstance().buttonColorInt)
tv_wheat_sz.setOnClickListener {
onItemSelectedListener(item, position)
}
}
}
/**
* 设置选中的位置
*/
fun setSelectedPosition(position: Int) {
if (position in 0 until itemCount && position != selectedPosition) {
val previousPosition = selectedPosition
selectedPosition = position
if (previousPosition != -1) {
notifyItemChanged(previousPosition)
}
notifyItemChanged(position)
}
}
/**
* 获取当前选中的位置
*/
fun getSelectedPosition(): Int = selectedPosition
/**
* 获取当前选中的值
*/
fun getSelectedValue(): RoonGiftModel? {
return if (selectedPosition in 0 until itemCount) {
dataList[selectedPosition]
} else {
null
}
}
}

View File

@@ -160,6 +160,8 @@ public class RoomSettingFragment extends BaseMvpDialogFragment<RoomSettingPresen
roomTypeChildren.add(new RoomSettingBean("互娱", "ic_jiaoy", null, null, RoomSettingBean.QXRoomSettingTypeRoomTypeHUYU, read, isSelected, false, false));
// roomTypeChildren.add(new RoomSettingBean("练歌房", "ic_liang", null, null, RoomSettingBean.QXRoomSettingTypeRoomTypeLianG, read, isSelected, false, false));
roomTypeChildren.add(new RoomSettingBean("签约", "sing_contract", null, null, RoomSettingBean.QXRoomSettingTypeRoomTypeSIGNCONTRACT, read, isSelected, false, false));
roomTypeChildren.add(new RoomSettingBean("酒吧房", "rub_room", null, null, RoomSettingBean.QXRoomSettingTypeRoomTypePUBROOM, read, isSelected, false, false));
roomTypeParent.setChildren(roomTypeChildren);
parentList.add(roomTypeParent);
@@ -395,7 +397,10 @@ public class RoomSettingFragment extends BaseMvpDialogFragment<RoomSettingPresen
// }
else if (bean.getType() == RoomSettingBean.QXRoomSettingTypeRoomTypeSIGNCONTRACT) {
queren("10");
} else if (bean.getType() == RoomSettingBean.QXRoomSettingTypeRoomSetting) {
}else if (bean.getType() == RoomSettingBean.QXRoomSettingTypeRoomTypePUBROOM) {
queren("11");
}
else if (bean.getType() == RoomSettingBean.QXRoomSettingTypeRoomSetting) {
if (roomInfoResp != null) {
ARouter.getInstance().build(ARouteConstants.CREATED_ROOM).withSerializable("roomInfoResp", roomInfoResp).navigation();
} else {
@@ -661,7 +666,9 @@ public class RoomSettingFragment extends BaseMvpDialogFragment<RoomSettingPresen
(type.equals("7") ? "互娱" :
(type.equals("9") ? "点唱" :
(type.equals("-1") ? "练歌房" :
(type.equals("10") ? "签约房" : "")
(type.equals("10") ? "签约房" :
(type.equals("11") ? "酒吧房" : "")
)
)
)
)
@@ -718,6 +725,7 @@ public class RoomSettingFragment extends BaseMvpDialogFragment<RoomSettingPresen
type == RoomSettingBean.QXRoomSettingTypeRoomTypeJiaoy || type == RoomSettingBean.QXRoomSettingTypeRoomSetting ||
type == RoomSettingBean.QXRoomSettingTypeRoomSubsidy || type == RoomSettingBean.QXRoomSettingTypeRoomMyDress ||
type == RoomSettingBean.QXRoomSettingTypeRoomTypeLianG || type == RoomSettingBean.QXRoomSettingTypeRoomTypeSIGNCONTRACT ||
type == RoomSettingBean.QXRoomSettingTypeRoomTypePUBROOM ||
type == RoomSettingBean.QXRoomSettingTypeRoomClearMessage || type == QXRoomSettingTypeRoomOrderMic || type == RoomSettingBean.QXRoomSettingTypeRoomFloatingScreen
|| type == RoomSettingBean.QXRoomSettingTypeRoomBgMusic || type == RoomSettingBean.QXRoomSettingTypeRoomBgImage || type == -1) {

View File

@@ -0,0 +1,87 @@
package com.xscm.modulemain.dialog.barRoom
import android.content.Context
import android.content.Intent
import android.view.Gravity
import android.view.ViewGroup
import com.blankj.utilcode.util.ActivityUtils.startActivity
import com.blankj.utilcode.util.ScreenUtils
import com.xscm.modulemain.R
import com.xscm.modulemain.activity.user.activity.RechargeActivity
import com.xscm.modulemain.databinding.DialogAboutRoomBinding
import com.xscm.modulemain.databinding.DialogFlirtatiousBinding
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.widget.dialog.BaseDialog
import io.reactivex.disposables.Disposable
/**
* 项目名称:羽声语音
* 时间2026/1/5 15:36
* 用途:撩他提示框
*/
class FlirtatiousDialog(context: Context) :
BaseDialog<DialogFlirtatiousBinding>(context, com.xscm.moduleutil.R.style.BaseDialogStyleH) {
// 定义回调接口
private var onConfirmCallback: ((String) -> Unit)? = null
// 设置回调接口的方法
fun setOnConfirmListener(callback: (String) -> Unit): FlirtatiousDialog {
onConfirmCallback = callback
return this
}
override fun getLayoutId(): Int {
return R.layout.dialog_flirtatious
}
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("")
dismiss()
}
}
override fun initData() {
// 初始化数据,如果需要的话
RetrofitClient.getInstance().wallet(object : BaseObserver<WalletBean>(){
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
}
}

View File

@@ -0,0 +1,79 @@
package com.xscm.modulemain.dialog.barRoom
import android.content.Context
import android.view.Gravity
import android.view.ViewGroup
import androidx.recyclerview.widget.GridLayoutManager
import com.blankj.utilcode.util.LogUtils
import com.blankj.utilcode.util.ScreenUtils
import com.xscm.modulemain.R
import com.xscm.modulemain.adapter.RoomGiftGivingAdapter
import com.xscm.modulemain.databinding.DialogGiftGivingBinding
import com.xscm.moduleutil.bean.RoonGiftModel
import com.xscm.moduleutil.http.BaseObserver
import com.xscm.moduleutil.http.RetrofitClient
import com.xscm.moduleutil.widget.dialog.BaseDialog
import io.reactivex.disposables.Disposable
/**
* 项目名称:羽声语音
* 时间2026/1/5 10:41
* 用途:酒吧房赠送自定义礼物
*/
class GiftGivingDialog (context: Context, val roomId: String) :
BaseDialog<DialogGiftGivingBinding>(context, com.xscm.moduleutil.R.style.BaseDialogStyleH) {
var adapter: RoomGiftGivingAdapter? = null
var time: MutableList<String> = mutableListOf()
override fun getLayoutId(): Int {
return R.layout.dialog_gift_giving
}
override fun initView() {
setupWindow()
val layoutManager = GridLayoutManager(context, 4)
mBinding.recycleView.layoutManager = layoutManager
mBinding.recycleView.adapter = adapter
}
override fun initData() {
// TODO: 这里调用的事设置插队礼物接口
RetrofitClient.getInstance().getGiftList(1,roomId,object : BaseObserver<MutableList<RoonGiftModel>>() {
override fun onSubscribe(d: Disposable) {
}
override fun onNext(t: MutableList<RoonGiftModel>) {
if (t.isNotEmpty()) {
adapter = RoomGiftGivingAdapter(t) { selectedValue, position ->
// 处理选中事件
LogUtils.e("选中了: $selectedValue, 位置: $position")
}
// 设置GridLayoutManager每行显示4个item
val layoutManager =
GridLayoutManager(context, 4)
mBinding.recycleView.layoutManager = layoutManager
mBinding.recycleView.adapter = adapter
}
}
})
}
private fun setupWindow() {
val window = window ?: return
window.setGravity(Gravity.BOTTOM)
window.setLayout(
ViewGroup.LayoutParams.MATCH_PARENT,
(ScreenUtils.getAppScreenHeight() * 348f / 812).toInt()
)
window.setBackgroundDrawableResource(android.R.color.transparent)
val params = window.attributes
params.windowAnimations = com.xscm.moduleutil.R.style.BaseDialogStyleH
window.attributes = params
}
}

View File

@@ -0,0 +1,75 @@
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.DialogPerformInputBinding
import com.xscm.moduleutil.color.ThemeableDrawableUtils
import com.xscm.moduleutil.utils.ColorManager
import com.xscm.moduleutil.widget.dialog.BaseDialog
/**
* 项目名称:羽声语音
* 时间2026/1/5 11:33
* 用途:表演内容输入对话框
*/
class PerformInputDialog(context: Context) :
BaseDialog<DialogPerformInputBinding>(context, com.xscm.moduleutil.R.style.BaseDialogStyleH) {
// 定义回调接口
private var onConfirmCallback: ((String) -> Unit)? = null
// 设置回调接口的方法
fun setOnConfirmListener(callback: (String) -> Unit): PerformInputDialog {
onConfirmCallback = callback
return this
}
override fun getLayoutId(): Int {
return R.layout.dialog_perform_input
}
override fun initView() {
setupWindow()
ThemeableDrawableUtils.setThemeableRoundedBackground(
mBinding.tvConfirm,
ColorManager.getInstance().primaryColorInt,
53
)
mBinding.tvConfirm.setTextColor(ColorManager.getInstance().buttonColorInt)
// 设置点击事件
mBinding.ivClose.setOnClickListener {
dismiss()
}
mBinding.tvCancel.setOnClickListener {
dismiss()
}
mBinding.tvConfirm.setOnClickListener {
val inputText = mBinding.etInput.text.toString().trim()
onConfirmCallback?.invoke(inputText)
dismiss()
}
}
override fun initData() {
// 初始化数据,如果需要的话
}
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
}
}

View File

@@ -0,0 +1,91 @@
package com.xscm.modulemain.dialog.barRoom
import android.content.Context
import android.content.Intent
import android.view.Gravity
import android.view.ViewGroup
import com.blankj.utilcode.util.ActivityUtils.startActivity
import com.blankj.utilcode.util.ScreenUtils
import com.xscm.modulemain.R
import com.xscm.modulemain.activity.user.activity.RechargeActivity
import com.xscm.modulemain.databinding.DialogAboutRoomBinding
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.widget.dialog.BaseDialog
import io.reactivex.disposables.Disposable
/**
* 项目名称:羽声语音
* 时间2026/1/5 14:18
* 用途:酒吧房约她弹框
*/
class RoomAboutDialog (context: Context) :
BaseDialog<DialogAboutRoomBinding>(context, com.xscm.moduleutil.R.style.BaseDialogStyleH) {
// 定义回调接口
private var onConfirmCallback: ((String) -> Unit)? = null
// 设置回调接口的方法
fun setOnConfirmListener(callback: (String) -> Unit): RoomAboutDialog {
onConfirmCallback = callback
return this
}
override fun getLayoutId(): Int {
return R.layout.dialog_about_room
}
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("")
dismiss()
}
mBinding.tvRecharge.setOnClickListener {
//充值
startActivity(Intent(context, RechargeActivity::class.java))
dismiss()
}
}
override fun initData() {
// 初始化数据,如果需要的话
RetrofitClient.getInstance().wallet(object : BaseObserver<WalletBean>(){
override fun onSubscribe(d: Disposable) {
}
override fun onNext(t: WalletBean) {
mBinding.tvBalance.text = t.coin ?: "0"
}
})
}
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
}
}

View File

@@ -0,0 +1,83 @@
package com.xscm.modulemain.dialog.barRoom
import android.content.Context
import android.view.Gravity
import android.view.ViewGroup
import androidx.recyclerview.widget.GridLayoutManager
import com.blankj.utilcode.util.LogUtils
import com.blankj.utilcode.util.ScreenUtils
import com.hjq.toast.ToastUtils
import com.xscm.modulemain.R
import com.xscm.modulemain.adapter.RoomTalentAdapter
import com.xscm.modulemain.databinding.DialogRoomDurationBinding
import com.xscm.moduleutil.widget.dialog.BaseDialog
/**
* 项目名称:羽声语音
* 时间2026/1/4 18:57
* 用途:酒吧房设置时长
*/
class RoomDurationDialog (context: Context, val roomId: String) :
BaseDialog<DialogRoomDurationBinding>(context, com.xscm.moduleutil.R.style.BaseDialogStyleH) {
var adapter: RoomTalentAdapter? = null
var time: MutableList<String> = mutableListOf()
override fun getLayoutId(): Int {
return R.layout.dialog_room_duration
}
override fun initView() {
setupWindow()
mBinding.tvQx.setOnClickListener {
dismiss()
}
mBinding.tvQd.setOnClickListener {
if (adapter?.getSelectedValue()?.isEmpty() == true || adapter?.getSelectedValue()==null) {
ToastUtils.show("请选择时间")
} else {//确定
// var messageEvent =
// RoomInputEvent(SpUtil.getUserInfo().nickname + "选择了" + adapter?.getSelectedValue() + "时间")
// (ActivityUtils.getTopActivity() as? RoomActivity)?.let { roomActivity ->
// roomActivity.dialogMessage(messageEvent)
// }
dismiss()
}
}
val layoutManager = GridLayoutManager(context, 3)
mBinding.recycleView.layoutManager = layoutManager
mBinding.recycleView.adapter = adapter
}
override fun initData() {
time= mutableListOf()
time.clear()
time.add("5分钟")
time.add("10分钟")
time.add("15分钟")
time.add("20分钟")
time.add("25分钟")
time.add("30分钟")
adapter = RoomTalentAdapter(time) { selectedValue, position ->
// 处理选中事件
LogUtils.e("选中了: $selectedValue, 位置: $position")
}
}
private fun setupWindow() {
val window = window ?: return
window.setGravity(Gravity.BOTTOM)
window.setLayout(
ViewGroup.LayoutParams.MATCH_PARENT,
(ScreenUtils.getAppScreenHeight() * 348f / 812).toInt()
)
window.setBackgroundDrawableResource(android.R.color.transparent)
val params = window.attributes
params.windowAnimations = com.xscm.moduleutil.R.style.BaseDialogStyleH
window.attributes = params
}
}

View File

@@ -0,0 +1,97 @@
package com.xscm.modulemain.dialog.barRoom
import android.content.Context
import android.view.Gravity
import android.view.ViewGroup
import androidx.recyclerview.widget.GridLayoutManager
import com.blankj.utilcode.util.LogUtils
import com.blankj.utilcode.util.ScreenUtils
import com.hjq.toast.ToastUtils
import com.xscm.modulemain.R
import com.xscm.modulemain.adapter.RoomWishGiftAdapter
import com.xscm.modulemain.adapter.SetupCustomGiftAdapter
import com.xscm.modulemain.databinding.DialogSetupCustomGiftBinding
import com.xscm.modulemain.databinding.DialogWishGiftBinding
import com.xscm.moduleutil.bean.RoonGiftModel
import com.xscm.moduleutil.http.BaseObserver
import com.xscm.moduleutil.http.RetrofitClient
import com.xscm.moduleutil.widget.dialog.BaseDialog
import io.reactivex.disposables.Disposable
/**
* 项目名称:羽声语音
* 时间2026/1/5 11:13
* 用途:酒吧房设置自定义礼物
*/
class SetupCustomGiftDialog(context: Context, val roomId: String) :
BaseDialog<DialogSetupCustomGiftBinding>(
context,
com.xscm.moduleutil.R.style.BaseDialogStyleH
) {
var adapter: SetupCustomGiftAdapter? = null
var time: MutableList<String> = mutableListOf()
var performInputDialog: PerformInputDialog? = null
override fun getLayoutId(): Int {
return R.layout.dialog_setup_custom_gift
}
override fun initView() {
setupWindow()
val layoutManager = GridLayoutManager(context, 4)
mBinding.recycleView.layoutManager = layoutManager
mBinding.recycleView.adapter = adapter
}
override fun initData() {
// TODO: 这里调用的事设置插队礼物接口
RetrofitClient.getInstance()
.getGiftList(1, roomId, object : BaseObserver<MutableList<RoonGiftModel>>() {
override fun onSubscribe(d: Disposable) {
}
override fun onNext(t: MutableList<RoonGiftModel>) {
if (t.isNotEmpty()) {
adapter = SetupCustomGiftAdapter(t) { selectedValue, position ->
// 处理选中事件
LogUtils.e("选中了: $selectedValue, 位置: $position")
if (performInputDialog == null) {
performInputDialog = PerformInputDialog(context)
}
performInputDialog?.show()
performInputDialog?.setOnConfirmListener { content ->
// TODO: 这里表演内容的回调
ToastUtils.show(content)
}
}
// 设置GridLayoutManager每行显示4个item
val layoutManager =
GridLayoutManager(context, 4)
mBinding.recycleView.layoutManager = layoutManager
mBinding.recycleView.adapter = adapter
}
}
})
}
private fun setupWindow() {
val window = window ?: return
window.setGravity(Gravity.BOTTOM)
window.setLayout(
ViewGroup.LayoutParams.MATCH_PARENT,
(ScreenUtils.getAppScreenHeight() * 348f / 812).toInt()
)
window.setBackgroundDrawableResource(android.R.color.transparent)
val params = window.attributes
params.windowAnimations = com.xscm.moduleutil.R.style.BaseDialogStyleH
window.attributes = params
}
}

View File

@@ -0,0 +1,96 @@
package com.xscm.modulemain.dialog.barRoom
import android.content.Context
import android.view.Gravity
import android.view.ViewGroup
import androidx.recyclerview.widget.GridLayoutManager
import com.blankj.utilcode.util.LogUtils
import com.blankj.utilcode.util.ScreenUtils
import com.hjq.toast.ToastUtils
import com.xscm.modulemain.R
import com.xscm.modulemain.adapter.RoomWishGiftAdapter
import com.xscm.modulemain.databinding.DialogWishGiftBinding
import com.xscm.moduleutil.bean.RoonGiftModel
import com.xscm.moduleutil.http.BaseObserver
import com.xscm.moduleutil.http.RetrofitClient
import com.xscm.moduleutil.widget.dialog.BaseDialog
import io.reactivex.disposables.Disposable
/**
* 项目名称:羽声语音
* 时间2026/1/5 9:14
* 用途:酒吧房选择心愿礼物
*/
class WishGiftDialog(context: Context, val roomId: String) :
BaseDialog<DialogWishGiftBinding>(context, com.xscm.moduleutil.R.style.BaseDialogStyleH) {
var adapter: RoomWishGiftAdapter? = null
var time: MutableList<String> = mutableListOf()
override fun getLayoutId(): Int {
return R.layout.dialog_wish_gift
}
override fun initView() {
setupWindow()
mBinding.tvQx.setOnClickListener {
dismiss()
}
mBinding.tvQd.setOnClickListener {
if ( adapter?.getSelectedValue()==null) {
ToastUtils.show("请心愿礼物")
} else {//确定
// var messageEvent =
// RoomInputEvent(SpUtil.getUserInfo().nickname + "选择了" + adapter?.getSelectedValue() + "时间")
// (ActivityUtils.getTopActivity() as? RoomActivity)?.let { roomActivity ->
// roomActivity.dialogMessage(messageEvent)
// }
dismiss()
}
}
val layoutManager = GridLayoutManager(context, 4)
mBinding.recycleView.layoutManager = layoutManager
mBinding.recycleView.adapter = adapter
}
override fun initData() {
// TODO: 这里调用的事设置插队礼物接口
RetrofitClient.getInstance().getGiftList(1,roomId,object : BaseObserver<MutableList<RoonGiftModel>>() {
override fun onSubscribe(d: Disposable) {
}
override fun onNext(t: MutableList<RoonGiftModel>) {
if (t.isNotEmpty()) {
adapter = RoomWishGiftAdapter(t) { selectedValue, position ->
// 处理选中事件
LogUtils.e("选中了: $selectedValue, 位置: $position")
}
// 设置GridLayoutManager每行显示4个item
val layoutManager =
GridLayoutManager(context, 4)
mBinding.recycleView.layoutManager = layoutManager
mBinding.recycleView.adapter = adapter
}
}
})
}
private fun setupWindow() {
val window = window ?: return
window.setGravity(Gravity.BOTTOM)
window.setLayout(
ViewGroup.LayoutParams.MATCH_PARENT,
(ScreenUtils.getAppScreenHeight() * 348f / 812).toInt()
)
window.setBackgroundDrawableResource(android.R.color.transparent)
val params = window.attributes
params.windowAnimations = com.xscm.moduleutil.R.style.BaseDialogStyleH
window.attributes = params
}
}

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true"
android:drawable="@mipmap/icon_select" />
<!-- 默认状态(未选中) -->
<item android:drawable="@mipmap/icon_unselect" />
</selector>

View File

@@ -0,0 +1,180 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/bg_r16_fff"
android:backgroundTint="#9722D6"
android:orientation="vertical">
<!-- 标题栏 -->
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="@dimen/dp_50">
<TextView
android:id="@+id/tv_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_centerVertical="true"
android:layout_marginStart="@dimen/dp_16"
android:text="送给"
android:textColor="@color/colorWhite65"
android:textSize="@dimen/sp_12" />
<com.xscm.moduleutil.widget.CircularImage
android:id="@+id/iv_avatar"
android:layout_width="@dimen/dp_32"
android:layout_height="@dimen/dp_32"
android:layout_centerVertical="true"
android:layout_marginStart="@dimen/dp_4"
android:layout_toRightOf="@+id/tv_title"
tools:src="@mipmap/ic_launcher" />
<TextView
android:id="@+id/tv_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginStart="@dimen/dp_4"
android:layout_toRightOf="@+id/iv_avatar"
android:textColor="@color/white"
android:textSize="@dimen/sp_12"
android:textStyle="bold"
tools:text="送给用户昵称" />
<ImageView
android:id="@+id/iv_close"
android:layout_width="@dimen/dp_20"
android:layout_height="@dimen/dp_20"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
android:layout_marginEnd="@dimen/dp_15"
android:src="@mipmap/gb"
android:tint="@color/white" />
</RelativeLayout>
<!-- 内容区域 -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="@dimen/dp_16"
android:background="@mipmap/about_bj"
android:orientation="vertical"
android:padding="@dimen/dp_9">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center_vertical"
android:text="开启私密房间,一起甜蜜约会吧"
android:textColor="#FFD7FE"
android:textSize="@dimen/sp_14" />
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/cl_iv_down_on"
android:layout_width="@dimen/dp_72"
android:layout_height="wrap_content"
android:layout_gravity="center"
tools:ignore="MissingConstraints">
<TextView
android:id="@+id/iv_down_on"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_72"
android:background="@drawable/bg_r12_f9f9f9"
android:backgroundTint="@color/colorBlack65"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/iv_gift_pic"
android:layout_width="60dp"
android:layout_height="60dp"
app:layout_constraintBottom_toBottomOf="@+id/iv_down_on"
app:layout_constraintLeft_toLeftOf="@+id/iv_down_on"
app:layout_constraintRight_toRightOf="@+id/iv_down_on"
app:layout_constraintTop_toTopOf="@+id/iv_down_on"
tools:src="@mipmap/ic_launcher" />
</androidx.constraintlayout.widget.ConstraintLayout>
<TextView
android:id="@+id/tv_gift_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:singleLine="true"
android:text="甜蜜奶酪"
android:textColor="@color/colorWhite85"
android:textSize="@dimen/sp_12" />
<TextView
android:id="@+id/tv_gift_price"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:drawableLeft="@mipmap/jinb"
android:drawablePadding="@dimen/dp_3"
android:text="1"
android:textColor="@color/colorWhite85"
android:textSize="@dimen/sp_12" />
</LinearLayout>
<TextView
android:id="@+id/tv_confirm"
android:layout_width="wrap_content"
android:layout_height="@dimen/dp_32"
android:layout_gravity="center"
android:background="@drawable/bg_r53_0dffb9"
android:backgroundTint="#3ABC6D"
android:gravity="center"
android:paddingHorizontal="@dimen/dp_17"
android:paddingVertical="@dimen/dp_6"
android:text="赠送并开房"
android:textColor="@color/white"
android:textSize="@dimen/sp_14" />
<!-- 按钮区域 -->
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="@dimen/dp_16"
android:layout_marginVertical="@dimen/dp_8"
android:orientation="horizontal">
<TextView
android:id="@+id/tv_balance"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:drawableLeft="@mipmap/jinb"
android:layout_centerInParent="true"
android:layout_alignParentStart="true"
android:drawablePadding="@dimen/dp_3"
android:gravity="center"
tools:text="1"
android:textColor="@color/colorWhite85"
android:textSize="@dimen/sp_14" />
<TextView
android:id="@+id/tv_recharge"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_centerInParent="true"
android:layout_alignParentEnd="true"
android:gravity="center"
android:text="去充值>"
android:textColor="#F5F24F"
android:textSize="@dimen/sp_14" />
</RelativeLayout>
</LinearLayout>
</layout>

View File

@@ -0,0 +1,119 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/bg_r16_fff"
android:orientation="vertical">
<!-- 标题栏 -->
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="@dimen/dp_50">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="温馨提示"
android:textColor="@color/color_FF333333"
android:textSize="@dimen/sp_16"
android:textStyle="bold" />
<ImageView
android:id="@+id/iv_close"
android:layout_width="@dimen/dp_20"
android:layout_height="@dimen/dp_20"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
android:layout_marginEnd="@dimen/dp_15"
android:tint="@color/color_FF999999"
android:src="@mipmap/gb" />
</RelativeLayout>
<!-- 内容区域 -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_marginHorizontal="@dimen/dp_16"
>
<TextView
android:id="@+id/tv_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_6"
android:gravity="center_vertical"
android:paddingEnd="@dimen/dp_12"
android:hint="确定要撩一撩台上的 夏沫002 吗?共计需要 10个 金币。"
android:textColor="@color/color_FF333333"
android:textSize="@dimen/sp_14" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginVertical="@dimen/dp_20"
android:orientation="horizontal">
<View
android:id="@+id/v_checkbox"
android:layout_width="@dimen/dp_20"
android:layout_height="@dimen/dp_20"
android:background="@drawable/select_checkbox"
android:focusable="false"
android:clickable="true"/>
<TextView
android:id="@+id/tv_option"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginStart="@dimen/dp_5"
android:textSize="@dimen/sp_14"
android:text="确认后,不在提示"
android:textColor="@color/color_FF999999"
/>
</LinearLayout>
</LinearLayout>
<!-- 按钮区域 -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:paddingStart="@dimen/dp_20"
android:paddingEnd="@dimen/dp_20"
android:paddingBottom="@dimen/dp_20">
<TextView
android:id="@+id/tv_cancel"
android:layout_width="0dp"
android:layout_height="@dimen/dp_40"
android:layout_marginEnd="@dimen/dp_10"
android:layout_weight="1"
android:background="@drawable/bg_r53_f3f3f3"
android:gravity="center"
android:text="取消"
android:textColor="@color/color_FF999999"
android:textSize="@dimen/sp_14" />
<TextView
android:id="@+id/tv_confirm"
android:layout_width="0dp"
android:layout_height="@dimen/dp_40"
android:layout_marginStart="@dimen/dp_10"
android:layout_weight="1"
android:background="@drawable/bg_r53_0dffb9"
android:backgroundTint="#3ABC6D"
android:gravity="center"
android:text="确定"
android:textColor="@color/white"
android:textSize="@dimen/sp_14" />
</LinearLayout>
</LinearLayout>
</layout>

View File

@@ -0,0 +1,45 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/bg_r14_1e4853_093a1f"
android:paddingHorizontal="@dimen/dp_16">
<TextView
android:id="@+id/tv_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_13"
android:paddingVertical="@dimen/dp_5"
tools:text="送用户名称送礼"
android:textColor="@color/white"
android:textSize="@dimen/sp_16"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycle_view"
android:layout_width="match_parent"
android:layout_height="0dp"
android:clipToPadding="false"
android:paddingBottom="8dp"
app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"
app:spanCount="4"
app:layout_constraintBottom_toTopOf="@+id/ll_but"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tv_title"
tools:itemCount="8"
tools:listitem="@layout/item_gift_giving"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>

View File

@@ -0,0 +1,104 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/bg_r16_fff"
android:orientation="vertical">
<!-- 标题栏 -->
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="@dimen/dp_50">
<TextView
android:id="@+id/tv_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="表演内容"
android:textColor="@color/color_FF333333"
android:textSize="@dimen/sp_16"
android:textStyle="bold" />
<ImageView
android:id="@+id/iv_close"
android:layout_width="@dimen/dp_20"
android:layout_height="@dimen/dp_20"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
android:layout_marginEnd="@dimen/dp_15"
android:src="@mipmap/gb" />
</RelativeLayout>
<!-- 内容区域 -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="@dimen/dp_20">
<!-- 输入框 -->
<EditText
android:id="@+id/et_input"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_45"
android:background="@drawable/bg_r11_effef8"
android:hint="请输入表演内容(最多四个字)"
android:paddingStart="@dimen/dp_12"
android:paddingEnd="@dimen/dp_12"
android:textColor="@color/color_FF333333"
android:textColorHint="@color/color_FF999999"
android:textSize="@dimen/sp_14" />
<TextView
android:id="@+id/tv_clickable"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_6"
android:gravity="center_vertical"
android:paddingEnd="@dimen/dp_12"
android:hint="请输入表演内容(例:喊一声 啊)"
android:textColor="@color/black"
android:textSize="@dimen/sp_14" />
</LinearLayout>
<!-- 按钮区域 -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:paddingStart="@dimen/dp_20"
android:paddingEnd="@dimen/dp_20"
android:paddingBottom="@dimen/dp_20">
<TextView
android:id="@+id/tv_cancel"
android:layout_width="0dp"
android:layout_height="@dimen/dp_40"
android:layout_marginEnd="@dimen/dp_10"
android:layout_weight="1"
android:background="@drawable/bg_r53_f3f3f3"
android:gravity="center"
android:text="取消"
android:textColor="@color/color_FF999999"
android:textSize="@dimen/sp_14" />
<TextView
android:id="@+id/tv_confirm"
android:layout_width="0dp"
android:layout_height="@dimen/dp_40"
android:layout_marginStart="@dimen/dp_10"
android:layout_weight="1"
android:background="@drawable/bg_r53_0dffb9"
android:backgroundTint="#3ABC6D"
android:gravity="center"
android:text="确定"
android:textColor="@color/white"
android:textSize="@dimen/sp_14" />
</LinearLayout>
</LinearLayout>
</layout>

View File

@@ -0,0 +1,82 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/bg_r14_1e4853_093a1f"
android:paddingHorizontal="@dimen/dp_16">
<TextView
android:id="@+id/tv_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_13"
android:paddingVertical="@dimen/dp_5"
android:text="设置麦位时长"
android:textColor="@color/white"
android:textSize="@dimen/sp_16"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycle_view"
android:layout_width="match_parent"
android:layout_height="0dp"
android:clipToPadding="false"
android:paddingBottom="8dp"
app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"
app:spanCount="4"
app:layout_constraintBottom_toTopOf="@+id/ll_but"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tv_title"
tools:itemCount="8"
tools:listitem="@layout/item_room_talent"
/>
<LinearLayout
android:id="@+id/ll_but"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_42"
android:layout_marginBottom="@dimen/dp_14"
android:orientation="horizontal"
android:paddingHorizontal="@dimen/dp_18"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent">
<TextView
android:id="@+id/tv_qx"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@drawable/bg_r53_0dffb9"
android:backgroundTint="@color/color_FF333333"
android:gravity="center"
android:text="取消"
android:textColor="@color/white"
android:textSize="@dimen/sp_14" />
<TextView
android:id="@+id/tv_qd"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_marginStart="@dimen/sp_16"
android:layout_weight="2"
android:background="@drawable/bg_r53_0dffb9"
android:gravity="center"
android:text="确定"
android:textColor="@color/white"
android:textSize="@dimen/sp_14" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>

View File

@@ -0,0 +1,56 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/bg_r14_1e4853_093a1f"
android:paddingHorizontal="@dimen/dp_16">
<TextView
android:id="@+id/tv_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_13"
android:paddingVertical="@dimen/dp_5"
android:text="选择你的自定义礼物"
android:textColor="@color/white"
android:textSize="@dimen/sp_16"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tv_qx"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_marginTop="@dimen/dp_8"
android:text="设置每个礼物对应的表演内容,上麦位后其他人可见"
android:textColor="@color/color_FF999999"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tv_title"
android:textSize="@dimen/sp_12" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycle_view"
android:layout_width="match_parent"
android:layout_height="0dp"
android:clipToPadding="false"
android:paddingBottom="8dp"
android:layout_marginTop="@dimen/dp_12"
app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"
app:spanCount="4"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tv_qx"
tools:itemCount="8"
tools:listitem="@layout/item_setup_custom_gift"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>

View File

@@ -0,0 +1,69 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/bg_r14_1e4853_093a1f"
android:paddingHorizontal="@dimen/dp_16">
<TextView
android:id="@+id/tv_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_13"
android:paddingVertical="@dimen/dp_5"
android:text="选择你的心愿礼物"
android:textColor="@color/white"
android:textSize="@dimen/sp_16"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tv_qx"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:text="取消"
android:textColor="@color/color_FF999999"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/tv_title"
app:layout_constraintBottom_toBottomOf="@+id/tv_title"
android:textSize="@dimen/sp_14" />
<TextView
android:id="@+id/tv_qd"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:text="确定"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@+id/tv_title"
app:layout_constraintBottom_toBottomOf="@+id/tv_title"
android:textColor="#3ABC6D"
android:textSize="@dimen/sp_14" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycle_view"
android:layout_width="match_parent"
android:layout_height="0dp"
android:clipToPadding="false"
android:paddingBottom="8dp"
app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"
app:spanCount="4"
app:layout_constraintBottom_toTopOf="@+id/ll_but"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tv_title"
tools:itemCount="8"
tools:listitem="@layout/item_wish_gift"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>

View File

@@ -0,0 +1,123 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/cl_gift"
android:layout_width="@dimen/dp_77"
android:layout_height="wrap_content"
android:layout_marginVertical="@dimen/dp_5"
>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/cl_iv_down_on"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_119"
tools:ignore="MissingConstraints"
android:background="@mipmap/gift_bj">
<ImageView
android:id="@+id/iv_gift_pic"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginLeft="9dp"
android:layout_marginTop="5dp"
android:layout_marginRight="9dp"
android:src="@mipmap/default_image"
app:layout_constraintDimensionRatio="1:1.2"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/iv_down_on"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginLeft="9dp"
android:layout_marginTop="5dp"
android:layout_marginRight="9dp"
android:scaleType="fitXY"
android:src="@mipmap/room_gift_select_bg"
android:visibility="gone"
app:layout_constraintDimensionRatio="1:1.2"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tv_gift_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:singleLine="true"
android:text="甜蜜奶酪"
android:textColor="@color/color_FFA9A9A9"
android:textSize="11sp"
app:layout_constraintLeft_toLeftOf="@+id/iv_gift_pic"
app:layout_constraintRight_toRightOf="@+id/iv_gift_pic"
app:layout_constraintTop_toBottomOf="@+id/iv_gift_pic" />
<TextView
android:id="@+id/tv_gift_price"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/dp_5"
android:drawableLeft="@mipmap/jinb"
android:drawablePadding="@dimen/dp_3"
android:text="1"
android:textColor="@color/color_FFFFBC00"
android:textSize="11sp"
app:layout_constraintLeft_toLeftOf="@+id/iv_gift_pic"
app:layout_constraintRight_toRightOf="@+id/iv_gift_pic"
app:layout_constraintTop_toBottomOf="@+id/tv_gift_name" />
<TextView
android:id="@+id/integral"
android:layout_width="@dimen/dp_35"
android:layout_height="@dimen/dp_13"
android:layout_gravity="center_horizontal"
android:background="@mipmap/text_bj"
android:gravity="center"
tools:text="x30"
android:textColor="@color/color_FF333333"
android:textSize="@dimen/sp_10"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
<TextView
android:id="@+id/tv_gift_desc"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:text="唱歌"
android:textColor="#F5F24F"
android:textSize="@dimen/sp_12"
android:maxLines="1"
android:ellipsize="marquee"
android:focusable="true"
android:maxLength="5"
app:layout_constraintTop_toBottomOf="@+id/cl_iv_down_on"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:layout_marginTop="@dimen/dp_4"
/>
<TextView
android:id="@+id/tv_wheat_qd"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_32"
app:layout_constraintTop_toBottomOf="@+id/tv_gift_desc"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
android:background="@drawable/bg_r53_0dffb9"
android:layout_marginTop="@dimen/dp_4"
android:text="确定"
android:textSize="@dimen/sp_14"
android:gravity="center"
android:textColor="@color/color_FF333333"
/>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -0,0 +1,123 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/cl_gift"
android:layout_width="@dimen/dp_77"
android:layout_height="wrap_content"
android:layout_marginVertical="@dimen/dp_5"
>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/cl_iv_down_on"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_119"
tools:ignore="MissingConstraints"
android:background="@mipmap/gift_bj">
<ImageView
android:id="@+id/iv_gift_pic"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginLeft="9dp"
android:layout_marginTop="5dp"
android:layout_marginRight="9dp"
android:src="@mipmap/default_image"
app:layout_constraintDimensionRatio="1:1.2"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/iv_down_on"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginLeft="9dp"
android:layout_marginTop="5dp"
android:layout_marginRight="9dp"
android:scaleType="fitXY"
android:src="@mipmap/room_gift_select_bg"
android:visibility="gone"
app:layout_constraintDimensionRatio="1:1.2"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tv_gift_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:singleLine="true"
android:text="甜蜜奶酪"
android:textColor="@color/color_FFA9A9A9"
android:textSize="11sp"
app:layout_constraintLeft_toLeftOf="@+id/iv_gift_pic"
app:layout_constraintRight_toRightOf="@+id/iv_gift_pic"
app:layout_constraintTop_toBottomOf="@+id/iv_gift_pic" />
<TextView
android:id="@+id/tv_gift_price"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/dp_5"
android:drawableLeft="@mipmap/jinb"
android:drawablePadding="@dimen/dp_3"
android:text="1"
android:textColor="@color/color_FFFFBC00"
android:textSize="11sp"
app:layout_constraintLeft_toLeftOf="@+id/iv_gift_pic"
app:layout_constraintRight_toRightOf="@+id/iv_gift_pic"
app:layout_constraintTop_toBottomOf="@+id/tv_gift_name" />
<TextView
android:id="@+id/integral"
android:layout_width="@dimen/dp_35"
android:layout_height="@dimen/dp_13"
android:layout_gravity="center_horizontal"
android:background="@mipmap/text_bj"
android:gravity="center"
tools:text="x30"
android:textColor="@color/color_FF333333"
android:textSize="@dimen/sp_10"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
<TextView
android:id="@+id/tv_gift_desc"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:text="待设置"
android:textColor="@color/color_FF999999"
android:textSize="@dimen/sp_12"
android:maxLines="1"
android:ellipsize="marquee"
android:focusable="true"
android:maxLength="5"
app:layout_constraintTop_toBottomOf="@+id/cl_iv_down_on"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:layout_marginTop="@dimen/dp_4"
/>
<TextView
android:id="@+id/tv_wheat_sz"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_32"
app:layout_constraintTop_toBottomOf="@+id/tv_gift_desc"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
android:background="@drawable/bg_r53_0dffb9"
android:layout_marginTop="@dimen/dp_4"
android:text="设置"
android:textSize="@dimen/sp_14"
android:gravity="center"
android:textColor="@color/color_FF333333"
/>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

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

View File

@@ -131,6 +131,7 @@
android:icon="@mipmap/ic_launcher_app"
android:label="@string/app_name"
android:largeHeap="true"
android:screenOrientation="portrait"
android:networkSecurityConfig="@xml/network_security_config"
android:requestLegacyExternalStorage="true"
android:requestRawExternalStorageAccess="true"