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.utils.SpUtil import com.xscm.moduleutil.widget.AvatarFrameView import com.xscm.moduleutil.widget.BaseWheatView import com.xscm.moduleutil.widget.WheatGiftAnim 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: ImageView? = 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 } 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.INVISIBLE 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) } fun setPitGift(giftPlayString: String) { mIvGift?.visibility = VISIBLE WheatGiftAnim.addGift(mIvGift, giftPlayString); } 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 "虚位以待" } 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) { } }