签约上下麦

This commit is contained in:
2025-11-28 09:00:38 +08:00
parent 18559d0553
commit dce8b08a3f
10 changed files with 511 additions and 146 deletions

View File

@@ -4,89 +4,30 @@ import android.content.Context
import android.content.res.TypedArray
import android.text.TextUtils
import android.util.AttributeSet
import android.widget.ImageView
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 RoomMentorShipWheatView(context: Context?) : BaseWheatView(context) {
class RoomMentorShipWheatView : BaseWheatView {
private var iv_tag_type: ImageView? = null
constructor(context: Context?, attrs: AttributeSet?) : this(context) {
initPit(context, attrs)
}
constructor(context: Context?) : super(context)
override fun getLayoutId(): Int {
return R.layout.layout_room_mentorship_wheat
}
// 提供一个方法来设置这个属性,便于在代码中动态更改
fun setRoomWheatNumber(number: String?) {
this.pitNumber = number
}
override fun setPitData(bean: RoomPitBean?) {
if (bean == null) return
pitBean = bean // 统一使用参数 bean
stopAndClearAnimation() // 清理之前的动画资源
if (isOn) {
handleOnState(bean)
} else {
handleOffState(bean)
}
}
private fun stopAndClearAnimation() {
if (mIvRipple != null) {
mIvRipple.stopAnimation(true)
}
}
constructor(context: Context?, attrs: AttributeSet?) : super(context, attrs)
private fun handleOnState(bean: RoomPitBean) {
mIvRipple.visibility = VISIBLE
mTvName.visibility = VISIBLE
mTvName.text = bean.nickname
ImageUtils.loadHeadCC(bean.avatar, mRiv)
mCharmView.visibility = VISIBLE
if (TextUtils.isEmpty(bean.dress)) {
mIvFrame.stopAll()
mIvFrame.visibility = INVISIBLE
} else {
mIvFrame.visibility = VISIBLE
mIvFrame.setSource(bean.dress, 3)
}
}
constructor(context: Context?, attrs: AttributeSet?, defStyleAttr: Int) : super(
context,
attrs,
defStyleAttr
)
private fun handleOffState(bean: RoomPitBean) {
if (bean.pit_number == "9") {
mTvName.visibility = GONE
} else {
mTvName.visibility = VISIBLE
mTvName.setText(getPitNumberText())
}
mCharmView.visibility = GONE
mRiv.visibility = VISIBLE
mRiv.setImageResource(R.mipmap.jukebox_room_mask)
mIvShutup.visibility = GONE
mIvFrame.stopAll()
mIvFrame.visibility = GONE
mIvRipple.visibility = GONE
}
private fun getPitNumberText(): String {
if ("-1" == pitNumber) return ""
if ("9" == pitNumber) return ""
if ("10" == pitNumber) return "老板"
return pitNumber + "号麦"
}
override fun initPit(context: Context?, attrs: AttributeSet?) {
override fun initPit(context: Context, attrs: AttributeSet) {
var typedArray: TypedArray? = null
try {
typedArray = context!!.obtainStyledAttributes(
typedArray = context.obtainStyledAttributes(
attrs,
com.xscm.moduleutil.R.styleable.RoomDefaultWheatView
)
@@ -101,26 +42,104 @@ class RoomMentorShipWheatView(context: Context?) : BaseWheatView(context) {
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)
}
override fun onRemoteSoundLevelUpdate(userId: String?, soundLevel: Int) {
override fun getLayoutId(): Int {
return R.layout.layout_room_mentorship_wheat
}
// 提供一个方法来设置这个属性,便于在代码中动态更改
fun setRoomWheatNumber(number: String?) {
this.pitNumber = number
}
public override fun setPitData(bean: RoomPitBean) {
pitBean = bean // 统一使用参数 bean
stopAndClearAnimation() // 清理之前的动画资源
if (pitBean.pit_number == "9" || pitBean.pit_number == "1") {
mCharmView.visibility = VISIBLE
}else{
mCharmView.visibility = INVISIBLE
}
if (isOn) {
handleOnState(bean)
} else {
handleOffState(bean)
}
iv_tag_type!!.visibility = if (bean.isImageType) VISIBLE else GONE
iv_tag_type!!.setImageResource(com.xscm.moduleutil.R.mipmap.mu_yc)
}
fun setSex(value: String?, format: Boolean) {
mCharmView.setSex("", "", value, format)
}
fun setImageType(b: Boolean) {
if (b) {
iv_tag_type!!.visibility = VISIBLE
} else iv_tag_type!!.visibility = GONE
}
private fun handleOnState(bean: RoomPitBean) {
mIvRipple.visibility = VISIBLE
mTvName.visibility = VISIBLE
mTvName.text = bean.nickname
ImageUtils.loadHeadCC(bean.avatar, mRiv)
mCharmView.visibility = 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
mCharmView.visibility = GONE
mRiv.visibility = VISIBLE
mRiv.setImageResource(com.xscm.moduleutil.R.mipmap.room_ic_wheat_default)
mIvShutup.visibility = GONE
iv_tag_type!!.visibility = GONE
// ImageUtils.loadRes(com.xscm.moduleutil.R.mipmap.room_microphone_off, mIvShutup);
mIvFrame.stopAll()
mIvFrame.visibility = GONE
mIvRipple.visibility = GONE
}
private fun stopAndClearAnimation() {
if (mIvRipple != null) {
// mIvRipple.stopAnimation();
mIvRipple.stopAnimation(true)
// 清理SVGA资源避免内存泄漏
// mIvRipple.clear();
}
}
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) {
}
}
}