点唱房功能

This commit is contained in:
2025-11-18 19:39:16 +08:00
parent 45923ae858
commit 88a94c7c10
160 changed files with 6801 additions and 355 deletions

View File

@@ -0,0 +1,178 @@
package com.xscm.modulemain.view;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Color;
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;
/**
* com.xscm.moduleutil.widget
* qx 这是点唱的麦位视图
* 2025/11/12
*/
public class RoomJukeboxWheatView extends BaseWheatView {
private ImageView iv_tag_type;
public RoomJukeboxWheatView(Context context) {
super(context);
}
public RoomJukeboxWheatView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public RoomJukeboxWheatView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
protected void initPit(Context context, AttributeSet attrs) {
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 {
if (typedArray != null) {
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);
}
@Override
protected int getLayoutId() {
return R.layout.room_view_jukebox_wheat;
}
// 提供一个方法来设置这个属性,便于在代码中动态更改
public void setRoomWheatNumber(String number) {
this.pitNumber = number;
}
@Override
protected void setPitData(RoomPitBean bean) {
if (bean == null) return;
pitBean = bean; // 统一使用参数 bean
stopAndClearAnimation(); // 清理之前的动画资源
if (isOn()) {
handleOnState(bean);
} else {
handleOffState(bean);
}
iv_tag_type.setVisibility(bean.isImageType()?VISIBLE:GONE);
iv_tag_type.setImageResource(com.xscm.moduleutil.R.mipmap.mu_yc);
}
public void setSex(String value, boolean format) {
mCharmView.setSex("", "", value, format);
}
public void setImageType(boolean b){
if(b){
iv_tag_type.setVisibility(VISIBLE);
}else
iv_tag_type.setVisibility(GONE);
}
private void handleOnState(RoomPitBean bean) {
mIvRipple.setVisibility(VISIBLE);
mTvName.setVisibility(VISIBLE);
mTvName.setText(bean.getNickname());
ImageUtils.loadHeadCC(bean.getAvatar(), mRiv);
mCharmView.setVisibility(VISIBLE);
if (TextUtils.isEmpty(bean.getDress())) {
mIvFrame.stopAll();
mIvFrame.setVisibility(INVISIBLE);
} else {
mIvFrame.setVisibility(VISIBLE);
mIvFrame.setSource(bean.getDress(), 3);
}
// if(pitNumber.equals("9")){
// iv_tag_type.setVisibility(GONE);
// mTvName.setBackgroundColor(com.xscm.moduleutil.R.color.transparent);
// }
}
private String getPitNumberText() {
if ("-1".equals(pitNumber)) return "";
if ("9".equals(pitNumber)) return "";
if ("10".equals(pitNumber)) return "老板";
return pitNumber + "号麦";
}
private void handleOffState(RoomPitBean bean) {
if (bean.getPit_number().equals("9")){
mTvName.setVisibility(GONE);
}else {
mTvName.setVisibility(VISIBLE);
mTvName.setText(getPitNumberText());
}
mCharmView.setVisibility(GONE);
mRiv.setVisibility(VISIBLE);
mRiv.setImageResource(R.mipmap.jukebox_room_mask);
mIvShutup.setVisibility( GONE);
iv_tag_type.setVisibility(GONE);
// ImageUtils.loadRes(com.xscm.moduleutil.R.mipmap.room_microphone_off, mIvShutup);
mIvFrame.stopAll();
mIvFrame.setVisibility(GONE);
mIvRipple.setVisibility(GONE);
}
private void stopAndClearAnimation() {
if (mIvRipple != null) {
// mIvRipple.stopAnimation();
mIvRipple.stopAnimation(true);
// 清理SVGA资源避免内存泄漏
// mIvRipple.clear();
}
}
@Override
public void onRemoteSoundLevelUpdate(String userId, int soundLevel) {
}
@Override
public void onLocalSoundLevelUpdate(int volume) {
}
@Override
public void userJoined(int userId, int elapsd) {
}
@Override
public void userOffline(int userId, int reason) {
}
@Override
public void pkOffSide(int userId) {
}
}