1:将道具商城做成原生的,添加点击的时候展示动效
This commit is contained in:
@@ -0,0 +1,200 @@
|
||||
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.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(personaltyListBean?.base_image, mBinding.ivOutfits)
|
||||
if (personaltyListBean?.type == 1) {
|
||||
mBinding.imageHeadPortrait.visibility= View.VISIBLE
|
||||
imageBg2!!.visibility = View.GONE
|
||||
mBinding.imageHeadPortrait.stopAll()
|
||||
mBinding.imageHeadPortrait.setSource(personaltyListBean?.play_image, 2)
|
||||
}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()
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user