Files
yusheng-android/MainModule/src/main/java/com/xscm/modulemain/widget/RoomPubWheatView.kt
2026-01-08 17:02:29 +08:00

192 lines
5.8 KiB
Kotlin

package com.xscm.modulemain.widget
import android.content.Context
import android.content.res.TypedArray
import android.text.TextUtils
import android.util.AttributeSet
import android.view.View
import android.widget.ImageView
import android.widget.LinearLayout
import android.widget.TextView
import com.xscm.modulemain.R
import com.xscm.moduleutil.bean.room.RoomPitBean
import com.xscm.moduleutil.utils.ImageUtils
import com.xscm.moduleutil.utils.SpUtil
import com.xscm.moduleutil.widget.AvatarFrameView
import com.xscm.moduleutil.widget.BaseWheatView
class RoomPubWheatView : BaseWheatView {
constructor(context: Context?) : super(context)
constructor(context: Context?, attrs: AttributeSet?) : super(context, attrs)
constructor(context: Context?, attrs: AttributeSet?, defStyleAttr: Int) : super(
context,
attrs,
defStyleAttr
)
private var iv_tag_type: ImageView? = null
var iv_custom_gift: ImageView? = null
private var hostTv: TextView? = null
private var tv_time: TextView? = null
private var ll_bottom: LinearLayout? = null
private var iv_gift: AvatarFrameView? = null
var ivYueT: ImageView? = null
var ivLiaoT: ImageView? = null
override fun initPit(context: Context, attrs: AttributeSet) {
var typedArray: TypedArray? = null
try {
typedArray = context.obtainStyledAttributes(
attrs,
com.xscm.moduleutil.R.styleable.RoomDefaultWheatView
)
pitNumber =
typedArray.getString(com.xscm.moduleutil.R.styleable.RoomDefaultWheatView_room_wheat_number)
} finally {
typedArray?.recycle()
}
mCharmView = findViewById(R.id.charm_view)
mIvRipple = findViewById(R.id.iv_ripple)
mIvFrame = findViewById(R.id.iv_frame)
mIvShutup = findViewById(R.id.iv_shutup)
mRiv = findViewById(R.id.riv)
iv_tag_type = findViewById(R.id.iv_tag_type)
ll_bottom = findViewById(R.id.ll_bottom)
iv_custom_gift = findViewById(R.id.iv_custom_gift)
tv_time = findViewById(R.id.tv_time)
ivYueT = findViewById(R.id.iv_yue_t)
ivLiaoT = findViewById(R.id.iv_liao_t)
iv_gift = findViewById(R.id.iv_gift)
}
override fun getLayoutId(): Int {
return R.layout.layout_room_pub_wheat
}
// 提供一个方法来设置这个属性,便于在代码中动态更改
fun setRoomWheatNumber(number: String?) {
this.pitNumber = number
}
public override fun setPitData(bean: RoomPitBean) {
pitBean = bean // 统一使用参数 bean
stopAndClearAnimation() // 清理之前的动画资源
when (bean.pit_number) {
"9" -> {
iv_tag_type?.visibility = View.VISIBLE
iv_tag_type?.setImageResource(com.xscm.moduleutil.R.mipmap.zc)
tv_time?.visibility = View.INVISIBLE
ll_bottom?.visibility = View.INVISIBLE
iv_custom_gift?.visibility = View.GONE
}
"10" -> {
iv_tag_type?.visibility = View.VISIBLE
iv_tag_type?.setImageResource(com.xscm.moduleutil.R.mipmap.jb)
tv_time?.visibility = View.INVISIBLE
ll_bottom?.visibility = View.INVISIBLE
iv_custom_gift?.visibility = View.GONE
}
else -> {
tv_time?.visibility = View.INVISIBLE
ll_bottom?.visibility = View.INVISIBLE
iv_custom_gift?.visibility = View.GONE
}
}
mCharmView.visibility = View.GONE
if (isOn) {
handleOnState(bean)
} else {
handleOffState(bean)
}
}
fun setSex(value: String?, format: Boolean) {
mCharmView.setSex("", "", value, format)
}
fun setPitGift(giftPlayString: String){
iv_gift?.visibility=VISIBLE
iv_gift?.setSource(giftPlayString, 2)
}
fun setIvCustomGift(boolean: Boolean){
iv_custom_gift?.visibility = if (boolean) View.VISIBLE else View.GONE
}
private fun handleOnState(bean: RoomPitBean) {
mIvRipple.visibility = VISIBLE
mTvName.text = bean.nickname
ImageUtils.loadHeadCC(bean.avatar, mRiv)
if (!bean.pit_number.equals("9") && !bean.pit_number.equals("10")) {
tv_time?.visibility = View.VISIBLE
if (bean.user_id != SpUtil.getUserId().toString()) {
if (bean.had_custom_gift==1){
iv_custom_gift?.visibility = View.VISIBLE
}
ll_bottom?.visibility = View.VISIBLE
}
tv_time?.text = "00:00"
}
if (TextUtils.isEmpty(bean.dress)) {
mIvFrame.stopAll()
mIvFrame.visibility = INVISIBLE
} else {
mIvFrame.visibility = VISIBLE
mIvFrame.setSource(bean.dress, 3)
}
}
private val pitNumberText: String
get() {
return pitNumber+"号麦"
}
private fun handleOffState(bean: RoomPitBean) {
mTvName.text = pitNumberText
mRiv.visibility = VISIBLE
mRiv.setImageResource(com.xscm.moduleutil.R.mipmap.room_ic_wheat_default)
mIvShutup.visibility = GONE
iv_tag_type!!.visibility = GONE
mIvFrame.stopAll()
mIvFrame.visibility = GONE
mIvRipple.visibility = GONE
}
private fun stopAndClearAnimation() {
if (mIvRipple != null) {
mIvRipple.stopAnimation(true)
}
}
override fun onRemoteSoundLevelUpdate(userId: String, soundLevel: Int) {
}
override fun onLocalSoundLevelUpdate(volume: Int) {
}
override fun userJoined(userId: Int, elapsd: Int) {
}
override fun userOffline(userId: Int, reason: Int) {
}
override fun pkOffSide(userId: Int) {
}
}