1.坑位刷新逻辑优化(头饰闪烁问题)

2.修复看不到旧版本头饰的问题(相亲之前的版本)
This commit is contained in:
huangjian
2021-03-01 14:59:07 +08:00
parent 05251bf784
commit ff06564224
3 changed files with 25 additions and 16 deletions

View File

@@ -40,6 +40,7 @@ import com.yizhuan.xchat_android_core.room.queue.bean.MicMemberInfo;
import com.yizhuan.xchat_android_core.user.UserModel;
import com.yizhuan.xchat_android_core.user.bean.UserInfo;
import com.yizhuan.xchat_android_core.utils.ActivityUtil;
import com.yizhuan.xchat_android_core.utils.LogUtils;
import com.yizhuan.xchat_android_library.utils.CommonUtils;
import com.yizhuan.xchat_android_library.utils.config.BasicConfig;
@@ -58,11 +59,10 @@ public abstract class BaseMicroViewAdapter extends RecyclerView.Adapter<Recycler
private OnMicroItemClickListener onMicroItemClickListener;
protected Context context;
private int mTagHeight;
public BaseMicroViewAdapter(Context context) {
this.context = context;
mTagHeight = context.getResources().getDimensionPixelOffset(R.dimen.tag_height);
setHasStableIds(true);
}
public void setOnMicroItemClickListener(OnMicroItemClickListener onMicroItemClickListener) {
@@ -152,18 +152,10 @@ public abstract class BaseMicroViewAdapter extends RecyclerView.Adapter<Recycler
this.position = position;
RoomMicInfo roomMicInfo = info.mRoomMicInfo;
MicMemberInfo chatRoomMember = info.mChatRoomMember;
// 清除动画
ivHalo.setBackground(null);
ivHalo.clearAnimation();
// 清除头饰
ivHeadWear.setImageDrawable(null);
ivHeadWear.clearAnimation();
if (ivCharmLevelTag != null) {
ivCharmLevelTag.setVisibility(View.GONE);
}
GlideApp.with(context).clear(ivHeadWear);
//设置一个tag用于解决第一次进房间空坑位显示头饰的问题
ivHeadWear.setTag(R.id.mic_item_head_wear, null);
if (roomMicInfo == null) {
ivUpImage.setVisibility(View.VISIBLE);
ivLockImage.setVisibility(View.GONE);
@@ -174,9 +166,9 @@ public abstract class BaseMicroViewAdapter extends RecyclerView.Adapter<Recycler
return;
}
//显示,先展示人,无视坑的锁
if (chatRoomMember != null) {
LogUtils.d(chatRoomMember.toString());
ivLockImage.setVisibility(View.GONE);
ivMuteImage.setVisibility(roomMicInfo.isMicMute() ? View.VISIBLE : View.GONE);
@@ -188,12 +180,21 @@ public abstract class BaseMicroViewAdapter extends RecyclerView.Adapter<Recycler
// 加载贵族
updateNobleView(chatRoomMember);
} else {
ivHeadWear.setVisibility(View.GONE);
ivUpImage.setVisibility(View.VISIBLE);
ivAvatar.setVisibility(View.GONE);
ivCharmLevelTag.setVisibility(View.GONE);
setDefalutText(position);
}
} else {
// 清除动画
ivHalo.setBackground(null);
ivHalo.clearAnimation();
// 清除头饰
GlideApp.with(context).clear(ivHeadWear);
ivHeadWear.clearAnimation();
ivHeadWear.setImageDrawable(null);
ivHeadWear.setVisibility(View.GONE);
//锁坑
ivMuteImage.setVisibility(roomMicInfo.isMicMute() ? View.VISIBLE : View.GONE);
if (roomMicInfo.isMicLock()) {
@@ -250,14 +251,20 @@ public abstract class BaseMicroViewAdapter extends RecyclerView.Adapter<Recycler
}
String nobleHeadWear = (String) NobleUtil.getResource(NobleResourceType.KEY_HEAD_WEAR, chatRoomMember);
if (!TextUtils.isEmpty(headWear)) {
// 头饰
ivHeadWear.setVisibility(View.VISIBLE);
ivHeadWear.setTag(R.id.mic_item_head_wear, headWear);
NobleUtil.loadMicHeadWear(headWear, ivHeadWear, R.id.mic_item_head_wear, headWear);
//只有头饰发生改变才更新,防止闪烁
if (!headWear.equals(ivHeadWear.getTag(R.id.mic_item_head_wear))) {
ivHeadWear.setTag(R.id.mic_item_head_wear, headWear);
NobleUtil.loadMicHeadWear(headWear, ivHeadWear, R.id.mic_item_head_wear, headWear);
}
} else if (!TextUtils.isEmpty(nobleHeadWear)) {
// 头饰
ivHeadWear.setVisibility(View.VISIBLE);
NobleUtil.loadResource(nobleHeadWear, ivHeadWear);
}
else {
ivHeadWear.setVisibility(View.GONE);
}
}
@Override

View File

@@ -270,6 +270,7 @@ public class AvRoomPresenter extends BaseMvpPresenter<IAvRoomView> {
JsonObject valueJsonObj = jsonParser.parse(entry.value).getAsJsonObject();
if (valueJsonObj != null) {
chatRoomMember = mGson.fromJson(valueJsonObj,MicMemberInfo.class);
accounts.add(chatRoomMember.getAccount());
roomQueueInfo.mChatRoomMember = chatRoomMember;
}
AvRoomDataManager.get().mMicQueueMemberMap.put(Integer.valueOf(entry.key), roomQueueInfo);

View File

@@ -6,12 +6,13 @@ import java.util.Map;
import java.util.Objects;
import lombok.Data;
import lombok.ToString;
/**
* Created by
* on 2017/10/25.
*/
@ToString
@Data
public class MicMemberInfo {
@SerializedName("uid")