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() { 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, 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() { 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, ) { mSelectedPriceBean = selectedPriceItem } override fun onBuyCountChange(count: Int) { mCurrentBuyCount = count.toString() } }) } }