1:修改头像截取设置默认宽高

2:修改首页默认展示房间列表tab
3:修改创建房间,提示需要签约10个徒弟的功能
4:修改注销用户的时候,当有手机号的时候,进行二次验证码确认
5:首页推荐房间弹框
This commit is contained in:
2025-12-08 19:08:07 +08:00
parent 1af373846f
commit 338d704904
34 changed files with 727 additions and 115 deletions

View File

@@ -0,0 +1,132 @@
package com.xscm.modulemain.dialog
import android.content.Context
import android.os.CountDownTimer
import android.view.Gravity
import android.view.ViewGroup
import com.blankj.utilcode.util.ScreenUtils
import com.xscm.modulemain.R
import com.xscm.modulemain.databinding.DialogInviteBinding
import com.xscm.modulemain.manager.RoomManager
import com.xscm.moduleutil.bean.IndexRecommendRoom
import com.xscm.moduleutil.color.ThemeableDrawableUtils
import com.xscm.moduleutil.utils.ColorManager
import com.xscm.moduleutil.utils.ImageUtils
import com.xscm.moduleutil.widget.dialog.BaseDialog
/**
* 项目名称:羽声语音
* 时间2025/12/8 16:19
* 用途:首页推荐房间
*/
class InviteDialog(context: Context, data: IndexRecommendRoom?) : BaseDialog<DialogInviteBinding>(context) {
private var countDownTimer: CountDownTimer? = null // 倒计时器
private var data: IndexRecommendRoom? = data // 将构造函数参数赋值给成员变量
// companion object {
// // 修改方法签名,允许 data 为空
// fun show(context: Context, data: IndexRecommendRoom?) {
// // 创建并显示对话框,即使 data 为空也显示
// val dialog = InviteDialog(context, data)
// dialog.show()
// }
// }
init {
// 设置对话框从底部弹出
window?.setGravity(Gravity.CENTER)
// 设置对话框的宽度为屏幕宽度
window?.setLayout(
(ScreenUtils.getScreenWidth() * 315f / 375).toInt(),
ViewGroup.LayoutParams.WRAP_CONTENT
)
// 添加动画效果
window?.setWindowAnimations(com.xscm.moduleutil.R.style.DialogAnimationt)
setCancelable(false)
setCanceledOnTouchOutside(false)
}
override fun getLayoutId(): Int {
return R.layout.dialog_invite
}
override fun initView() {
// 设置邀请按钮文本
ThemeableDrawableUtils.setThemeableRoundedBackground(
mBinding.btnPositive,
ColorManager.getInstance().getPrimaryColorInt(),
53
)
mBinding.btnPositive.setTextColor(ColorManager.getInstance().getButtonColorInt())
}
override fun initData() {
mBinding.ivClose.setOnClickListener {
dismiss()
}
mBinding.btnPositive.setOnClickListener {
// 如果有房间数据,进入房间;否则只关闭对话框
data?.let { roomData ->
RoomManager.getInstance()
.fetchRoomDataAndEnter(context, roomData.room_id, "", null)
} ?: run {
// 没有数据时,可以显示提示或执行其他操作
// 这里我们只关闭对话框
}
dismiss()
}
}
fun setData(data: IndexRecommendRoom?) {
this.data = data
// 设置房间数据
data?.let { roomData ->
// 设置房间封面
ImageUtils.loadHead(roomData.room_cover, mBinding.invitePic)
// 启动倒计时
startCountDown()
} ?: run {
// 仍然启动倒计时,让用户可以关闭对话框
startCountDown()
}
}
/**
* 开始倒计时
*/
private fun startCountDown() {
countDownTimer = object : CountDownTimer(9 * 1000L, 1000) {
override fun onTick(millisUntilFinished: Long) {
val secondsLeft = (millisUntilFinished / 1000).toInt()
mBinding.btnNegative.setText("拒接" + " (" + secondsLeft + "s)")
}
override fun onFinish() {
// 检查是否被主动取消
dismiss()
}
}.start()
// 设置点击事件,点击按钮也关闭对话框
mBinding.btnNegative.setOnClickListener({ v ->
if (countDownTimer != null) {
countDownTimer?.cancel()
}
dismiss()
})
}
override fun dismiss() {
// 在对话框关闭前取消倒计时
if (countDownTimer != null) {
countDownTimer?.cancel()
}
super.dismiss()
}
}