honghengqiang 2 tahun lalu
induk
melakukan
d81113963a

+ 1 - 1
.idea/misc.xml

@@ -188,7 +188,7 @@
         <entry key="tuikit/src/main/res/layout/contact_layout.xml" value="0.3776041666666667" />
         <entry key="tuikit/src/main/res/layout/contact_list.xml" value="0.3776041666666667" />
         <entry key="tuikit/src/main/res/layout/contact_selecable_adapter_item.xml" value="0.3776041666666667" />
-        <entry key="tuikit/src/main/res/layout/conversation_adapter.xml" value="0.20833333333333334" />
+        <entry key="tuikit/src/main/res/layout/conversation_adapter.xml" value="0.33" />
         <entry key="tuikit/src/main/res/layout/conversation_custom_adapter.xml" value="0.3776041666666667" />
         <entry key="tuikit/src/main/res/layout/conversation_forward_label_adapter.xml" value="0.3776041666666667" />
         <entry key="tuikit/src/main/res/layout/conversation_forward_select_adapter.xml" value="0.22083333333333333" />

+ 68 - 15
tuikit/src/main/java/com/tencent/qcloud/tim/uikit/modules/conversation/holder/ConversationCommonHolder.java

@@ -4,12 +4,16 @@ import android.graphics.Color;
 import android.text.Html;
 import android.text.SpannableStringBuilder;
 import android.text.TextUtils;
+import android.util.Log;
 import android.view.View;
 import android.widget.ImageView;
 import android.widget.LinearLayout;
 import android.widget.TextView;
 
 import com.bumptech.glide.Glide;
+import com.tencent.imsdk.v2.V2TIMManager;
+import com.tencent.imsdk.v2.V2TIMUserFullInfo;
+import com.tencent.imsdk.v2.V2TIMValueCallback;
 import com.tencent.qcloud.tim.uikit.R;
 import com.tencent.qcloud.tim.uikit.TUIKit;
 import com.tencent.qcloud.tim.uikit.base.TUIConversationControllerListener;
@@ -23,6 +27,8 @@ import com.tencent.qcloud.tim.uikit.utils.TUIKitConstants;
 
 import java.util.ArrayList;
 import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
@@ -38,6 +44,8 @@ public class ConversationCommonHolder extends ConversationBaseHolder {
     protected TextView unreadText;
     protected TextView atInfoText;
     protected ImageView disturbView;
+    protected TextView tvAgent;
+    protected TextView tvOfficial;
 
     public ConversationCommonHolder(View itemView) {
         super(itemView);
@@ -49,6 +57,8 @@ public class ConversationCommonHolder extends ConversationBaseHolder {
         unreadText = rootView.findViewById(R.id.conversation_unread);
         atInfoText = rootView.findViewById(R.id.conversation_at_msg);
         disturbView = rootView.findViewById(R.id.not_disturb);
+        tvAgent = rootView.findViewById(R.id.tvAgent);
+        tvOfficial = rootView.findViewById(R.id.tvOfficial);
     }
 
     public void layoutViews(ConversationInfo conversation, int position) {
@@ -84,7 +94,7 @@ public class ConversationCommonHolder extends ConversationBaseHolder {
             if (lastMsg != null) {
                 // 如果最后一条消息是自定义消息,由消息创建者决定显示什么字符
                 if (lastMsg.getMsgType() > MessageInfo.MSG_STATUS_REVOKE) {
-                    for(TUIConversationControllerListener conversationListener : TUIKitListenerManager.getInstance().getTUIConversationListeners()) {
+                    for (TUIConversationControllerListener conversationListener : TUIKitListenerManager.getInstance().getTUIConversationListeners()) {
                         CharSequence displayStr = conversationListener.getConversationDisplayString(lastMsg);
                         if (displayStr != null) {
                             messageText.setText(displayStr);
@@ -141,7 +151,7 @@ public class ConversationCommonHolder extends ConversationBaseHolder {
             unreadText.setVisibility(View.GONE);
         }
 
-        if(conversation.getLastMessage()!=null&&conversation.getLastMessage().getTimMessage()!=null) {
+        if (conversation.getLastMessage() != null && conversation.getLastMessage().getTimMessage() != null) {
             Glide.with(itemView.getContext()).load(conversation.getConversationFaceUrl())
                     .placeholder(R.mipmap.default_avatar)
                     .error(R.mipmap.default_avatar).into(conversationIconView);
@@ -153,18 +163,61 @@ public class ConversationCommonHolder extends ConversationBaseHolder {
             disturbView.setVisibility(View.GONE);
         }
 
+        //设置
+        ArrayList<String> data = new ArrayList();
+        data.add(conversation.getId());
+        V2TIMManager.getInstance().getUsersInfo(data, new V2TIMValueCallback<List<V2TIMUserFullInfo>>() {
+            @Override
+            public void onSuccess(List<V2TIMUserFullInfo> v2TIMUserFullInfo) {
+                if (!v2TIMUserFullInfo.isEmpty()) {
+                    HashMap<String, byte[]> customInfo = v2TIMUserFullInfo.get(0).getCustomInfo();
+                    byte[] byteService = customInfo.get("service");
+                    String is_service = "";
+                    String is_official = "";
+                    if (byteService == null) {
+                        is_service = "0";
+                    } else {
+                        is_service = new String(byteService);
+                    }
+                    byte[] byteOfficial = customInfo.get("official");
+                    if (byteOfficial == null) {
+                        is_official = "0";
+                    } else {
+                        is_official = new String(byteOfficial);
+                    }
+                   
+                    Log.d("ffddf", "dfssfdf");
+                    if ("1".equals(is_service)) {
+                        tvAgent.setVisibility(View.VISIBLE);
+                    } else {
+                        tvAgent.setVisibility(View.GONE);
+                    }
+                    if ("1".equals(is_official)) {
+                        tvOfficial.setVisibility(View.VISIBLE);
+                    } else {
+                        tvAgent.setVisibility(View.GONE);
+                    }
+
+                }
+            }
+
+            @Override
+            public void onError(int i, String s) {
+            }
+        });
+
         //// 由子类设置指定消息类型的views
         layoutVariableViews(conversation, position);
     }
 
 
-    private static String emojiJudge(String text){
-        if (TextUtils.isEmpty(text)){
+    private static String emojiJudge(String text) {
+        if (TextUtils.isEmpty(text)) {
             return "";
         }
 
         String[] emojiList = FaceManager.getEmojiFilters();
-        if (emojiList ==null || emojiList.length == 0){
+        if (emojiList == null || emojiList.length == 0) {
             return text;
         }
 
@@ -188,12 +241,12 @@ public class ConversationCommonHolder extends ConversationBaseHolder {
 
             int index = findeEmoji(emojiName);
             String[] emojiListValues = FaceManager.getEmojiFiltersValues();
-            if (index != -1 && emojiListValues != null && emojiListValues.length >= index){
+            if (index != -1 && emojiListValues != null && emojiListValues.length >= index) {
                 emojiName = emojiListValues[index];
             }
 
 
-            EmojiData emojiData =new EmojiData();
+            EmojiData emojiData = new EmojiData();
             emojiData.setStart(start);
             emojiData.setEnd(end);
             emojiData.setEmojiText(emojiName);
@@ -202,10 +255,10 @@ public class ConversationCommonHolder extends ConversationBaseHolder {
         }
 
         //倒叙替换
-        if (emojiDataArrayList.isEmpty()){
+        if (emojiDataArrayList.isEmpty()) {
             return text;
         }
-        for (int i = emojiDataArrayList.size() - 1; i >= 0; i--){
+        for (int i = emojiDataArrayList.size() - 1; i >= 0; i--) {
             EmojiData emojiData = emojiDataArrayList.get(i);
             String emojiName = emojiData.getEmojiText();
             int start = emojiData.getStart();
@@ -218,19 +271,19 @@ public class ConversationCommonHolder extends ConversationBaseHolder {
         return sb.toString();
     }
 
-    private static int findeEmoji(String text){
+    private static int findeEmoji(String text) {
         int result = -1;
-        if (TextUtils.isEmpty(text)){
+        if (TextUtils.isEmpty(text)) {
             return result;
         }
 
         String[] emojiList = FaceManager.getEmojiFilters();
-        if (emojiList ==null || emojiList.length == 0){
+        if (emojiList == null || emojiList.length == 0) {
             return result;
         }
 
-        for (int i = 0; i < emojiList.length; i++){
-            if (text.equals(emojiList[i])){
+        for (int i = 0; i < emojiList.length; i++) {
+            if (text.equals(emojiList[i])) {
                 result = i;
                 break;
             }
@@ -243,7 +296,7 @@ public class ConversationCommonHolder extends ConversationBaseHolder {
 
     }
 
-    private static class EmojiData{
+    private static class EmojiData {
         private int start;
         private int end;
         private String emojiText;

+ 48 - 14
tuikit/src/main/res/layout/conversation_adapter.xml

@@ -1,21 +1,22 @@
 <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
     android:id="@+id/item_left"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:background="#FFFFFF"
     android:paddingTop="12dp"
-    android:paddingLeft="14.85dp"
+    android:paddingStart="14.85dp"
     android:orientation="horizontal">
 
     <CheckBox
-        android:layout_alignParentLeft="true"
+        android:layout_alignParentStart="true"
         android:layout_gravity="center_vertical"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:id="@+id/select_checkbox"
         android:button="@drawable/checkbox_selector"
-        android:layout_marginRight="6.23dp"
+        android:layout_marginEnd="6.23dp"
         android:visibility="gone" />
 
         <de.hdodenhof.circleimageview.CircleImageView
@@ -26,28 +27,61 @@
         <RelativeLayout
             android:layout_width="match_parent"
             android:paddingTop="1.37dp"
-            android:paddingLeft="11.43dp"
-            android:paddingRight="18.11dp"
+            android:paddingStart="11.43dp"
+            android:paddingEnd="18.11dp"
             android:layout_height="62.3dp">
 
             <TextView
                 android:id="@+id/conversation_title"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
-                android:gravity="top|left"
-                android:layout_alignParentLeft="true"
+                android:layout_alignParentStart="true"
                 android:layout_alignParentTop="true"
                 android:ellipsize="end"
+                android:gravity="top|start"
                 android:singleLine="true"
-                android:textColor="@color/black_font_color"
                 android:text="aaa"
+                android:textColor="@color/black_font_color"
                 android:textSize="16.3sp" />
 
+            <TextView
+                android:id="@+id/tvAgent"
+                android:textSize="10dp"
+                android:text="@string/agent"
+                android:textColor="#fff"
+                android:paddingStart="16dp"
+                android:paddingEnd="5dp"
+                android:visibility="gone"
+                tools:visibility="visible"
+                android:layout_marginStart="5dp"
+                android:layout_marginTop="4dp"
+                android:layout_toEndOf="@+id/conversation_title"
+                android:background="@mipmap/icon_agent_bg"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"/>
+
+            <TextView
+                android:id="@+id/tvOfficial"
+                android:textSize="10dp"
+                android:text="@string/official"
+                android:textColor="#fff"
+                android:paddingStart="16dp"
+                android:paddingEnd="5dp"
+                android:layout_marginTop="4dp"
+                android:layout_marginStart="5dp"
+                android:visibility="gone"
+                tools:visibility="visible"
+                android:background="@mipmap/icon_official_bg"
+                android:layout_toEndOf="@+id/tvAgent"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"/>
+            
+
             <TextView
                 android:id="@+id/conversation_time"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
-                android:layout_alignParentRight="true"
+                android:layout_alignParentEnd="true"
                 android:layout_alignParentTop="true"
                 android:textColor="@color/conversation_time_color"
                 android:textSize="11.14sp" />
@@ -57,7 +91,7 @@
                 android:id="@+id/conversation_at_msg"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
-                android:layout_alignParentLeft="true"
+                android:layout_alignParentStart="true"
                 android:layout_alignParentBottom="true"
                 android:layout_marginBottom="15.54dp"
                 android:layout_above="@+id/view_line"
@@ -72,10 +106,10 @@
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:layout_alignParentBottom="true"
-                android:layout_marginRight="48dp"
+                android:layout_marginEnd="48dp"
                 android:layout_marginBottom="15.54dp"
                 android:layout_above="@+id/view_line"
-                android:layout_toRightOf="@+id/conversation_at_msg"
+                android:layout_toEndOf="@+id/conversation_at_msg"
                 android:ellipsize="end"
                 android:singleLine="true"
                 android:textColor="@color/list_bottom_text_bg"
@@ -85,7 +119,7 @@
                 android:id="@+id/not_disturb"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
-                android:layout_alignParentRight="true"
+                android:layout_alignParentEnd="true"
                 android:layout_alignParentBottom="true"
                 android:layout_above="@+id/view_line"
                 android:layout_marginBottom="15.54dp"
@@ -98,7 +132,7 @@
                 android:id="@+id/conversation_unread"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
-                android:layout_alignParentRight="true"
+                android:layout_alignParentEnd="true"
                 android:layout_alignParentBottom="true"
                 android:layout_above="@+id/view_line"
                 android:layout_marginBottom="15.54dp"