UPDATE聊天页面改版UI
This commit is contained in:
@@ -0,0 +1,361 @@
|
||||
package com.yunbao.main.activity;
|
||||
|
||||
import android.Manifest;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.graphics.Color;
|
||||
import android.os.Build;
|
||||
import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.WindowManager;
|
||||
import android.view.animation.Animation;
|
||||
import android.view.animation.AnimationUtils;
|
||||
import android.view.inputmethod.InputMethodManager;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.constraintlayout.widget.ConstraintLayout;
|
||||
import androidx.core.app.ActivityCompat;
|
||||
import androidx.core.content.ContextCompat;
|
||||
import androidx.fragment.app.FragmentManager;
|
||||
import androidx.fragment.app.FragmentTransaction;
|
||||
|
||||
import com.blankj.utilcode.util.GsonUtils;
|
||||
import com.yunbao.common.activity.AbsActivity;
|
||||
import com.yunbao.common.activity.SelectImageActivity;
|
||||
import com.yunbao.common.bean.IMLoginModel;
|
||||
import com.yunbao.common.bean.ImageEntity;
|
||||
import com.yunbao.common.bean.NoviceInstructorModel;
|
||||
import com.yunbao.common.event.PDChatInputModeEvent;
|
||||
import com.yunbao.common.interfaces.OnSendMessageListener;
|
||||
import com.yunbao.common.manager.IMLoginManager;
|
||||
import com.yunbao.common.manager.NoviceInstructorManager;
|
||||
import com.yunbao.common.manager.imrongcloud.MessageIMManager;
|
||||
import com.yunbao.common.message.content.MessageChatTipsContent;
|
||||
import com.yunbao.common.utils.DpUtil;
|
||||
import com.yunbao.common.utils.ToastUtil;
|
||||
import com.yunbao.live.bean.SearchUserBean;
|
||||
import com.yunbao.live.dialog.MenuPopuwWindow;
|
||||
import com.yunbao.live.event.InputPanelViewHolderEvent;
|
||||
import com.yunbao.live.utils.WindowSoftModeAdjustResizeExecutor;
|
||||
import com.yunbao.live.views.InputPanelViewHolder;
|
||||
import com.yunbao.live.views.PDLiveConversationFragment;
|
||||
import com.yunbao.main.R;
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
import org.greenrobot.eventbus.Subscribe;
|
||||
import org.greenrobot.eventbus.ThreadMode;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import io.rong.imkit.IMCenter;
|
||||
import io.rong.imkit.conversation.extension.InputMode;
|
||||
import io.rong.imkit.userinfo.RongUserInfoManager;
|
||||
import io.rong.imlib.RongIMClient;
|
||||
import io.rong.imlib.model.Conversation;
|
||||
import io.rong.imlib.model.UserInfo;
|
||||
|
||||
/**
|
||||
* 聊天会话界面
|
||||
*/
|
||||
public class PDLiveConversationActivity extends AbsActivity implements View.OnClickListener {
|
||||
private PDLiveConversationFragment conversationFragment;
|
||||
private PDLiveConversationActivity mContext;
|
||||
private InputPanelViewHolder inputPanel;
|
||||
private TextView titleView;
|
||||
private ImageView imgMore, imBack;
|
||||
private boolean isAdmin = false;
|
||||
private final int PERMISSION_REQUEST_CODE = 0;
|
||||
private final int SELECT_VIDEO_REQUEST = 0x0002;
|
||||
private final int SELECT_IMAGE_REQUEST = 0x0001;
|
||||
private ArrayList<ImageEntity> mSelectImages = new ArrayList<>();
|
||||
private String targetId = "";
|
||||
private View card;
|
||||
private View mContainer;
|
||||
|
||||
|
||||
@Override
|
||||
protected int getLayoutId() {
|
||||
return R.layout.activity_conversation;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void main() {
|
||||
super.main();
|
||||
EventBus.getDefault().register(this);
|
||||
mContext = this;
|
||||
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
|
||||
initView();
|
||||
initData();
|
||||
WindowSoftModeAdjustResizeExecutor.assistActivity(this);
|
||||
//设置会话界面操作监听器
|
||||
MessageIMManager.get(this).addConversationClickListener();
|
||||
}
|
||||
|
||||
private void hideUserCard() {
|
||||
if (card.getTag() != null) return;
|
||||
card.setTag("fold");
|
||||
Animation animation;
|
||||
animation = AnimationUtils.loadAnimation(mContext, R.anim.anim_chat_fold_card_hide);
|
||||
animation.setAnimationListener(new Animation.AnimationListener() {
|
||||
@Override
|
||||
public void onAnimationStart(Animation animation) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAnimationEnd(Animation animation) {
|
||||
card.setVisibility(View.GONE);
|
||||
ConstraintLayout.LayoutParams params = (ConstraintLayout.LayoutParams) mContainer.getLayoutParams();
|
||||
params.topToTop = ConstraintLayout.LayoutParams.PARENT_ID;
|
||||
params.topMargin = DpUtil.dp2px(75);
|
||||
mContainer.setLayoutParams(params);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAnimationRepeat(Animation animation) {
|
||||
|
||||
}
|
||||
});
|
||||
card.startAnimation(animation);
|
||||
}
|
||||
|
||||
private void showUserCard() {
|
||||
if (card.getTag() == null) return;
|
||||
card.setTag(null);
|
||||
Animation animation;
|
||||
animation = AnimationUtils.loadAnimation(mContext, R.anim.anim_chat_fold_card_show);
|
||||
animation.setAnimationListener(new Animation.AnimationListener() {
|
||||
@Override
|
||||
public void onAnimationStart(Animation animation) {
|
||||
card.setVisibility(View.VISIBLE);
|
||||
ConstraintLayout.LayoutParams params = (ConstraintLayout.LayoutParams) mContainer.getLayoutParams();
|
||||
params.topToBottom = R.id.include4;
|
||||
params.topMargin = DpUtil.dp2px(-30);
|
||||
params.topToTop = ConstraintLayout.LayoutParams.UNSET;
|
||||
mContainer.setLayoutParams(params);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAnimationEnd(Animation animation) {
|
||||
ConstraintLayout.LayoutParams params = (ConstraintLayout.LayoutParams) mContainer.getLayoutParams();
|
||||
params.topToBottom = R.id.include4;
|
||||
params.topMargin = DpUtil.dp2px(-30);
|
||||
params.topToTop = ConstraintLayout.LayoutParams.UNSET;
|
||||
mContainer.setLayoutParams(params);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAnimationRepeat(Animation animation) {
|
||||
|
||||
}
|
||||
});
|
||||
card.startAnimation(animation);
|
||||
}
|
||||
|
||||
/**
|
||||
* 数据的设置
|
||||
*/
|
||||
private void initData() {
|
||||
targetId = getIntent().getStringExtra("targetId");
|
||||
NoviceInstructorModel model = NoviceInstructorManager.get(this).getNoviceInstructor();
|
||||
|
||||
//绑定聊天用户id
|
||||
inputPanel.setTargetId(targetId);
|
||||
//获取用户信息
|
||||
UserInfo userInfo = RongUserInfoManager.getInstance().getUserInfo(targetId);
|
||||
if (null != userInfo) {
|
||||
titleView.setText(userInfo.getName());
|
||||
if (!TextUtils.isEmpty(userInfo.getExtra())) {
|
||||
SearchUserBean userBean = GsonUtils.fromJson(userInfo.getExtra(), SearchUserBean.class);
|
||||
//新手指导员
|
||||
if (!TextUtils.isEmpty(userBean.getIs_admin()) && TextUtils.equals(userBean.getIs_admin(), "1")) {
|
||||
if (model != null && !TextUtils.isEmpty(model.getMsgZdySendText())) {
|
||||
inputPanel.setPresetInformation(model.getMsgZdySendText());
|
||||
}
|
||||
isAdmin = true;
|
||||
imgMore.setVisibility(View.GONE);
|
||||
} else {//非指导员
|
||||
isAdmin = false;
|
||||
imgMore.setVisibility(View.VISIBLE);
|
||||
}
|
||||
inputPanel.setAdmin(isAdmin);
|
||||
Log.e("PDLiveConversation", userInfo.getExtra());
|
||||
}
|
||||
} else {
|
||||
titleView.setText("系統消息");
|
||||
inputPanel.setVisibility(View.GONE);
|
||||
}
|
||||
getDraft();
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 初始化布局
|
||||
*/
|
||||
private void initView() {
|
||||
try {
|
||||
// 添加会话界面
|
||||
conversationFragment = new PDLiveConversationFragment();
|
||||
FragmentManager manager = getSupportFragmentManager();
|
||||
FragmentTransaction transaction = manager.beginTransaction();
|
||||
transaction.replace(R.id.container, conversationFragment);
|
||||
transaction.commit();
|
||||
inputPanel = findViewById(R.id.input_panel);
|
||||
titleView = findViewById(R.id.titleView);
|
||||
imgMore = findViewById(R.id.img_more);
|
||||
imBack = findViewById(R.id.btn_back);
|
||||
imgMore.setOnClickListener(this);
|
||||
imBack.setOnClickListener(this);
|
||||
card = findViewById(R.id.userCard);
|
||||
card.setBackgroundColor(Color.parseColor("#00000000"));
|
||||
mContainer = findViewById(R.id.container);
|
||||
inputPanel.addMediaMessageCallback(new InputPanelViewHolder.MediaMessageCallback() {
|
||||
@Override
|
||||
public void choosePic(int intoIndex) {
|
||||
jumpPic(intoIndex);
|
||||
}
|
||||
});
|
||||
findViewById(R.id.btn_fold).setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
if (card.getTag() == null) {
|
||||
hideUserCard();
|
||||
} else {
|
||||
showUserCard();
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
int id = v.getId();
|
||||
//菜单
|
||||
if (id == R.id.img_more) {
|
||||
IMLoginModel model = IMLoginManager.get(mContext).getUserInfo();
|
||||
new MenuPopuwWindow(mContext).setIsAdmin(model.getIsAdmin(), targetId).show(imgMore);
|
||||
} else if (id == R.id.btn_back) {//返回
|
||||
onBackPressed();
|
||||
}
|
||||
}
|
||||
|
||||
//intoIndex 1=调用相机,2=照片选取,3=视频选取
|
||||
public void jumpPic(int intoIndex) {
|
||||
String permission1 = Manifest.permission.READ_EXTERNAL_STORAGE;
|
||||
String permission2 = Manifest.permission.WRITE_EXTERNAL_STORAGE;
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
|
||||
permission1 = Manifest.permission.READ_MEDIA_IMAGES;
|
||||
permission2 = Manifest.permission.READ_MEDIA_VIDEO;
|
||||
}
|
||||
|
||||
//选择图片
|
||||
int isPermission1 = ContextCompat.checkSelfPermission(mContext, permission1);
|
||||
int isPermission2 = ContextCompat.checkSelfPermission(mContext, permission2);
|
||||
if (isPermission1 == PackageManager.PERMISSION_GRANTED && isPermission2 == PackageManager.PERMISSION_GRANTED) {
|
||||
startActivity(intoIndex);
|
||||
} else {
|
||||
//申请权限
|
||||
ActivityCompat.requestPermissions(mContext, new String[]{permission1,
|
||||
permission2}, PERMISSION_REQUEST_CODE);
|
||||
}
|
||||
}
|
||||
|
||||
private void startActivity(int intoIndex) {
|
||||
mSelectImages.clear();
|
||||
Intent intent = new Intent(mContext, SelectImageActivity.class);
|
||||
intent.putParcelableArrayListExtra("selected_images", mSelectImages);
|
||||
intent.putExtra("intoIndex", intoIndex);
|
||||
if (intoIndex == 3) {
|
||||
startActivityForResult(intent, SELECT_VIDEO_REQUEST);
|
||||
} else {
|
||||
startActivityForResult(intent, SELECT_IMAGE_REQUEST);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取草稿箱信息系
|
||||
*/
|
||||
private void getDraft() {
|
||||
RongIMClient.getInstance().getTextMessageDraft(Conversation.ConversationType.PRIVATE, targetId, new RongIMClient.ResultCallback<String>() {
|
||||
@Override
|
||||
public void onSuccess(String s) {
|
||||
if (!TextUtils.isEmpty(s))
|
||||
inputPanel.setPresetInformation(s);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(RongIMClient.ErrorCode errorCode) {
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||
super.onActivityResult(requestCode, resultCode, data);
|
||||
if (resultCode == RESULT_OK) {
|
||||
if (requestCode == SELECT_IMAGE_REQUEST && data != null) {
|
||||
ArrayList<ImageEntity> selectImages = data.getParcelableArrayListExtra(SelectImageActivity.EXTRA_RESULT);
|
||||
for (ImageEntity entity : selectImages) {
|
||||
inputPanel.sendImageFile(entity.getPath());
|
||||
}
|
||||
|
||||
} else if (requestCode == SELECT_VIDEO_REQUEST && data != null) {
|
||||
ArrayList<ImageEntity> selectImages = data.getParcelableArrayListExtra(SelectImageActivity.EXTRA_RESULT);
|
||||
for (ImageEntity entity : selectImages) {
|
||||
inputPanel.sendVideoFile(entity.getPath());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDestroy() {
|
||||
super.onDestroy();
|
||||
//获取输入框信息存进输入框
|
||||
String content = inputPanel.getPresetInformation();
|
||||
if (!TextUtils.isEmpty(content)) {
|
||||
IMCenter.getInstance().saveTextMessageDraft(Conversation.ConversationType.PRIVATE, targetId, content, null);
|
||||
}
|
||||
|
||||
EventBus.getDefault().unregister(this);
|
||||
}
|
||||
|
||||
//消息中心
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
public void onMessageIMEvent(String event) {
|
||||
if (!TextUtils.isEmpty(event)) {
|
||||
titleView.setText(event);
|
||||
}
|
||||
}
|
||||
|
||||
//消息中心
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
public void onInputPanelViewHolderEvent(InputPanelViewHolderEvent event) {
|
||||
// ((InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(this.getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
|
||||
inputPanel.hidePluginList();
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
public void onInputPanelViewChangeEvent(PDChatInputModeEvent event) {
|
||||
if (event.getInputMode() != InputMode.NormalMode) {
|
||||
hideUserCard();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -7,7 +7,6 @@ import android.content.ClipData;
|
||||
import android.content.ClipboardManager;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.graphics.Color;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
@@ -19,7 +18,6 @@ import com.alibaba.fastjson.JSONObject;
|
||||
import com.blankj.utilcode.util.GsonUtils;
|
||||
import com.google.gson.Gson;
|
||||
import com.lxj.xpopup.XPopup;
|
||||
import com.lxj.xpopup.interfaces.OnSelectListener;
|
||||
import com.yunbao.common.bean.IMLoginModel;
|
||||
import com.yunbao.common.bean.VipModel;
|
||||
import com.yunbao.common.http.CommonHttpUtil;
|
||||
@@ -31,11 +29,10 @@ import com.yunbao.common.utils.RouteUtil;
|
||||
import com.yunbao.common.utils.ToastUtil;
|
||||
import com.yunbao.common.utils.WordUtil;
|
||||
import com.yunbao.live.activity.PDLIiveChatActivity;
|
||||
import com.yunbao.live.activity.PDLiveConversationActivity;
|
||||
import com.yunbao.main.activity.PDLiveConversationActivity;
|
||||
import com.yunbao.live.bean.SearchUserBean;
|
||||
import com.yunbao.live.dialog.PDLIiveChatConversationFragment;
|
||||
import com.yunbao.main.activity.PDLiveConversationListActivity;
|
||||
import com.yunbao.main.dialog.ConversationPopuwWindow;
|
||||
import com.yunbao.main.dialog.MsgChatClickDialog;
|
||||
import com.yunbao.main.utils.PDLiveCustomConversationProvider;
|
||||
import com.yunbao.main.utils.PDLiveMessageProcessor;
|
||||
@@ -61,6 +58,8 @@ import io.rong.imlib.model.Conversation;
|
||||
import io.rong.imlib.model.UserInfo;
|
||||
import io.rong.sight.SightExtensionModule;
|
||||
import com.yunbao.main.R;
|
||||
import com.yunbao.main.views.MessageChatExtensionConfig;
|
||||
|
||||
/**
|
||||
* 会话列表管理
|
||||
*/
|
||||
@@ -90,6 +89,8 @@ public class ConversationIMListManager {
|
||||
|
||||
//会话列表监听事件
|
||||
RongIM.setConversationListBehaviorListener(listener);
|
||||
//注册聊天页面扩展面板
|
||||
RongExtensionManager.getInstance().setExtensionConfig(new MessageChatExtensionConfig());
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
package com.yunbao.main.views;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.ListIterator;
|
||||
|
||||
import io.rong.imkit.conversation.extension.DefaultExtensionConfig;
|
||||
import io.rong.imkit.conversation.extension.component.plugin.FilePlugin;
|
||||
import io.rong.imkit.conversation.extension.component.plugin.IPluginModule;
|
||||
import io.rong.imlib.model.Conversation;
|
||||
|
||||
public class MessageChatExtensionConfig extends DefaultExtensionConfig {
|
||||
@Override
|
||||
public List<IPluginModule> getPluginModules(Conversation.ConversationType conversationType, String targetId) {
|
||||
List<IPluginModule> pluginModules = super.getPluginModules(conversationType,targetId);
|
||||
ListIterator<IPluginModule> iterator = pluginModules.listIterator();
|
||||
|
||||
// 删除扩展项
|
||||
while (iterator.hasNext()) {
|
||||
IPluginModule integer = iterator.next();
|
||||
// 以删除 FilePlugin 为例
|
||||
if (integer instanceof FilePlugin) {
|
||||
iterator.remove();
|
||||
}
|
||||
}
|
||||
|
||||
return pluginModules;
|
||||
}
|
||||
}
|
||||
14
main/src/main/res/anim/anim_chat_fold_card_hide.xml
Normal file
14
main/src/main/res/anim/anim_chat_fold_card_hide.xml
Normal file
@@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<set xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<translate
|
||||
android:duration="500"
|
||||
android:fromYDelta="0"
|
||||
android:toYDelta="-100%"
|
||||
/>
|
||||
<alpha
|
||||
android:duration="300"
|
||||
android:fromAlpha="1.0"
|
||||
android:toAlpha="0.0"
|
||||
/>
|
||||
</set>
|
||||
|
||||
14
main/src/main/res/anim/anim_chat_fold_card_show.xml
Normal file
14
main/src/main/res/anim/anim_chat_fold_card_show.xml
Normal file
@@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<set xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<translate
|
||||
android:duration="500"
|
||||
android:fromYDelta="-100%"
|
||||
android:toYDelta="0"
|
||||
/>
|
||||
<alpha
|
||||
android:duration="300"
|
||||
android:fromAlpha="0.0"
|
||||
android:toAlpha="1.0"
|
||||
/>
|
||||
</set>
|
||||
|
||||
61
main/src/main/res/layout/activity_conversation.xml
Normal file
61
main/src/main/res/layout/activity_conversation.xml
Normal file
@@ -0,0 +1,61 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:id="@+id/root_layout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:clickable="true"
|
||||
android:focusable="true"
|
||||
|
||||
android:orientation="vertical">
|
||||
<ImageView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:scaleType="fitXY"
|
||||
android:src="@mipmap/bg_msg_chat"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
<include
|
||||
android:id="@+id/include4"
|
||||
layout="@layout/view_msg_chat_title"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/container"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:layout_marginTop="-30dp"
|
||||
android:layout_weight="1"
|
||||
app:layout_constraintBottom_toTopOf="@+id/linearLayout4"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/include4" />
|
||||
|
||||
<View
|
||||
android:id="@+id/view2"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0.5dp"
|
||||
android:background="@color/gray3"
|
||||
app:layout_constraintBottom_toTopOf="@+id/linearLayout4" />
|
||||
|
||||
<!--套一层Layout,不然控件就透明了-->
|
||||
<LinearLayout
|
||||
android:id="@+id/linearLayout4"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@color/white"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent">
|
||||
|
||||
<com.yunbao.live.views.InputPanelViewHolder
|
||||
android:id="@+id/input_panel"
|
||||
android:visibility="gone"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content" />
|
||||
</LinearLayout>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
@@ -11,7 +11,7 @@
|
||||
android:id="@+id/rc_refresh"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
app:layout_constraintBottom_toTopOf="@id/rc_extension"
|
||||
app:layout_constraintBottom_toTopOf="@id/inputPanel"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
@@ -81,16 +81,24 @@
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
tools:text="100条@消息" />
|
||||
|
||||
<io.rong.imkit.conversation.extension.RongExtension
|
||||
android:id="@+id/rc_extension"
|
||||
android:layout_width="0dp"
|
||||
app:RCStyle="CE"
|
||||
android:layout_height="wrap_content"
|
||||
android:visibility="gone"
|
||||
<LinearLayout
|
||||
android:id="@+id/inputPanel"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/rc_refresh" />
|
||||
app:layout_constraintTop_toBottomOf="@id/rc_refresh"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content">
|
||||
<io.rong.imkit.conversation.extension.RongExtension
|
||||
android:id="@+id/rc_extension"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:visibility="visible"
|
||||
app:RCStyle="SCE"
|
||||
/>
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/rc_notification_container"
|
||||
|
||||
199
main/src/main/res/layout/view_msg_chat_title.xml
Normal file
199
main/src/main/res/layout/view_msg_chat_title.xml
Normal file
@@ -0,0 +1,199 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
>
|
||||
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_marginTop="20dp"
|
||||
android:id="@+id/relativeLayout"
|
||||
android:layout_width="match_parent"
|
||||
android:paddingTop="24dp"
|
||||
android:layout_height="52dp"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/titleView"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_centerHorizontal="true"
|
||||
android:gravity="center"
|
||||
android:textColor="@color/textColor"
|
||||
android:textSize="18sp"
|
||||
android:textStyle="bold"
|
||||
tools:text="123" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/btn_back"
|
||||
android:layout_width="40dp"
|
||||
android:layout_height="40dp"
|
||||
android:onClick="backClick"
|
||||
android:scaleType="center"
|
||||
android:src="@mipmap/ic_back" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/btn_fold"
|
||||
android:layout_width="40dp"
|
||||
android:layout_height="40dp"
|
||||
android:layout_marginEnd="331dp"
|
||||
android:layout_toEndOf="@+id/titleView"
|
||||
android:onClick="backClick"
|
||||
android:scaleType="center"
|
||||
android:src="@mipmap/ic_fold" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/img_more"
|
||||
android:layout_width="40dp"
|
||||
android:scaleType="center"
|
||||
android:layout_height="40dp"
|
||||
android:layout_alignParentRight="true"
|
||||
android:padding="9dp"
|
||||
android:src="@mipmap/btn_more_black"
|
||||
android:visibility="visible" />
|
||||
</RelativeLayout>
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/userCard"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="-30dp"
|
||||
app:layout_constraintTop_toBottomOf="@+id/relativeLayout">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/imageView"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:srcCompat="@mipmap/bg_msg_chat_title" />
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/constraintLayout6"
|
||||
android:layout_width="94dp"
|
||||
android:layout_height="94dp"
|
||||
android:layout_marginTop="40dp"
|
||||
android:layout_marginEnd="40dp"
|
||||
android:background="@mipmap/bg_msg_chat_title_avater"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
|
||||
<com.yunbao.common.views.weight.ClipPathCircleImage
|
||||
android:id="@+id/rc_conversation_portrait"
|
||||
android:layout_width="50dp"
|
||||
android:layout_height="50dp"
|
||||
android:scaleType="centerCrop"
|
||||
android:src="@mipmap/beauty_jingbai"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/userName"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="50dp"
|
||||
android:layout_marginTop="70dp"
|
||||
android:text="TextView"
|
||||
android:textColor="#333333"
|
||||
android:textSize="16sp"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/user_status"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="5dp"
|
||||
android:text="在线"
|
||||
android:textColor="#AAAAAA"
|
||||
android:textSize="8sp"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/userName"
|
||||
app:layout_constraintStart_toEndOf="@+id/userName"
|
||||
app:layout_constraintTop_toTopOf="@+id/userName" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/info"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="10dp"
|
||||
android:text="TextView"
|
||||
android:textColor="#777777"
|
||||
android:textSize="11sp"
|
||||
app:layout_constraintStart_toStartOf="@+id/userName"
|
||||
app:layout_constraintTop_toBottomOf="@+id/userName" />
|
||||
|
||||
<ImageView
|
||||
android:layout_width="20dp"
|
||||
android:layout_height="20dp"
|
||||
android:layout_marginStart="4dp"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/info"
|
||||
app:layout_constraintStart_toEndOf="@+id/info"
|
||||
app:layout_constraintTop_toTopOf="@+id/info"
|
||||
app:srcCompat="@mipmap/bg_msg_chat_title_gift" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/sign"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="10dp"
|
||||
android:text="个性签名给性签名个性签名给性签名个性签名给性签名"
|
||||
android:textColor="#333333"
|
||||
android:textSize="13sp"
|
||||
app:layout_constraintEnd_toStartOf="@+id/constraintLayout6"
|
||||
app:layout_constraintStart_toStartOf="@+id/info"
|
||||
app:layout_constraintTop_toBottomOf="@+id/info" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/follow"
|
||||
android:layout_width="69dp"
|
||||
android:layout_height="38dp"
|
||||
android:background="@drawable/bg_msg_address_book_user_btn_fan"
|
||||
android:drawableLeft="@mipmap/bg_msg_chat_title_follow"
|
||||
android:gravity="center"
|
||||
android:maxLines="1"
|
||||
android:paddingStart="4dp"
|
||||
android:paddingEnd="4dp"
|
||||
android:text="@string/activity_msg_addressbook_tab_follow2"
|
||||
android:textAllCaps="false"
|
||||
android:textColor="#FFFFFF"
|
||||
android:textSize="13sp"
|
||||
app:autoSizeMaxTextSize="13sp"
|
||||
app:autoSizeMinTextSize="3sp"
|
||||
|
||||
app:autoSizeStepGranularity="1sp"
|
||||
app:autoSizeTextType="uniform"
|
||||
app:layout_constraintEnd_toEndOf="@+id/constraintLayout6"
|
||||
app:layout_constraintStart_toStartOf="@+id/constraintLayout6"
|
||||
app:layout_constraintTop_toBottomOf="@+id/constraintLayout6" />
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/avatar_list"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="75dp"
|
||||
android:layout_marginStart="50dp"
|
||||
android:layout_marginEnd="50dp"
|
||||
android:layout_marginBottom="60dp"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="@+id/imageView"
|
||||
app:layout_constraintStart_toStartOf="parent" />
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/tag_list"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="25dp"
|
||||
app:layout_constraintBottom_toTopOf="@+id/avatar_list"
|
||||
app:layout_constraintEnd_toEndOf="@+id/avatar_list"
|
||||
app:layout_constraintStart_toStartOf="@+id/avatar_list" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
BIN
main/src/main/res/mipmap-xxhdpi/bg_msg_chat_title_gift.png
Normal file
BIN
main/src/main/res/mipmap-xxhdpi/bg_msg_chat_title_gift.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 4.8 KiB |
BIN
main/src/main/res/mipmap-xxhdpi/ic_back.png
Normal file
BIN
main/src/main/res/mipmap-xxhdpi/ic_back.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 750 B |
BIN
main/src/main/res/mipmap-xxhdpi/ic_fold.png
Normal file
BIN
main/src/main/res/mipmap-xxhdpi/ic_fold.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.6 KiB |
@@ -32,6 +32,7 @@
|
||||
<string name="activity_msg_addressbook_layout_title">通讯录</string>
|
||||
<string name="activity_msg_addressbook_search_hint">搜索昵稱</string>
|
||||
<string name="activity_msg_addressbook_tab_follow">已關注</string>
|
||||
<string name="activity_msg_addressbook_tab_follow2">關注</string>
|
||||
<string name="activity_msg_addressbook_tab_fan">粉絲</string>
|
||||
<string name="activity_msg_addressbook_tab_fan2">回關</string>
|
||||
<string name="activity_msg_addressbook_tab_mutual">互相關注</string>
|
||||
|
||||
@@ -32,6 +32,7 @@
|
||||
<string name="activity_msg_addressbook_layout_title">Address Book</string>
|
||||
<string name="activity_msg_addressbook_search_hint">Search</string>
|
||||
<string name="activity_msg_addressbook_tab_follow">Following</string>
|
||||
<string name="activity_msg_addressbook_tab_follow2">Follow</string>
|
||||
<string name="activity_msg_addressbook_tab_fan">Fan</string>
|
||||
<string name="activity_msg_addressbook_tab_fan2">Return</string>
|
||||
<string name="activity_msg_addressbook_tab_mutual">Mutual</string>
|
||||
|
||||
Reference in New Issue
Block a user