优化头像框加载、麦圈加载,二卡八放到对应fragment加载。

This commit is contained in:
2026-01-07 16:53:36 +08:00
parent b76136b604
commit d1cd2aeef7
12 changed files with 199 additions and 831 deletions

View File

@@ -37,6 +37,7 @@ import com.xscm.moduleutil.event.RoomFaceEvent;
import com.xscm.moduleutil.interfaces.IBaseWheat;
import com.xscm.moduleutil.interfaces.SoundLevelUpdateListener;
import com.xscm.moduleutil.rtc.AgoraManager;
import com.xscm.moduleutil.utils.ImageUtils;
import com.xscm.moduleutil.utils.SpUtil;
import com.xscm.moduleutil.utils.logger.Logger;
@@ -63,6 +64,7 @@ public abstract class BaseWheatView extends ConstraintLayout implements IBaseWhe
public TextView tv_time_pk;
public RoomPitBean pitBean;//麦位数据
public String roomId;//房间id
CountDownTimer mCountDownTimer;
@@ -82,17 +84,14 @@ public abstract class BaseWheatView extends ConstraintLayout implements IBaseWhe
public ImageView iv_on_line;
private boolean showGiftAnim = true;//显示麦位动画
private ImageView iv_tag_type;
// 当前音量监听器,用于防止重复添加
private SoundLevelUpdateListener currentSoundLevelListener;
private TextView tv_zhul;
private SVGAParser mParser;
private final SVGAParser parser = new SVGAParser(CommonAppContext.getInstance());
private String micCycle = "";
public boolean isMentorShip = false;
private SoundLevelUpdateListener soundLevelUpdateListener;
public BaseWheatView(Context context) {
this(context, null, 0);
@@ -112,6 +111,7 @@ public abstract class BaseWheatView extends ConstraintLayout implements IBaseWhe
mIvSex = findViewById(R.id.iv_sex);
mIvFrame = findViewById(R.id.iv_frame);
mIvRipple = findViewById(R.id.iv_ripple);
mIvFace = findViewById(R.id.iv_face);
mIvShutup = findViewById(R.id.iv_shutup);
tvTime = findViewById(R.id.tv_time);
@@ -179,33 +179,61 @@ public abstract class BaseWheatView extends ConstraintLayout implements IBaseWhe
setCardiac(pitBean.getCharm(), getTzbl());
if (bean.getUser_id() != null && !bean.getUser_id().equals("0") && !bean.getUser_id().isEmpty()) {
if (bean.getIs_online()==1){
iv_on_line.setVisibility(GONE);
}else if (bean.getIs_online()==2){
if (!bean.getUser_id().equals(SpUtil.getUserId()+"")) {
iv_on_line.setVisibility(VISIBLE);
}
}else {
iv_on_line.setVisibility(GONE);
}
if (bean.getIs_online() == 1) {
iv_on_line.setVisibility(GONE);
} else if (bean.getIs_online() == 2) {
if (!bean.getUser_id().equals(SpUtil.getUserId() + "")) {
iv_on_line.setVisibility(VISIBLE);
}
} else {
iv_on_line.setVisibility(GONE);
}
} else {
iv_on_line.setVisibility(GONE);
}
if (mParser == null || (!TextUtils.isEmpty(pitBean.getMic_cycle()) && !micCycle.equals(pitBean.getMic_cycle()))) {
LogUtils.e("这是一个很诡异的东西 " + (mParser == null) +",pitBean.getMic_cycle():"+pitBean.getMic_cycle());
if (mParser != null) {
mParser = null;
}
micCycle = pitBean.getMic_cycle();
mParser = new SVGAParser(getContext());
if (TextUtils.isEmpty(pitBean.getMic_cycle())) {
mParser.decodeFromAssets("mic.svga", new SVGAParser.ParseCompletion() {
@Override
public void onComplete(@Nullable SVGAVideoEntity videoItem) {
if (videoItem != null) {
mIvRipple.setVideoItem(videoItem);
}
}
parser.decodeFromAssets("mic.svga", new SVGAParser.ParseCompletion() {
@Override
public void onComplete(@Nullable SVGAVideoEntity videoItem) {
if (videoItem != null) {
mIvRipple.setVideoItem(videoItem);
@Override
public void onError() {
Log.e("SVGA", "解析 ripple.svga 失败");
}
});
} else {
try {
mParser.decodeFromURL(new URL(pitBean.getMic_cycle()),
new SVGAParser.ParseCompletion() {
@Override
public void onComplete(@NotNull SVGAVideoEntity svgaVideoEntity) {
mIvRipple.setImageDrawable(new SVGADrawable(svgaVideoEntity));
mIvRipple.startAnimation();
}
@Override
public void onError() {
LogUtils.e("BaseWheatView", "解析 mic_cycle 失败");
}
});
} catch (MalformedURLException ignored) {
LogUtils.e("BaseWheatView", "解析 mic_cycle 失败");
}
}
}
@Override
public void onError() {
Log.e("SVGA", "解析 ripple.svga 失败");
}
});
setPitData(bean);
@@ -214,7 +242,7 @@ public abstract class BaseWheatView extends ConstraintLayout implements IBaseWhe
mIvRipple.setScaleX(1.1f);
mIvRipple.setScaleY(1.1f);
}
if (!isMentorShip){
if (!isMentorShip) {
//心动值
//显示心动
@@ -259,13 +287,18 @@ public abstract class BaseWheatView extends ConstraintLayout implements IBaseWhe
}
}
AgoraManager.getInstance().addSoundLevelListener(new SoundLevelUpdateListener() {
if (soundLevelUpdateListener != null){
AgoraManager.getInstance().removeSoundLevelListener(soundLevelUpdateListener);
}
soundLevelUpdateListener = new SoundLevelUpdateListener() {
@Override
public void onRemoteSoundLevelUpdate(String userId, int soundLevel) {
if (mIvRipple == null) return;
if (mIvRipple == null || pitBean.getUser_id().equals("0")) return;
if (!userId.equals(pitBean.getUser_id())) return;
boolean nowSpeaking = soundLevel > 0;
updateSpeakingState(nowSpeaking);
}
@@ -290,9 +323,13 @@ public abstract class BaseWheatView extends ConstraintLayout implements IBaseWhe
if (mIvRipple == null)
return;
mIvRipple.setVisibility(INVISIBLE);
Log.e("SVGA", "-------"+pitBean.getUser_id());
}
}
});
};
AgoraManager.getInstance().addSoundLevelListener(soundLevelUpdateListener);
}
@@ -344,9 +381,11 @@ public abstract class BaseWheatView extends ConstraintLayout implements IBaseWhe
}
@Override
public void onError() {}
public void onError() {
}
});
} catch (MalformedURLException ignored) {}
} catch (MalformedURLException ignored) {
}
}
public void setCharm(String charm) {
@@ -398,13 +437,13 @@ public abstract class BaseWheatView extends ConstraintLayout implements IBaseWhe
public void setOnlineStatus() {
if (pitBean.getUser_id() != null && !pitBean.getUser_id().equals("0") && !pitBean.getUser_id().isEmpty()) {
if (pitBean.getIs_online()==1){
if (pitBean.getIs_online() == 1) {
iv_on_line.setVisibility(GONE);
}else if (pitBean.getIs_online()==2){
if (!pitBean.getUser_id().equals(SpUtil.getUserId()+"")) {
} else if (pitBean.getIs_online() == 2) {
if (!pitBean.getUser_id().equals(SpUtil.getUserId() + "")) {
iv_on_line.setVisibility(VISIBLE);
}
}else {
} else {
iv_on_line.setVisibility(GONE);
}
} else {
@@ -423,6 +462,7 @@ public abstract class BaseWheatView extends ConstraintLayout implements IBaseWhe
showGiftAnim = false;
releaseCountDownTimer();
super.onDetachedFromWindow();
mParser = null;
}
/**
@@ -742,7 +782,6 @@ public abstract class BaseWheatView extends ConstraintLayout implements IBaseWhe
mIvFace.addData(new FaceBean(roomRollModel.getNumber(), 2));
}
/**
* 是否主持
*