点唱房功能
This commit is contained in:
@@ -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) {
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user