201 lines
7.3 KiB
Kotlin
201 lines
7.3 KiB
Kotlin
package com.xscm.modulemain.dialog
|
||
|
||
import android.app.Dialog
|
||
import android.content.Context
|
||
import android.content.Intent
|
||
import android.view.Gravity
|
||
import android.view.LayoutInflater
|
||
import android.view.View
|
||
import android.view.ViewGroup
|
||
import androidx.recyclerview.widget.LinearLayoutManager
|
||
import com.blankj.utilcode.util.ActivityUtils.startActivity
|
||
import com.blankj.utilcode.util.ToastUtils
|
||
import com.xscm.modulemain.activity.user.activity.RechargeActivity
|
||
import com.xscm.modulemain.adapter.PurchaseOutfitsAdapter
|
||
import com.xscm.modulemain.databinding.DialogPurchaseOutfitsBinding
|
||
import com.xscm.moduleutil.bean.DecorateDetailBean
|
||
import com.xscm.moduleutil.bean.PersonaltyListBean
|
||
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.ImageUtils
|
||
import com.xscm.moduleutil.utils.SpUtil
|
||
import com.xscm.moduleutil.widget.GiftAnimView
|
||
import io.reactivex.disposables.Disposable
|
||
|
||
/**
|
||
* 项目名称:羽声语音
|
||
* 时间:2026/1/4 9:36
|
||
* 用途:装饰详情
|
||
*/
|
||
class PurchaseOutfitsDialog(context: Context) :
|
||
Dialog(context, com.xscm.moduleutil.R.style.BaseDialogStyleH) {
|
||
private var mBinding: DialogPurchaseOutfitsBinding =
|
||
DialogPurchaseOutfitsBinding.inflate(LayoutInflater.from(context))
|
||
var did: String = ""
|
||
var personaltyListBean: PersonaltyListBean? = null
|
||
var adapter: PurchaseOutfitsAdapter = PurchaseOutfitsAdapter()
|
||
|
||
private var mSelectedPriceBean: DecorateDetailBean.PriceListBean? = null
|
||
private var mCurrentBuyCount: String? = "1"
|
||
|
||
var imageBg2: GiftAnimView? = null
|
||
|
||
init {
|
||
setContentView(mBinding.root)
|
||
|
||
setupWindow()
|
||
|
||
}
|
||
|
||
private fun setupViews() {
|
||
RetrofitClient.getInstance()
|
||
.getDecorateDetail(did, object : BaseObserver<DecorateDetailBean>() {
|
||
override fun onSubscribe(d: Disposable) {
|
||
}
|
||
|
||
override fun onNext(t: DecorateDetailBean) {
|
||
if (t != null && t.decorate != null && t.userInfo != null) {
|
||
mBinding.tvRewardGift.text = t.userInfo!!.userCoin.toString()
|
||
mBinding.tvOutfitsN.text = t.decorate!!.title
|
||
// 2. 初始化RecyclerView
|
||
mBinding.rvOutfits.layoutManager = LinearLayoutManager(context)
|
||
val adapterDataList = t.convertToAdapterData(t.decorate, 0)
|
||
mBinding.rvOutfits.adapter = adapter
|
||
adapter.setData(
|
||
adapterDataList as MutableList<DecorateDetailBean.DecorateAdapterItem>,
|
||
t.decorate!!.priceList.isEmpty()
|
||
)
|
||
|
||
} else {
|
||
dismiss()
|
||
}
|
||
}
|
||
})
|
||
|
||
}
|
||
|
||
fun show(item: PersonaltyListBean?) {
|
||
personaltyListBean = item
|
||
did = item?.did.toString()
|
||
super.show()
|
||
initView()
|
||
setupViews()
|
||
}
|
||
|
||
private fun setupWindow() {
|
||
val window = window ?: return
|
||
window.setGravity(Gravity.BOTTOM)
|
||
window.setLayout(
|
||
ViewGroup.LayoutParams.MATCH_PARENT,
|
||
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
|
||
|
||
}
|
||
|
||
fun initView() {
|
||
setCancelable(true)
|
||
setCanceledOnTouchOutside(true)
|
||
ThemeableDrawableUtils.setThemeableRoundedBackground(
|
||
mBinding.tvOutfitsQd,
|
||
ColorManager.getInstance().primaryColorInt,
|
||
53
|
||
)
|
||
mBinding.tvOutfitsQd.setTextColor(ColorManager.getInstance().buttonColorInt)
|
||
|
||
imageBg2 = GiftAnimView(context)
|
||
val parentLayout = mBinding.ccl.parent as ViewGroup // 或者其他合适的父布局
|
||
parentLayout.post {
|
||
val parentWidth = parentLayout.width
|
||
val parentHeight = parentLayout.height
|
||
imageBg2!!.layoutParams = ViewGroup.LayoutParams(parentWidth, parentHeight)
|
||
}
|
||
|
||
|
||
imageBg2!!.visibility = View.GONE
|
||
|
||
|
||
parentLayout.addView(imageBg2)
|
||
// 设置确认按钮点击事件
|
||
mBinding.tvOutfitsQd.setOnClickListener {
|
||
|
||
RetrofitClient.getInstance().payDecorate(
|
||
did,
|
||
mSelectedPriceBean?.day.toString(),
|
||
mCurrentBuyCount,
|
||
object : BaseObserver<String>() {
|
||
override fun onSubscribe(d: Disposable) {
|
||
}
|
||
|
||
override fun onNext(t: String) {
|
||
ToastUtils.showLong("购买成功")
|
||
dismiss()
|
||
}
|
||
|
||
});
|
||
}
|
||
|
||
mBinding.cz.setOnClickListener {
|
||
//充值
|
||
startActivity(Intent(context, RechargeActivity::class.java))
|
||
}
|
||
if (personaltyListBean != null) {
|
||
if (personaltyListBean?.type == 12) {
|
||
mBinding.ivOutfits.visibility = View.GONE
|
||
mBinding.imJsk.visibility = View.VISIBLE
|
||
mBinding.imageHeadPortrait.visibility= View.GONE
|
||
mBinding.imQp.visibility=View.GONE
|
||
ImageUtils.loadHead(personaltyListBean?.base_image, mBinding.imJsk)
|
||
}else if (personaltyListBean?.type == 9) {
|
||
mBinding.ivOutfits.visibility = View.GONE
|
||
mBinding.imJsk.visibility = View.GONE
|
||
mBinding.imageHeadPortrait.visibility= View.GONE
|
||
mBinding.imQp.visibility=View.VISIBLE
|
||
ImageUtils.loadHead(personaltyListBean?.base_image, mBinding.imQp)
|
||
} else {
|
||
mBinding.ivOutfits.visibility = View.VISIBLE
|
||
mBinding.imJsk.visibility = View.GONE
|
||
mBinding.imQp.visibility=View.GONE
|
||
ImageUtils.loadHead(SpUtil.getUserInfo().avatar, mBinding.ivOutfits)
|
||
if (personaltyListBean?.type == 1) {
|
||
mBinding.imageHeadPortrait.visibility= View.VISIBLE
|
||
imageBg2!!.visibility = View.GONE
|
||
mBinding.imageHeadPortrait.stopAll()
|
||
mBinding.imageHeadPortrait.setSource(personaltyListBean?.play_image, 1)
|
||
}else if (personaltyListBean?.type == 2) {
|
||
mBinding.imageHeadPortrait.visibility= View.GONE
|
||
imageBg2!!.visibility = View.VISIBLE
|
||
imageBg2!!.previewEffectWith(personaltyListBean?.play_image)
|
||
}
|
||
}
|
||
mBinding.tvOutfitsName.text = personaltyListBean?.title
|
||
}
|
||
|
||
|
||
|
||
adapter.setOnDurationOptionSelectedListener(object :
|
||
PurchaseOutfitsAdapter.OnDurationOptionSelectedListener {
|
||
|
||
override fun onDurationSelected(
|
||
selectedPos: Int,
|
||
selectedPriceItem: DecorateDetailBean.PriceListBean,
|
||
allPriceOptions: List<DecorateDetailBean.PriceListBean>,
|
||
) {
|
||
mSelectedPriceBean = selectedPriceItem
|
||
}
|
||
|
||
|
||
override fun onBuyCountChange(count: Int) {
|
||
mCurrentBuyCount = count.toString()
|
||
}
|
||
})
|
||
|
||
|
||
}
|
||
} |