Bladeren bron

1.修改IM聊天页面UI

王鹏鹏 2 jaren geleden
bovenliggende
commit
43aa26f8c3

+ 5 - 0
.idea/misc.xml

@@ -291,6 +291,7 @@
         <entry key="..\:/workspace/hcp-pad/tuichat/src/main/res/drawable/voice_btn_selector.xml" value="0.158" />
         <entry key="..\:/workspace/hcp-pad/tuichat/src/main/res/layout/activity_camera.xml" value="0.23697916666666666" />
         <entry key="..\:/workspace/hcp-pad/tuichat/src/main/res/layout/chat_activity.xml" value="0.23697916666666666" />
+        <entry key="..\:/workspace/hcp-pad/tuichat/src/main/res/layout/chat_end_consultation.xml" value="0.23697916666666666" />
         <entry key="..\:/workspace/hcp-pad/tuichat/src/main/res/layout/chat_fragment.xml" value="0.23697916666666666" />
         <entry key="..\:/workspace/hcp-pad/tuichat/src/main/res/layout/chat_input_camera_view.xml" value="0.23697916666666666" />
         <entry key="..\:/workspace/hcp-pad/tuichat/src/main/res/layout/chat_input_layout.xml" value="0.23697916666666666" />
@@ -301,9 +302,13 @@
         <entry key="..\:/workspace/hcp-pad/tuichat/src/main/res/layout/chat_menu_recent_face_item_layout.xml" value="0.23697916666666666" />
         <entry key="..\:/workspace/hcp-pad/tuichat/src/main/res/layout/chat_pop_menu_item_layout.xml" value="0.23697916666666666" />
         <entry key="..\:/workspace/hcp-pad/tuichat/src/main/res/layout/chat_pop_menu_layout.xml" value="0.264" />
+        <entry key="..\:/workspace/hcp-pad/tuichat/src/main/res/layout/chat_reply_quote_merge_layout.xml" value="0.23697916666666666" />
+        <entry key="..\:/workspace/hcp-pad/tuichat/src/main/res/layout/chat_reply_quote_text_layout.xml" value="0.23697916666666666" />
+        <entry key="..\:/workspace/hcp-pad/tuichat/src/main/res/layout/chat_start_consultation.xml" value="0.23697916666666666" />
         <entry key="..\:/workspace/hcp-pad/tuichat/src/main/res/layout/custom_evaluation_message_layout.xml" value="0.23697916666666666" />
         <entry key="..\:/workspace/hcp-pad/tuichat/src/main/res/layout/notice_layout.xml" value="0.536" />
         <entry key="..\:/workspace/hcp-pad/tuichat/src/main/res/layout/reply_preview_layout.xml" value="0.4" />
+        <entry key="..\:/workspace/hcp-pad/tuichat/src/main/res/layout/test_custom_message_layout1.xml" value="0.23697916666666666" />
         <entry key="..\:/workspace/hcp-pad/tuigift/src/main/res/drawable/tuigift_bg_bottom_dialog.xml" value="0.2265" />
         <entry key="..\:/workspace/hcp-pad/webview/src/main/res/layout/activity_bridge_web.xml" value="0.22826086956521738" />
         <entry key="..\:/workspace/hcp-pad/webview/src/main/res/layout/activity_webview.xml" value="0.22826086956521738" />

+ 1 - 1
healthconsultation/src/main/java/com/yingyang/healthconsultation/doctordetails/DoctorDetailsActivity.kt

@@ -165,7 +165,7 @@ class DoctorDetailsActivity :
     /**
      * 结束答题
      */
-    @Subscribe(code = RxBusCodes.SuccessfulPurchase, threadMode = ThreadMode.MAIN)
+    @Subscribe(code = RxBusCodes.SuccessfulPurchase)
     fun successfulPurchase() {
         finish()
     }

+ 2 - 0
tuichat/src/main/java/com/tencent/qcloud/tuikit/tuichat/TUIChatConstants.java

@@ -17,6 +17,8 @@ public class TUIChatConstants {
     public static final String BUSINESS_ID_CUSTOM_ORDER = "order";
     public static final String BUSINESS_ID_CUSTOM_TYPING = "user_typing_status";
     public static final String BUSINESS_ID_QUICK_TAP = "quick_tap";
+    public static final String BUSINESS_ID_CUSTOM_END_CONSULTATION = "end";
+    public static final String BUSINESS_ID_CUSTOM_START_CONSULTATION = "start";
 
     public static final int PLUGIN_NORMAL_MESSAGE = 1;
     public static final int PLUGIN_TIPS_MESSAGE = 2;

+ 8 - 3
tuichat/src/main/java/com/tencent/qcloud/tuikit/tuichat/TUIChatService.java

@@ -2,11 +2,11 @@ package com.tencent.qcloud.tuikit.tuichat;
 
 import android.content.Context;
 import android.text.TextUtils;
-import android.util.Log;
 
 import androidx.datastore.preferences.core.Preferences;
 import androidx.datastore.preferences.rxjava3.RxPreferenceDataStoreBuilder;
 import androidx.datastore.rxjava3.RxDataStore;
+
 import com.tencent.imsdk.v2.V2TIMAdvancedMsgListener;
 import com.tencent.imsdk.v2.V2TIMFriendInfo;
 import com.tencent.imsdk.v2.V2TIMFriendshipListener;
@@ -21,6 +21,8 @@ import com.tencent.qcloud.tuicore.TUILogin;
 import com.tencent.qcloud.tuikit.timcommon.bean.MessageReceiptInfo;
 import com.tencent.qcloud.tuikit.timcommon.bean.TUIMessageBean;
 import com.tencent.qcloud.tuikit.timcommon.component.face.FaceManager;
+import com.tencent.qcloud.tuikit.tuichat.bean.CustomEndConsultationBean;
+import com.tencent.qcloud.tuikit.tuichat.bean.CustomStartConsultationBean;
 import com.tencent.qcloud.tuikit.tuichat.bean.message.CustomEvaluationMessageBean;
 import com.tencent.qcloud.tuikit.tuichat.bean.message.CustomLinkMessageBean;
 import com.tencent.qcloud.tuikit.tuichat.bean.message.CustomOrderMessageBean;
@@ -37,6 +39,7 @@ import com.tencent.qcloud.tuikit.tuichat.util.ChatMessageParser;
 import com.tencent.qcloud.tuikit.tuichat.util.DataStoreUtil;
 import com.tencent.qcloud.tuikit.tuichat.util.TUIChatLog;
 import com.tencent.qcloud.tuikit.tuichat.util.TUIChatUtils;
+
 import java.lang.ref.WeakReference;
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -536,6 +539,8 @@ public class TUIChatService extends ServiceInitializer implements ITUIChatServic
         addCustomMessageType(TUIChatConstants.BUSINESS_ID_CUSTOM_EVALUATION, CustomEvaluationMessageBean.class);
         addCustomMessageType(TUIChatConstants.BUSINESS_ID_CUSTOM_ORDER, CustomOrderMessageBean.class);
         addCustomMessageType(TUIChatConstants.BUSINESS_ID_CUSTOM_TYPING, MessageTypingBean.class);
+        addCustomMessageType(TUIChatConstants.BUSINESS_ID_CUSTOM_END_CONSULTATION, CustomEndConsultationBean.class);
+        addCustomMessageType(TUIChatConstants.BUSINESS_ID_CUSTOM_START_CONSULTATION, CustomStartConsultationBean.class);
     }
 
     /**
@@ -545,7 +550,7 @@ public class TUIChatService extends ServiceInitializer implements ITUIChatServic
      * @param isDefault 是否是在 TUIChat 内部定义的
      *
      * Register a custom message type
-     * @param businessId Custom message unique identifier(cannot be repeated)
+     * @param businessId CustomEndConsultationBean message unique identifier(cannot be repeated)
      * @param beanClass  MessageBean type
      */
     public void addCustomMessageType(String businessId, Class<? extends TUIMessageBean> beanClass, boolean isDefault) {
@@ -565,7 +570,7 @@ public class TUIChatService extends ServiceInitializer implements ITUIChatServic
      * @param beanClass 消息 MessageBean 类型
      *
      * Register a custom message type
-     * @param businessId Custom message unique identifier(cannot be repeated)
+     * @param businessId CustomEndConsultationBean message unique identifier(cannot be repeated)
      * @param beanClass  MessageBean type
      */
     public void addCustomMessageType(String businessId, Class<? extends TUIMessageBean> beanClass) {

+ 50 - 0
tuichat/src/main/java/com/tencent/qcloud/tuikit/tuichat/bean/CustomEndConsultationBean.java

@@ -0,0 +1,50 @@
+package com.tencent.qcloud.tuikit.tuichat.bean;
+
+import android.text.TextUtils;
+
+import com.google.gson.Gson;
+import com.tencent.imsdk.v2.V2TIMMessage;
+import com.tencent.qcloud.tuikit.timcommon.bean.TUIMessageBean;
+import com.tencent.qcloud.tuikit.tuichat.R;
+import com.tencent.qcloud.tuikit.tuichat.TUIChatService;
+import com.tencent.qcloud.tuikit.tuichat.util.TUIChatLog;
+
+/**
+ * 结束问诊消息
+ *
+ * @author 王鹏鹏
+ */
+public class CustomEndConsultationBean extends TUIMessageBean {
+
+    private EndConsultationBean endConsultationBean;
+
+    @Override
+    public String onGetDisplayString() {
+        return getText();
+    }
+
+    @Override
+    public void onProcessMessage(V2TIMMessage v2TIMMessage) {
+        String data = new String(v2TIMMessage.getCustomElem().getData());
+        if (!TextUtils.isEmpty(data)) {
+            try {
+                endConsultationBean = new Gson().fromJson(data, EndConsultationBean.class);
+            } catch (Exception e) {
+                TUIChatLog.e("EndConsultationBean", "exception e = " + e);
+            }
+        }
+        if (endConsultationBean != null) {
+            setExtra(endConsultationBean.getText());
+        } else {
+            String text = TUIChatService.getAppContext().getString(R.string.no_support_msg);
+            setExtra(text);
+        }
+    }
+
+    public String getText() {
+        if (endConsultationBean != null) {
+            return endConsultationBean.getText();
+        }
+        return getExtra();
+    }
+}

+ 48 - 0
tuichat/src/main/java/com/tencent/qcloud/tuikit/tuichat/bean/CustomStartConsultationBean.java

@@ -0,0 +1,48 @@
+package com.tencent.qcloud.tuikit.tuichat.bean;
+
+import android.text.TextUtils;
+
+import com.google.gson.Gson;
+import com.tencent.imsdk.v2.V2TIMMessage;
+import com.tencent.qcloud.tuikit.timcommon.bean.TUIMessageBean;
+import com.tencent.qcloud.tuikit.tuichat.R;
+import com.tencent.qcloud.tuikit.tuichat.TUIChatService;
+import com.tencent.qcloud.tuikit.tuichat.util.TUIChatLog;
+
+/**
+ * 开始问诊消息
+ */
+public class CustomStartConsultationBean extends TUIMessageBean {
+
+    private StartConsultationBean startConsultationBean;
+
+    @Override
+    public String onGetDisplayString() {
+        return getText();
+    }
+
+    @Override
+    public void onProcessMessage(V2TIMMessage v2TIMMessage) {
+        String data = new String(v2TIMMessage.getCustomElem().getData());
+        if (!TextUtils.isEmpty(data)) {
+            try {
+                startConsultationBean = new Gson().fromJson(data, StartConsultationBean.class);
+            } catch (Exception e) {
+                TUIChatLog.e("EndConsultationBean", "exception e = " + e);
+            }
+        }
+        if (startConsultationBean != null) {
+            setExtra(startConsultationBean.getText());
+        } else {
+            String text = TUIChatService.getAppContext().getString(R.string.no_support_msg);
+            setExtra(text);
+        }
+    }
+
+    public String getText() {
+        if (startConsultationBean != null) {
+            return startConsultationBean.getText();
+        }
+        return getExtra();
+    }
+}

+ 27 - 0
tuichat/src/main/java/com/tencent/qcloud/tuikit/tuichat/bean/EndConsultationBean.java

@@ -0,0 +1,27 @@
+package com.tencent.qcloud.tuikit.tuichat.bean;
+
+import android.text.TextUtils;
+
+import com.tencent.qcloud.tuikit.tuichat.TUIChatConstants;
+
+/**
+ * 结束问诊消息
+ *
+ * @author 王鹏鹏
+ */
+public class EndConsultationBean {
+
+    public String businessID = TUIChatConstants.BUSINESS_ID_CUSTOM_END_CONSULTATION;
+    private String text;
+
+    public String getText() {
+        if (TextUtils.isEmpty(text)) {
+            return "结束问诊";
+        }
+        return text;
+    }
+
+    public void setText(String text) {
+        this.text = text;
+    }
+}

+ 27 - 0
tuichat/src/main/java/com/tencent/qcloud/tuikit/tuichat/bean/StartConsultationBean.java

@@ -0,0 +1,27 @@
+package com.tencent.qcloud.tuikit.tuichat.bean;
+
+import android.text.TextUtils;
+
+import com.tencent.qcloud.tuikit.tuichat.TUIChatConstants;
+
+/**
+ * 开始问诊消息
+ *
+ * @author 王鹏鹏
+ */
+public class StartConsultationBean {
+
+    public String businessID = TUIChatConstants.BUSINESS_ID_CUSTOM_START_CONSULTATION;
+    private String text;
+
+    public String getText() {
+        if (TextUtils.isEmpty(text)) {
+            return "开始问诊";
+        }
+        return text;
+    }
+
+    public void setText(String text) {
+        this.text = text;
+    }
+}

+ 12 - 3
tuichat/src/main/java/com/tencent/qcloud/tuikit/tuichat/classicui/ClassicUIService.java

@@ -3,6 +3,7 @@ package com.tencent.qcloud.tuikit.tuichat.classicui;
 import android.content.Context;
 import android.content.Intent;
 import android.text.TextUtils;
+
 import com.tencent.imsdk.v2.V2TIMConversation;
 import com.tencent.qcloud.tuicore.ServiceInitializer;
 import com.tencent.qcloud.tuicore.TUIConstants;
@@ -17,6 +18,8 @@ import com.tencent.qcloud.tuikit.timcommon.classicui.widget.message.MessageBaseH
 import com.tencent.qcloud.tuikit.timcommon.classicui.widget.message.TUIReplyQuoteView;
 import com.tencent.qcloud.tuikit.tuichat.R;
 import com.tencent.qcloud.tuikit.tuichat.TUIChatService;
+import com.tencent.qcloud.tuikit.tuichat.bean.CustomEndConsultationBean;
+import com.tencent.qcloud.tuikit.tuichat.bean.CustomStartConsultationBean;
 import com.tencent.qcloud.tuikit.tuichat.bean.message.CallingMessageBean;
 import com.tencent.qcloud.tuikit.tuichat.bean.message.CustomEvaluationMessageBean;
 import com.tencent.qcloud.tuikit.tuichat.bean.message.CustomLinkMessageBean;
@@ -59,6 +62,7 @@ import com.tencent.qcloud.tuikit.tuichat.classicui.widget.message.viewholder.Cal
 import com.tencent.qcloud.tuikit.tuichat.classicui.widget.message.viewholder.CustomEvaluationMessageHolder;
 import com.tencent.qcloud.tuikit.tuichat.classicui.widget.message.viewholder.CustomLinkMessageHolder;
 import com.tencent.qcloud.tuikit.tuichat.classicui.widget.message.viewholder.CustomOrderMessageHolder;
+import com.tencent.qcloud.tuikit.tuichat.classicui.widget.message.viewholder.EndConsultationMessageHolder;
 import com.tencent.qcloud.tuikit.tuichat.classicui.widget.message.viewholder.FaceMessageHolder;
 import com.tencent.qcloud.tuikit.tuichat.classicui.widget.message.viewholder.FileMessageHolder;
 import com.tencent.qcloud.tuikit.tuichat.classicui.widget.message.viewholder.ImageMessageHolder;
@@ -67,9 +71,11 @@ import com.tencent.qcloud.tuikit.tuichat.classicui.widget.message.viewholder.Mer
 import com.tencent.qcloud.tuikit.tuichat.classicui.widget.message.viewholder.QuoteMessageHolder;
 import com.tencent.qcloud.tuikit.tuichat.classicui.widget.message.viewholder.ReplyMessageHolder;
 import com.tencent.qcloud.tuikit.tuichat.classicui.widget.message.viewholder.SoundMessageHolder;
+import com.tencent.qcloud.tuikit.tuichat.classicui.widget.message.viewholder.StartConsultationMessageHolder;
 import com.tencent.qcloud.tuikit.tuichat.classicui.widget.message.viewholder.TextMessageHolder;
 import com.tencent.qcloud.tuikit.tuichat.classicui.widget.message.viewholder.TipsMessageHolder;
 import com.tencent.qcloud.tuikit.tuichat.classicui.widget.message.viewholder.VideoMessageHolder;
+
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -125,6 +131,8 @@ public class ClassicUIService extends ServiceInitializer implements ITUIExtensio
         addMessageType(QuoteMessageBean.class, QuoteMessageHolder.class);
         addMessageType(CallingMessageBean.class, CallingMessageHolder.class);
         addMessageType(CustomLinkMessageBean.class, CustomLinkMessageHolder.class);
+        addMessageType(CustomEndConsultationBean.class, EndConsultationMessageHolder.class);
+        addMessageType(CustomStartConsultationBean.class, StartConsultationMessageHolder.class);
         addMessageType(CustomEvaluationMessageBean.class, CustomEvaluationMessageHolder.class);
         addMessageType(CustomOrderMessageBean.class, CustomOrderMessageHolder.class);
         addMessageType(MessageTypingBean.class, null);
@@ -136,8 +144,9 @@ public class ClassicUIService extends ServiceInitializer implements ITUIExtensio
 
     /**
      * 注册自定义消息及其 ViewHolder
-     * @param beanClazz 自定义消息类型
-     * @param holderClazz 自定义消息的 ViewHolder 类型
+     *
+     * @param beanClazz            自定义消息类型
+     * @param holderClazz          自定义消息的 ViewHolder 类型
      * @param isNeedEmptyViewGroup 是否需要空的消息容器
      */
     public void addMessageType(Class<? extends TUIMessageBean> beanClazz, Class<? extends MessageBaseHolder> holderClazz, boolean isNeedEmptyViewGroup) {
@@ -260,7 +269,7 @@ public class ClassicUIService extends ServiceInitializer implements ITUIExtensio
         Class<? extends TUIMessageBean> messageBeanClass = getOrDefault(param, TUIConstants.TUIChat.Method.RegisterCustomMessage.MESSAGE_BEAN_CLASS, null);
         Class messageViewHolderClass = getOrDefault(param, TUIConstants.TUIChat.Method.RegisterCustomMessage.MESSAGE_VIEW_HOLDER_CLASS, null);
         Class<? extends TUIReplyQuoteBean> messageReplyBeanClass =
-            getOrDefault(param, TUIConstants.TUIChat.Method.RegisterCustomMessage.MESSAGE_REPLY_BEAN_CLASS, null);
+                getOrDefault(param, TUIConstants.TUIChat.Method.RegisterCustomMessage.MESSAGE_REPLY_BEAN_CLASS, null);
         Class messageReplyViewClass = getOrDefault(param, TUIConstants.TUIChat.Method.RegisterCustomMessage.MESSAGE_REPLY_VIEW_CLASS, null);
         boolean isNeedEmptyViewGroup = getOrDefault(param, TUIConstants.TUIChat.Method.RegisterCustomMessage.IS_NEED_EMPTY_VIEW_GROUP, false);
         TUIChatService.getInstance().addCustomMessageType(businessID, messageBeanClass, false);

+ 24 - 0
tuichat/src/main/java/com/tencent/qcloud/tuikit/tuichat/classicui/widget/message/viewholder/EndConsultationMessageHolder.java

@@ -0,0 +1,24 @@
+package com.tencent.qcloud.tuikit.tuichat.classicui.widget.message.viewholder;
+
+import android.view.View;
+
+import com.tencent.qcloud.tuikit.timcommon.bean.TUIMessageBean;
+import com.tencent.qcloud.tuikit.timcommon.classicui.widget.message.MessageContentHolder;
+import com.tencent.qcloud.tuikit.tuichat.R;
+
+public class EndConsultationMessageHolder extends MessageContentHolder {
+
+    public EndConsultationMessageHolder(View itemView) {
+        super(itemView);
+    }
+
+    @Override
+    public int getVariableLayout() {
+        return R.layout.chat_end_consultation;
+    }
+
+    @Override
+    public void layoutVariableViews(TUIMessageBean msg, int position) {
+
+    }
+}

+ 29 - 0
tuichat/src/main/java/com/tencent/qcloud/tuikit/tuichat/classicui/widget/message/viewholder/StartConsultationMessageHolder.java

@@ -0,0 +1,29 @@
+package com.tencent.qcloud.tuikit.tuichat.classicui.widget.message.viewholder;
+
+import android.view.View;
+
+import com.tencent.qcloud.tuikit.timcommon.bean.TUIMessageBean;
+import com.tencent.qcloud.tuikit.timcommon.classicui.widget.message.MessageContentHolder;
+import com.tencent.qcloud.tuikit.tuichat.R;
+
+/**
+ * 开始问诊消息
+ *
+ * @author 王鹏鹏
+ */
+public class StartConsultationMessageHolder extends MessageContentHolder {
+
+    public StartConsultationMessageHolder(View itemView) {
+        super(itemView);
+    }
+
+    @Override
+    public int getVariableLayout() {
+        return R.layout.chat_start_consultation;
+    }
+
+    @Override
+    public void layoutVariableViews(TUIMessageBean msg, int position) {
+
+    }
+}

+ 17 - 0
tuichat/src/main/res/layout/chat_end_consultation.xml

@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:gravity="center_horizontal"
+    android:orientation="vertical">
+
+    <TextView
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="问诊结束"
+        android:textColor="@color/color_FF333333"
+        android:textSize="@dimen/divider_24px" />
+
+
+
+</LinearLayout>

+ 17 - 0
tuichat/src/main/res/layout/chat_start_consultation.xml

@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:gravity="center_horizontal"
+    android:orientation="vertical">
+
+    <TextView
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="问诊结束"
+        android:textColor="@color/color_FF333333"
+        android:textSize="@dimen/divider_24px" />
+
+
+
+</LinearLayout>