私聊体验优化
This commit is contained in:
@@ -128,7 +128,6 @@ public class InputPanel implements IEmoticonSelectedListener, IAudioRecordCallba
|
||||
protected EmoticonPickerView emoticonPickerView; // 贴图表情控件
|
||||
// 语音
|
||||
protected AudioRecorder audioMessageHelper;
|
||||
private int unfilledHeight = 0;
|
||||
private AutoHidePanelRecyclerView messageListView;
|
||||
private SessionCustomization customization;
|
||||
private Chronometer time;
|
||||
@@ -332,11 +331,16 @@ public class InputPanel implements IEmoticonSelectedListener, IAudioRecordCallba
|
||||
StatisticsProtocol.EVENT_CHAT_TOOLBAR_PHOTO_CLICK,
|
||||
"聊天对话框工具栏相册点击");
|
||||
emojiButtonInInputBar.setImageResource(R.drawable.nim_message_input_emotion_pressed);
|
||||
((BaseActivity)container.activity).checkPermission(
|
||||
() -> initPreviewPhotos(),
|
||||
0,
|
||||
Manifest.permission.READ_EXTERNAL_STORAGE
|
||||
);
|
||||
if (container.activity instanceof BaseActivity) {
|
||||
((BaseActivity) container.activity).checkPermission(
|
||||
() -> initPreviewPhotos(),
|
||||
0,
|
||||
Manifest.permission.READ_EXTERNAL_STORAGE
|
||||
);
|
||||
} else {
|
||||
initPreviewPhotos();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -378,7 +382,7 @@ public class InputPanel implements IEmoticonSelectedListener, IAudioRecordCallba
|
||||
.addContentScrollMeasurer(new ContentScrollMeasurer() {
|
||||
@Override
|
||||
public int getScrollDistance(int defaultDistance) {
|
||||
return defaultDistance - unfilledHeight;
|
||||
return defaultDistance - getUnfilledHeight();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -389,22 +393,6 @@ public class InputPanel implements IEmoticonSelectedListener, IAudioRecordCallba
|
||||
.logTrack(false)//output log
|
||||
.build();
|
||||
messageListView.setPanelSwitchHelper(mHelper);
|
||||
messageListView.addOnScrollListener(new RecyclerView.OnScrollListener() {
|
||||
@Override
|
||||
public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
|
||||
super.onScrolled(recyclerView, dx, dy);
|
||||
RecyclerView.LayoutManager layoutManager = recyclerView.getLayoutManager();
|
||||
if (layoutManager instanceof LinearLayoutManager) {
|
||||
int childCount = recyclerView.getChildCount();
|
||||
if (childCount > 0) {
|
||||
View lastChildView = recyclerView.getChildAt(childCount - 1);
|
||||
int bottom = lastChildView.getBottom();
|
||||
int listHeight = messageListView.getHeight() - messageListView.getPaddingBottom();
|
||||
unfilledHeight = listHeight - bottom;
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
if (inRoom) {
|
||||
container.activity.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN | WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
|
||||
}
|
||||
@@ -412,6 +400,14 @@ public class InputPanel implements IEmoticonSelectedListener, IAudioRecordCallba
|
||||
|
||||
}
|
||||
|
||||
private int getUnfilledHeight() {
|
||||
int height = 0;
|
||||
for (int i = 0; i < messageListView.getChildCount(); i++) {
|
||||
height += messageListView.getChildAt(i).getHeight();
|
||||
}
|
||||
return Math.max(messageListView.getHeight() - height, 0);
|
||||
}
|
||||
|
||||
@SuppressLint("CheckResult")
|
||||
private void initPreviewPhotos() {
|
||||
if (photoPreviewAdapter != null) {
|
||||
|
@@ -1,11 +1,19 @@
|
||||
package com.mango.moshen.ui.im.recent.holder;
|
||||
|
||||
import static android.view.View.GONE;
|
||||
import static android.view.View.INVISIBLE;
|
||||
import static android.view.View.VISIBLE;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.graphics.drawable.AnimationDrawable;
|
||||
import android.os.Handler;
|
||||
import android.text.TextUtils;
|
||||
import android.view.View;
|
||||
|
||||
import com.mango.core.user.UserModel;
|
||||
import com.mango.core.user.bean.UserInfo;
|
||||
import com.mango.core.utils.SystemUidUtil;
|
||||
import com.mango.moshen.R;
|
||||
import com.mango.moshen.vip.VipHelper;
|
||||
import com.netease.nim.uikit.api.NimUIKit;
|
||||
import com.netease.nim.uikit.common.ui.draggablebubbles.BubbleMessageTouchListener;
|
||||
import com.netease.nim.uikit.common.ui.draggablebubbles.MessageBubbleView;
|
||||
@@ -14,22 +22,14 @@ import com.netease.nim.uikit.common.ui.recyclerview.adapter.BaseQuickAdapter;
|
||||
import com.netease.nim.uikit.common.ui.recyclerview.holder.BaseViewHolder;
|
||||
import com.netease.nimlib.sdk.msg.constant.SessionTypeEnum;
|
||||
import com.netease.nimlib.sdk.msg.model.RecentContact;
|
||||
import com.mango.moshen.R;
|
||||
import com.mango.moshen.ui.utils.ImageLoadUtils;
|
||||
import com.mango.moshen.vip.VipHelper;
|
||||
import com.mango.core.level.UserLevelVo;
|
||||
import com.mango.core.user.UserModel;
|
||||
import com.mango.core.utils.SystemUidUtil;
|
||||
|
||||
import static android.view.View.GONE;
|
||||
import static android.view.View.INVISIBLE;
|
||||
import static android.view.View.VISIBLE;
|
||||
|
||||
/**
|
||||
* @author Administrator
|
||||
*/
|
||||
public class CommonRecentViewHolder extends RecentViewHolder {
|
||||
|
||||
private UserInfo userInfo;
|
||||
|
||||
public CommonRecentViewHolder(BaseQuickAdapter adapter) {
|
||||
super(adapter);
|
||||
}
|
||||
@@ -130,29 +130,37 @@ public class CommonRecentViewHolder extends RecentViewHolder {
|
||||
mIvNobleHeadWear.setVisibility(INVISIBLE);
|
||||
mIvNobleLevel.setVisibility(GONE);
|
||||
mIvNobleBadge.setVisibility(GONE);
|
||||
ivUserGender.setVisibility(GONE);
|
||||
ivVipIcon.setVisibility(GONE);
|
||||
if (recent == null) return;
|
||||
String contactId = recent.getContactId();
|
||||
//去除小秘书,系统消息
|
||||
if (SystemUidUtil.isSystemUid(contactId)) {
|
||||
ivUserGender.setVisibility(GONE);
|
||||
ivVipIcon.setVisibility(GONE);
|
||||
return;
|
||||
}
|
||||
|
||||
UserModel.get()
|
||||
.getUserInfo(Long.parseLong(contactId))
|
||||
.subscribe(userInfo -> {
|
||||
if (userInfo.getUid() != Long.parseLong(contactId)) return;
|
||||
ivUserGender.setVisibility(VISIBLE);
|
||||
ivVipIcon.setVisibility(VISIBLE);
|
||||
if (userInfo.getGender() == 1) {
|
||||
ivUserGender.setImageResource(R.drawable.ic_gender_male);
|
||||
} else {
|
||||
ivUserGender.setImageResource(R.drawable.ic_gender_female);
|
||||
}
|
||||
VipHelper.loadVipIcon(ivVipIcon, userInfo.getUserVipInfoVO());
|
||||
VipHelper.loadVipNickColor(tvNickname, userInfo.getUserVipInfoVO(), "#FF333333");
|
||||
});
|
||||
if (userInfo != null && userInfo.getUid() == Long.parseLong(contactId)) {
|
||||
setupUserInfo(userInfo);
|
||||
} else {
|
||||
UserModel.get()
|
||||
.getUserInfo(Long.parseLong(contactId))
|
||||
.subscribe(userInfo -> {
|
||||
if (userInfo.getUid() != Long.parseLong(contactId)) return;
|
||||
setupUserInfo(userInfo);
|
||||
this.userInfo = userInfo;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
private void setupUserInfo(UserInfo userInfo) {
|
||||
ivUserGender.setVisibility(VISIBLE);
|
||||
if (userInfo.getGender() == 1) {
|
||||
ivUserGender.setImageResource(R.drawable.ic_gender_male);
|
||||
} else {
|
||||
ivUserGender.setImageResource(R.drawable.ic_gender_female);
|
||||
}
|
||||
VipHelper.loadVipIcon(ivVipIcon, userInfo.getUserVipInfoVO());
|
||||
VipHelper.loadVipNickColor(tvNickname, userInfo.getUserVipInfoVO(), "#FF333333");
|
||||
}
|
||||
|
||||
|
||||
|
@@ -133,7 +133,7 @@
|
||||
android:paddingStart="3dp"
|
||||
android:paddingEnd="3dp"
|
||||
android:text="@{item.countText}"
|
||||
android:textColor="@color/white_transparent_50"
|
||||
android:textColor="@{item.isPrivateChat? @color/text_hint_555574 : @color/white}"
|
||||
android:textSize="@dimen/sp_9"
|
||||
android:visibility="@{item.isKnap ? View.VISIBLE : View.GONE}" />
|
||||
|
||||
|
@@ -52,7 +52,7 @@
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/iv_vip_icon"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_width="18dp"
|
||||
android:layout_height="15dp"
|
||||
android:adjustViewBounds="true"
|
||||
android:visibility="gone"
|
||||
|
Reference in New Issue
Block a user