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