坑位刷新逻辑优化(头饰闪烁问题)
This commit is contained in:
@@ -1,13 +1,16 @@
|
||||
package com.yizhuan.erban.avroom.adapter;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import android.text.TextUtils;
|
||||
import android.view.View;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.alibaba.security.biometrics.build.G;
|
||||
import com.coorchice.library.utils.LogUtils;
|
||||
import com.netease.nim.uikit.common.util.string.StringUtil;
|
||||
import com.netease.nim.uikit.support.glide.GlideApp;
|
||||
import com.netease.nimlib.sdk.chatroom.model.ChatRoomMember;
|
||||
@@ -37,11 +40,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) {
|
||||
@@ -87,11 +89,6 @@ public abstract class BaseMicroViewAdapter extends RecyclerView.Adapter<Recycler
|
||||
CircleImageView ivAvatar;
|
||||
ImageView ivHalo;
|
||||
TextView tvNumber;
|
||||
|
||||
TextView tvCharmValue;
|
||||
View viewCenterOfCharm;
|
||||
View llCharmClick;
|
||||
|
||||
ImageView ivCharmLevelTag;
|
||||
|
||||
NormalMicroViewHolder(View itemView) {
|
||||
@@ -126,7 +123,7 @@ public abstract class BaseMicroViewAdapter extends RecyclerView.Adapter<Recycler
|
||||
ivMuteImage.setVisibility(View.GONE);
|
||||
ivAvatar.setVisibility(View.GONE);
|
||||
tvNick.setVisibility(View.INVISIBLE);
|
||||
if (ivCharmLevelTag !=null){
|
||||
if (ivCharmLevelTag != null) {
|
||||
ivCharmLevelTag.setVisibility(View.GONE);
|
||||
}
|
||||
}
|
||||
@@ -136,18 +133,9 @@ public abstract class BaseMicroViewAdapter extends RecyclerView.Adapter<Recycler
|
||||
this.position = position;
|
||||
RoomMicInfo roomMicInfo = info.mRoomMicInfo;
|
||||
ChatRoomMember chatRoomMember = info.mChatRoomMember;
|
||||
// 清除动画
|
||||
ivHalo.setBackground(null);
|
||||
ivHalo.clearAnimation();
|
||||
// 清除头饰
|
||||
ivHeadWear.setImageDrawable(null);
|
||||
ivHeadWear.clearAnimation();
|
||||
if (ivCharmLevelTag !=null){
|
||||
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);
|
||||
@@ -167,26 +155,27 @@ public abstract class BaseMicroViewAdapter extends RecyclerView.Adapter<Recycler
|
||||
if (!TextUtils.isEmpty(chatRoomMember.getAccount()) && Long.valueOf(chatRoomMember.getAccount()) > 0) {
|
||||
ivUpImage.setVisibility(View.GONE);
|
||||
ivAvatar.setVisibility(View.VISIBLE);
|
||||
// tvNick.setText(StringUtil.removeBlanks(chatRoomMember.getNick()));
|
||||
// tvNick.setTextColor(context.getResources().getColor(R.color.white));
|
||||
// if (AvRoomDataManager.get().isOpenPKMode()) {
|
||||
// ViewAdapter.setViewBackground(tvNick, R.color.black_transparent_20, 50, 0, 0);
|
||||
// } else {
|
||||
// int nickBgColor = context.getResources().getColor(
|
||||
// info.gender == 1 ? R.color.color_male_16AEFD : R.color.color_female_FE3F77);
|
||||
// ViewAdapter.setViewBackground(tvNick, nickBgColor, 50, 0, 0);
|
||||
// }
|
||||
setSelectText(position, chatRoomMember.getNick(), info.gender);
|
||||
ImageLoadUtils.loadAvatar(BasicConfig.INSTANCE.getAppContext(), chatRoomMember.getAvatar(), ivAvatar);
|
||||
// 加载贵族
|
||||
updateNobleView(chatRoomMember);
|
||||
} else {
|
||||
ivHeadWear.setVisibility(View.GONE);
|
||||
ivUpImage.setVisibility(View.VISIBLE);
|
||||
ivAvatar.setVisibility(View.GONE);
|
||||
ivCharmLevelTag.setVisibility(View.GONE);
|
||||
setDefalutText(position);
|
||||
}
|
||||
} else {
|
||||
LogUtils.d(position + "chatRoomMember==null");
|
||||
// 清除头饰
|
||||
ivHeadWear.setVisibility(View.GONE);
|
||||
ivHeadWear.setImageDrawable(null);
|
||||
GlideApp.with(context).clear(ivHeadWear);
|
||||
ivHeadWear.setTag(R.id.mic_item_head_wear, null);
|
||||
// 清除动画
|
||||
ivHalo.setBackground(null);
|
||||
ivHalo.clearAnimation();
|
||||
//锁坑
|
||||
ivMuteImage.setVisibility(roomMicInfo.isMicMute() ? View.VISIBLE : View.GONE);
|
||||
if (roomMicInfo.isMicLock()) {
|
||||
@@ -202,16 +191,11 @@ public abstract class BaseMicroViewAdapter extends RecyclerView.Adapter<Recycler
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
protected void setDefalutText(int index) {
|
||||
tvNick.setTextColor(context.getResources().getColor(R.color.white_transparent_30));
|
||||
// ViewAdapter.setViewBackground(
|
||||
// tvNick, context.getResources().getColor(R.color.white_transparent_12), 50, 0, 0);
|
||||
// tvNick.setText(String.format(context.getString(R.string.number_mic_position), index + 1));
|
||||
tvNick.setText("号麦位");
|
||||
|
||||
if (tvNumber != null) {
|
||||
tvNumber.setBackgroundResource(R.drawable.icon_bg_number_default);
|
||||
tvNumber.setTextColor(context.getResources().getColor(R.color.white_transparent_30));
|
||||
@@ -225,10 +209,6 @@ public abstract class BaseMicroViewAdapter extends RecyclerView.Adapter<Recycler
|
||||
tvNick.setTextColor(context.getResources().getColor(R.color.white));
|
||||
|
||||
if (tvNumber != null) {
|
||||
// tvNumber.setBackgroundResource(gender == 1 ? R.drawable.bg_number_male : R.drawable.bg_number_female);
|
||||
// tvNumber.setTextColor(context.getResources().getColor(R.color.white));
|
||||
// tvNumber.setText(String.valueOf(index + 1));
|
||||
|
||||
if (AvRoomDataManager.get().isOpenPKMode()) { // pk模式不加性别背景
|
||||
tvNumber.setBackgroundResource(R.drawable.icon_bg_number_default);
|
||||
tvNumber.setTextColor(context.getResources().getColor(R.color.white_transparent_30));
|
||||
@@ -243,15 +223,21 @@ public abstract class BaseMicroViewAdapter extends RecyclerView.Adapter<Recycler
|
||||
|
||||
private void updateNobleView(ChatRoomMember chatRoomMember) {
|
||||
String nobleHeadWear = (String) NobleUtil.getResource(NobleResourceType.KEY_HEAD_WEAR, chatRoomMember);
|
||||
String headWear=NobleUtil.getHeadResource(HeadWearInfo.EFFECT, chatRoomMember)!=null?NobleUtil.getHeadResource(HeadWearInfo.EFFECT, chatRoomMember):NobleUtil.getHeadResource(HeadWearInfo.PIC, chatRoomMember);
|
||||
String headWear = NobleUtil.getHeadResource(HeadWearInfo.EFFECT, chatRoomMember) != null ? NobleUtil.getHeadResource(HeadWearInfo.EFFECT, chatRoomMember) : NobleUtil.getHeadResource(HeadWearInfo.PIC, 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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -268,7 +254,7 @@ public abstract class BaseMicroViewAdapter extends RecyclerView.Adapter<Recycler
|
||||
} else if (v.getId() == R.id.tv_room_desc || v.getId() == R.id.tv_room_type
|
||||
|| v.getId() == R.id.iv_room_can_edit) {
|
||||
onMicroItemClickListener.onRoomSettingsClick();
|
||||
}else if (v.getId() == R.id.iv_red_package) {
|
||||
} else if (v.getId() == R.id.iv_red_package) {
|
||||
if (CommonUtils.isFastDoubleClick(800)) return;
|
||||
onMicroItemClickListener.onRedPackageClick(position, info.mChatRoomMember);
|
||||
}
|
||||
@@ -280,6 +266,7 @@ public abstract class BaseMicroViewAdapter extends RecyclerView.Adapter<Recycler
|
||||
}
|
||||
|
||||
public abstract void bindToRecyclerView(RecyclerView recyclerView);
|
||||
|
||||
public abstract void dispose();
|
||||
|
||||
@Override
|
||||
|
||||
@@ -24,6 +24,7 @@ import android.widget.RelativeLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.coorchice.library.SuperTextView;
|
||||
import com.coorchice.library.utils.LogUtils;
|
||||
import com.netease.nimlib.sdk.chatroom.model.ChatRoomMember;
|
||||
import com.yizhuan.erban.R;
|
||||
import com.yizhuan.erban.common.widget.CircleImageView;
|
||||
@@ -47,6 +48,8 @@ import com.yizhuan.xchat_android_core.user.bean.UserInfo;
|
||||
import com.yizhuan.xchat_android_core.utils.ActivityUtil;
|
||||
import com.yizhuan.xchat_android_library.utils.config.BasicConfig;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
/**
|
||||
* @author xiaoyu
|
||||
* @date 2017/12/18
|
||||
@@ -84,8 +87,9 @@ public class MicroViewAdapter extends BaseMicroViewAdapter {
|
||||
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
|
||||
public RecyclerView.ViewHolder onCreateViewHolder(@NotNull ViewGroup parent, int viewType) {
|
||||
View item;
|
||||
if (viewType == TYPE_BOSS) {
|
||||
item = LayoutInflater.from(parent.getContext()).
|
||||
|
||||
@@ -28,7 +28,6 @@
|
||||
android:layout_height="@dimen/dp_room_normal_mic_radius"
|
||||
android:layout_gravity="center"
|
||||
android:visibility="gone"
|
||||
|
||||
tools:background="#FF0"
|
||||
tools:visibility="visible" />
|
||||
|
||||
|
||||
Reference in New Issue
Block a user