私聊体验优化

This commit is contained in:
huangjian
2023-02-09 19:40:18 +08:00
parent 39b7efd70e
commit 98f6b12a5b
4 changed files with 56 additions and 52 deletions

View File

@@ -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) {

View File

@@ -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");
}

View File

@@ -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}" />

View File

@@ -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"