package com.xscm.modulemain.widget import android.content.Context import android.content.res.TypedArray import android.media.Image 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.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 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) } override fun getLayoutId(): Int { return R.layout.layout_room_pub_wheat } // 提供一个方法来设置这个属性,便于在代码中动态更改 fun setRoomWheatNumber(number: String?) { this.pitNumber = number } fun setHostTv(hostTv: TextView) { this.hostTv = hostTv } 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.GONE ll_bottom?.visibility = View.GONE 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.GONE ll_bottom?.visibility = View.GONE iv_custom_gift?.visibility = View.GONE } else -> { tv_time?.visibility = View.GONE ll_bottom?.visibility = View.GONE 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) } 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 ll_bottom?.visibility = View.VISIBLE iv_custom_gift?.visibility = View.VISIBLE } 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 "虚位以待" } 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) { } }