ソースを参照

修改腾讯IM直播部分问题

Pq 1 年間 前
コミット
204a5b45f8
37 ファイル変更244 行追加243 行削除
  1. 1 0
      BaseLibrary/src/main/java/com/cooleshow/base/common/WebConstants.java
  2. 2 1
      BaseLibrary/src/main/java/com/cooleshow/base/widgets/InputBar.java
  3. 3 3
      tclive/src/main/java/com/daya/tclive/adapter/TTLiveRoomMessageAdapter.java
  4. 3 3
      tclive/src/main/java/com/daya/tclive/adapter/TTMessageAdapter.java
  5. 24 94
      tclive/src/main/java/com/daya/tclive/bean/FriendInfoBean.java
  6. 10 0
      tclive/src/main/java/com/daya/tclive/bean/LiveRoomInfoBean.java
  7. 1 1
      tclive/src/main/java/com/daya/tclive/manager/MessageManager.java
  8. 12 6
      tclive/src/main/java/com/daya/tclive/presenter/TCLivePresenter.java
  9. 14 9
      tclive/src/main/java/com/daya/tclive/presenter/TTLiveRoomPresenter.java
  10. 6 0
      tclive/src/main/java/com/daya/tclive/ui/LiveApplyMicFragment.java
  11. 61 35
      tclive/src/main/java/com/daya/tclive/ui/TCStudentLiveRoomActivity.java
  12. 16 8
      tclive/src/main/java/com/daya/tclive/ui/TCTeacherLiveRoomActivity.java
  13. 7 2
      tclive/src/main/java/com/daya/tclive/ui/TTLiveOnMicFragment.java
  14. 65 0
      tclive/src/main/java/com/daya/tclive/widget/TopTransparentRecyclerView.java
  15. 2 0
      tclive/src/main/java/com/daya/tclive/widget/dialog/LiveMicOnEventListener.java
  16. 1 1
      tclive/src/main/java/com/daya/tclive/widget/dialog/LiveRoomCloseMicTipDialog.java
  17. 1 1
      tclive/src/main/java/com/daya/tclive/widget/dialog/LiveRoomClosePageOnMicTipDialog.java
  18. 1 1
      tclive/src/main/java/com/daya/tclive/widget/dialog/LiveRoomExitTipDialog2.java
  19. 1 1
      tclive/src/main/java/com/daya/tclive/widget/dialog/LiveRoomInviteSeatMicTipDialog.java
  20. 1 1
      tclive/src/main/java/com/daya/tclive/widget/dialog/LiveRoomMicManagerDialog.java
  21. 2 2
      tclive/src/main/java/com/daya/tclive/widget/dialog/LiveRoomShopCarDialog.java
  22. 1 1
      tclive/src/main/java/com/daya/tclive/widget/dialog/TTLiveMicManagerDialog.java
  23. 4 1
      tclive/src/main/res/layout/ac_tt_liveroom_layout.xml
  24. 1 1
      tclive/src/main/res/layout/activity_tc_teacher_live_room_layout.xml
  25. 0 70
      tclive/src/main/res/layout/item_live_mic_manager_layout.xml
  26. 0 0
      tclive/src/main/res/layout/tc_dialog_live_mic_manager_layout.xml
  27. 0 0
      tclive/src/main/res/layout/tc_dialog_live_room_close_mic_layout.xml
  28. 0 0
      tclive/src/main/res/layout/tc_dialog_live_room_close_page_layout.xml
  29. 0 0
      tclive/src/main/res/layout/tc_dialog_live_room_exit_tip_layout2.xml
  30. 0 0
      tclive/src/main/res/layout/tc_dialog_live_room_invite_mic_layout.xml
  31. 0 0
      tclive/src/main/res/layout/tc_dialog_live_room_mic_manager_layout.xml
  32. 0 0
      tclive/src/main/res/layout/tc_dialog_live_room_shop_car_layout.xml
  33. 0 0
      tclive/src/main/res/layout/tc_item_live_room_join_message_text.xml
  34. 0 0
      tclive/src/main/res/layout/tc_item_live_room_message_mode_change.xml
  35. 0 0
      tclive/src/main/res/layout/tc_item_live_room_message_text.xml
  36. 0 0
      tclive/src/main/res/layout/tc_item_tc_live_room_status_layout.xml
  37. 4 1
      tclive/src/main/res/layout/view_tc_live_room_main_layout.xml

+ 1 - 0
BaseLibrary/src/main/java/com/cooleshow/base/common/WebConstants.java

@@ -14,6 +14,7 @@ public abstract class WebConstants {
     public static final String WEB_UA_PARAMS_TEACHER = ";COLEXIUTEACHER";
     public static final String WEB_JS_INTERFACE = "COLEXIU";
     public static final String WEB_URL = "web_url";//
+    public static final String WEB_TITLE = "title";//
     public static final String WEB_SOCKET_URL_TEST = "wss://dev.colexiu.com/audioAnalysis";
     public static final String WEB_SOCKET_URL_RELEASE = "wss://online.colexiu.com/audioAnalysis";
     public static final String WEB_SOCKET_URL_PRERELEASE = "wss://ponline.colexiu.com/audioAnalysis";

+ 2 - 1
BaseLibrary/src/main/java/com/cooleshow/base/widgets/InputBar.java

@@ -3,6 +3,7 @@ package com.cooleshow.base.widgets;
 import android.content.Context;
 import android.graphics.drawable.Drawable;
 import android.util.AttributeSet;
+import android.util.Log;
 import android.view.Gravity;
 import android.view.LayoutInflater;
 import android.widget.ImageView;
@@ -108,10 +109,10 @@ public class InputBar extends LinearLayout implements OnEmojiPopupShownListener,
         if (etInput.getText() != null) {
             message = etInput.getText().toString().trim();
         }
-        etInput.setText("");
 
         if (inputBarListener != null) {
             boolean isSuccess = inputBarListener.onClickSend(message);
+            Log.i("pq","sendMSG isSuccess:"+isSuccess);
             if (isSuccess) {
                 etInput.setText("");
             }

+ 3 - 3
tclive/src/main/java/com/daya/tclive/adapter/TTLiveRoomMessageAdapter.java

@@ -102,18 +102,18 @@ public class TTLiveRoomMessageAdapter extends RecyclerView.Adapter {
         switch (viewType) {
             case MESSAGE_TYPE_TEXT:
             case MESSAGE_TYPE_LOCAL_MSG:
-                View view = LayoutInflater.from(context).inflate(R.layout.item_live_room_message_text, parent, false);
+                View view = LayoutInflater.from(context).inflate(R.layout.tc_item_live_room_message_text, parent, false);
                 return new TextMessageHolder(view);
             case MESSAGE_TYPE_ON_SNAP_UP_MSG:
             case MESSAGE_TYPE_ADD_LIKE_MSG:
             case MESSAGE_TYPE_JOIN_ROOM:
-                View joinView = LayoutInflater.from(context).inflate(R.layout.item_live_room_join_message_text, parent, false);
+                View joinView = LayoutInflater.from(context).inflate(R.layout.tc_item_live_room_join_message_text, parent, false);
                 return new JoinRoomMessageHolder(joinView);
             case MESSAGE_TYPE_SEAT_APPLY_MSG:
             case MESSAGE_TYPE_SEAT_RESPONSE_MSG:
             case MESSAGE_TYPE_CHAT_CTRL_MSG:
             case MESSAGE_TYPE_SEAT_CTRL_MSG:
-                View modechangeView = LayoutInflater.from(context).inflate(R.layout.item_live_room_message_mode_change, parent, false);
+                View modechangeView = LayoutInflater.from(context).inflate(R.layout.tc_item_live_room_message_mode_change, parent, false);
                 return new ModeChangeMessageHolder(modechangeView);
         }
         return null;

+ 3 - 3
tclive/src/main/java/com/daya/tclive/adapter/TTMessageAdapter.java

@@ -103,18 +103,18 @@ public class TTMessageAdapter extends RecyclerView.Adapter {
         switch (viewType) {
             case MESSAGE_TYPE_TEXT:
             case MESSAGE_TYPE_LOCAL_MSG:
-                View view = LayoutInflater.from(context).inflate(R.layout.item_live_room_message_text, parent, false);
+                View view = LayoutInflater.from(context).inflate(R.layout.tc_item_live_room_message_text, parent, false);
                 return new TextMessageHolder(view);
             case MESSAGE_TYPE_ON_SNAP_UP_MSG:
             case MESSAGE_TYPE_ADD_LIKE_MSG:
             case MESSAGE_TYPE_JOIN_ROOM:
-                View joinView = LayoutInflater.from(context).inflate(R.layout.item_live_room_join_message_text, parent, false);
+                View joinView = LayoutInflater.from(context).inflate(R.layout.tc_item_live_room_join_message_text, parent, false);
                 return new JoinRoomMessageHolder(joinView);
             case MESSAGE_TYPE_SEAT_APPLY_MSG:
             case MESSAGE_TYPE_SEAT_RESPONSE_MSG:
             case MESSAGE_TYPE_CHAT_CTRL_MSG:
             case MESSAGE_TYPE_SEAT_CTRL_MSG:
-                View modechangeView = LayoutInflater.from(context).inflate(R.layout.item_live_room_message_mode_change, parent, false);
+                View modechangeView = LayoutInflater.from(context).inflate(R.layout.tc_item_live_room_message_mode_change, parent, false);
                 return new ModeChangeMessageHolder(modechangeView);
         }
         return null;

+ 24 - 94
tclive/src/main/java/com/daya/tclive/bean/FriendInfoBean.java

@@ -21,7 +21,6 @@ public class FriendInfoBean {
      * tenantId : 1
      */
 
-    public FriendBean friend;
     public String tags;
     public int userId;
     public int memberRankSettingId;
@@ -29,105 +28,36 @@ public class FriendInfoBean {
     public String memo;
     public String subjectId;
     public String friendId;
+    public String imFriendId;
     public Object updateTime;
     public String subjectName;
     public String friendNickname;
+    public String friendAvatar;
     public int id;
     public int tenantId;
 
-    public static class FriendBean {
-        /**
-         * roles : null
-         * username : 嗷嗷
-         * password : $2a$10$Ex7buphWImsizz8iVpZVwu9znDsRGUadunLNfiyxURdJtg3gY1uNK
-         * gender : 1
-         * certificateType :
-         * delFlag : 0
-         * organId : 1007
-         * salt :
-         * organName :
-         * userType : STUDENT
-         * phone : 18341111119
-         * avatar :
-         * currentClass : 2班
-         * currentGrade :
-         * birthdate : null
-         * idCardNo :
-         * imToken : lCvSFgo4OaH5OzMX/k6QoO1hdlQbTOD5RxAXMAscMjM=@n56a.cn.rongnav.com;n56a.cn.rongcfg.com
-         * createTime : 2022-02-25 16:46:49
-         * email :
-         * teacherId : 0
-         * isSuperAdmin : false
-         * lockFlag : 0
-         * deptId : 0
-         * deptIds :
-         * postDeptIds :
-         * updateTime : 2022-03-08 11:05:19
-         * organIdList :
-         * currentGradeNum : 2
-         * operatingTag : 0
-         * serviceTag : 0
-         * postalCode :
-         * postIds :
-         * bankCard :
-         * openBankAddress :
-         * positionName :
-         * positions :
-         * superAdmin : false
-         * wxOpenid :
-         * qqOpenid :
-         * nation :
-         * wechatId :
-         * contactAddress :
-         * id : 2163097
-         * realName :
-         * tenantId : 1
-         */
+    public String getFriendAvatar() {
+        return friendAvatar;
+    }
+
+    public void setFriendAvatar(String friendAvatar) {
+        this.friendAvatar = friendAvatar;
+    }
+
+    public String getImFriendId() {
+        return imFriendId;
+    }
 
-        public Object roles;
-        public String username;
-        public String password;
-        public int gender;
-        public String certificateType;
-        public int delFlag;
-        public int organId;
-        public String salt;
-        public String organName;
-        public String userType;
-        public String phone;
-        public String avatar;
-        public String currentClass;
-        public String currentGrade;
-        public Object birthdate;
-        public String idCardNo;
-        public String imToken;
-        public String createTime;
-        public String email;
-        public int teacherId;
-        public boolean isSuperAdmin;
-        public int lockFlag;
-        public int deptId;
-        public String deptIds;
-        public String postDeptIds;
-        public String updateTime;
-        public String organIdList;
-        public int currentGradeNum;
-        public int operatingTag;
-        public int serviceTag;
-        public String postalCode;
-        public String postIds;
-        public String bankCard;
-        public String openBankAddress;
-        public String positionName;
-        public String positions;
-        public boolean superAdmin;
-        public String wxOpenid;
-        public String qqOpenid;
-        public String nation;
-        public String wechatId;
-        public String contactAddress;
-        public int id;
-        public String realName;
-        public int tenantId;
+    public void setImFriendId(String imFriendId) {
+        this.imFriendId = imFriendId;
     }
+
+    public String getFriendId() {
+        return friendId;
+    }
+
+    public void setFriendId(String friendId) {
+        this.friendId = friendId;
+    }
+
 }

+ 10 - 0
tclive/src/main/java/com/daya/tclive/bean/LiveRoomInfoBean.java

@@ -51,6 +51,16 @@ public class LiveRoomInfoBean implements Parcelable {
 
     public int blacklistFlag;//当前登录人是否是黑名单用户 0否 1是
 
+    private String shopCarUrl;
+
+    public String getShopCarUrl() {
+        return shopCarUrl;
+    }
+
+    public void setShopCarUrl(String shopCarUrl) {
+        this.shopCarUrl = shopCarUrl;
+    }
+
     public LiveRoomConfigBean getLiveRoomConfig() {
         return liveRoomConfig;
     }

+ 1 - 1
tclive/src/main/java/com/daya/tclive/manager/MessageManager.java

@@ -91,7 +91,7 @@ public class MessageManager extends V2TIMAdvancedMsgListener {
             }
         } else {
             //添加基础的
-            messageContent.setSendUserInfo(new SendUserInfo(UserHelper.getUserId(), UserHelper.getUserName(), UserHelper.getUserAvatar()));
+            messageContent.setSendUserInfo(new SendUserInfo(UserHelper.getImUserId(), UserHelper.getUserName(), UserHelper.getUserAvatar()));
             // 创建自定义消息
             V2TIMMessage v2TIMMessage = V2TIMManager.getMessageManager().createCustomMessage(ttMessage.encode());
             // 发送消息

+ 12 - 6
tclive/src/main/java/com/daya/tclive/presenter/TCLivePresenter.java

@@ -81,6 +81,7 @@ import static com.tencent.imsdk.v2.V2TIMManager.V2TIM_STATUS_LOGINING;
 public class TCLivePresenter extends BasePresenter<TCLiveRoomContract.TCLiveRoomView> {
     public static final String TAG = "TCLivePresenter";
     private String roomId;
+    private boolean isSendDefaultMsg = true;
     private List<Disposable> disposablesManager = new ArrayList<>();//监听管理器
     private TRTCCloudListener mCloudListener = new TRTCCloudListener() {
         @Override
@@ -191,11 +192,14 @@ public class TCLivePresenter extends BasePresenter<TCLiveRoomContract.TCLiveRoom
         }
     };
 
-    public void initPublishConfig(Context context) {
+    public void initPublishConfig(Context context,String roomId) {
         //初始化直播SDK
         TRTCSdkManager.getInstance().init(context, mCloudListener);
         //初始化IM
         TCIMSdkManager.getInstance().init(context.getApplicationContext());
+        this.isSendDefaultMsg = true;
+        this.roomId =roomId;
+        registerListener(roomId);
     }
 
     public void startLocalPreview(TXCloudVideoView txCloudVideoView) {
@@ -265,7 +269,6 @@ public class TCLivePresenter extends BasePresenter<TCLiveRoomContract.TCLiveRoom
 
     public void connectIM(String roomId, String userId, String userSig) {
         int loginStatus = V2TIMManager.getInstance().getLoginStatus();
-        this.roomId = roomId;
         if (loginStatus == V2TIM_STATUS_LOGINED) {
             handleLoginSuccessEvent();
             return;
@@ -323,9 +326,12 @@ public class TCLivePresenter extends BasePresenter<TCLiveRoomContract.TCLiveRoom
     }
 
     public void sendDefaultMessage() {
-        TCChatRoomLocalMessage tips = new TCChatRoomLocalMessage();
-        tips.setText("欢迎进入直播课堂,请遵守相关法规,禁止传播低俗、暴力等不良信息。为孩子创造健康绿色的学习环境。");
-        sendMessage(tips, true);
+        if (isSendDefaultMsg) {
+            TCChatRoomLocalMessage tips = new TCChatRoomLocalMessage();
+            tips.setText("欢迎进入直播课堂,请遵守相关法规,禁止传播低俗、暴力等不良信息。为孩子创造健康绿色的学习环境。");
+            sendMessage(tips, true);
+            isSendDefaultMsg =false;
+        }
     }
 
 
@@ -476,7 +482,7 @@ public class TCLivePresenter extends BasePresenter<TCLiveRoomContract.TCLiveRoom
             if (param instanceof User) {
                 User user = (User) param;
                 TCUserSeatResponseMessage rcUserSeatResponseMessage = new TCUserSeatResponseMessage();
-                rcUserSeatResponseMessage.setTeacherId(UserHelper.getUserId());
+                rcUserSeatResponseMessage.setTeacherId(UserHelper.getImUserId());
                 rcUserSeatResponseMessage.setTeacherName(UserHelper.getUserName());
                 rcUserSeatResponseMessage.setAudienceId(user.getUserId());
                 rcUserSeatResponseMessage.setAudienceName(user.getUserName());

+ 14 - 9
tclive/src/main/java/com/daya/tclive/presenter/TTLiveRoomPresenter.java

@@ -78,6 +78,7 @@ import static com.tencent.imsdk.v2.V2TIMManager.V2TIM_STATUS_LOGINING;
 public class TTLiveRoomPresenter extends BasePresenter<TTLiveRoomContract.View> implements TTLiveRoomContract.Presenter {
     private final static String TAG = "TTLiveRoomPresenter";
     private String roomId;
+    private boolean isSendDefaultMsg = true;
     private List<Disposable> disposablesManager = new ArrayList<>();//监听管理器
     private TRTCCloudListener mCloudListener = new TRTCCloudListener() {
         @Override
@@ -219,6 +220,8 @@ public class TTLiveRoomPresenter extends BasePresenter<TTLiveRoomContract.View>
         TCSdkManager.getInstance().init(context.getApplicationContext(), TTLiveConfig.SDK_URL, TTLiveConfig.SDK_KEY);
         getRoomInfo(roomId);
         this.roomId = roomId;
+        this.isSendDefaultMsg = true;
+        registerListener();
     }
 
     @Override
@@ -276,7 +279,6 @@ public class TTLiveRoomPresenter extends BasePresenter<TTLiveRoomContract.View>
         if (getView() != null) {
             getView().loginIMSuccess();
         }
-        registerListener();
     }
 
     private void registerListener() {
@@ -322,9 +324,12 @@ public class TTLiveRoomPresenter extends BasePresenter<TTLiveRoomContract.View>
     }
 
     public void sendDefaultMessage() {
-        TCChatRoomLocalMessage tips = new TCChatRoomLocalMessage();
-        tips.setText("欢迎进入直播课堂,请遵守相关法规,禁止传播低俗、暴力等不良信息。为孩子创造健康绿色的学习环境。");
-        sendMessage(tips, true);
+        if (isSendDefaultMsg) {
+            TCChatRoomLocalMessage tips = new TCChatRoomLocalMessage();
+            tips.setText("欢迎进入直播课堂,请遵守相关法规,禁止传播低俗、暴力等不良信息。为孩子创造健康绿色的学习环境。");
+            sendMessage(tips, true);
+            isSendDefaultMsg = false;
+        }
     }
 
     public void sendTextMessage(String message) {
@@ -584,7 +589,7 @@ public class TTLiveRoomPresenter extends BasePresenter<TTLiveRoomContract.View>
                     rcUserSeatApplyMessage.setTeacherName((String) object[1]);
                 }
                 rcUserSeatApplyMessage.setAudienceAvatar(UserHelper.getUserAvatar());
-                rcUserSeatApplyMessage.setAudienceId(UserHelper.getUserId());
+                rcUserSeatApplyMessage.setAudienceId(UserHelper.getImUserId());
                 rcUserSeatApplyMessage.setAudienceName(UserHelper.getUserName());
                 sendMessage(rcUserSeatApplyMessage, true);
                 break;
@@ -598,14 +603,14 @@ public class TTLiveRoomPresenter extends BasePresenter<TTLiveRoomContract.View>
                     cancelApplyMessage.setTeacherId((String) object[0]);
                     cancelApplyMessage.setTeacherName((String) object[1]);
                 }
-                cancelApplyMessage.setAudienceId(UserHelper.getUserId());
+                cancelApplyMessage.setAudienceId(UserHelper.getImUserId());
                 cancelApplyMessage.setAudienceName(UserHelper.getUserName());
                 sendMessage(cancelApplyMessage, true);
                 break;
             case LiveRoomMsgConstants.ACTION_SEND_DOWN_SEAT_MIC:
                 //观众下麦消息
                 TCUserSeatDownMessage rcUserMicLeaveMessage = new TCUserSeatDownMessage();
-                rcUserMicLeaveMessage.setAudienceId(UserHelper.getUserId());
+                rcUserMicLeaveMessage.setAudienceId(UserHelper.getImUserId());
                 rcUserMicLeaveMessage.setAudienceName(UserHelper.getUserName());
                 sendMessage(rcUserMicLeaveMessage, false);
                 break;
@@ -619,7 +624,7 @@ public class TTLiveRoomPresenter extends BasePresenter<TTLiveRoomContract.View>
                     rcUserSeatResponseMessage.setTeacherId((String) object[0]);
                     rcUserSeatResponseMessage.setTeacherName((String) object[1]);
                 }
-                rcUserSeatResponseMessage.setAudienceId(UserHelper.getUserId());
+                rcUserSeatResponseMessage.setAudienceId(UserHelper.getImUserId());
                 rcUserSeatResponseMessage.setAudienceName(UserHelper.getUserName());
                 sendMessage(rcUserSeatResponseMessage, true);
                 break;
@@ -633,7 +638,7 @@ public class TTLiveRoomPresenter extends BasePresenter<TTLiveRoomContract.View>
                     disAgreeSeatResponseMessage.setTeacherId((String) object[0]);
                     disAgreeSeatResponseMessage.setTeacherName((String) object[1]);
                 }
-                disAgreeSeatResponseMessage.setAudienceId(UserHelper.getUserId());
+                disAgreeSeatResponseMessage.setAudienceId(UserHelper.getImUserId());
                 disAgreeSeatResponseMessage.setAudienceName(UserHelper.getUserName());
                 sendMessage(disAgreeSeatResponseMessage, true);
                 break;

+ 6 - 0
tclive/src/main/java/com/daya/tclive/ui/LiveApplyMicFragment.java

@@ -12,6 +12,7 @@ import com.chad.library.adapter.base.listener.OnItemChildClickListener;
 import com.chad.library.adapter.base.viewholder.BaseViewHolder;
 import com.cooleshow.base.ui.fragment.BaseFragment;
 import com.cooleshow.base.utils.GlideImageLoaderUtils;
+import com.cooleshow.base.utils.LOG;
 import com.cooleshow.base.utils.ToastUtil;
 import com.cooleshow.base.utils.UiUtils;
 import com.cooleshow.base.widgets.dialog.CommonConfirmDialog;
@@ -48,12 +49,14 @@ public class LiveApplyMicFragment extends BaseFragment<TcFgLiveApplyMicLayoutBin
 
     @Override
     protected void initView(View rootView) {
+        LOG.i("pq","LiveApplyMicFragment initView");
         mTvEnableMic = rootView.findViewById(R.id.tv_enable_mic);
         recyclerView = rootView.findViewById(R.id.recyclerView);
     }
 
     @Override
     protected void initData() {
+        LOG.i("pq","LiveApplyMicFragment initData");
         mViewBinding.tvRefuseAll.setOnClickListener(this);
         mViewBinding.tvEnableMic.setOnClickListener(this);
         LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getContext());
@@ -80,6 +83,9 @@ public class LiveApplyMicFragment extends BaseFragment<TcFgLiveApplyMicLayoutBin
             }
         });
         recyclerView.setAdapter(mAdapter);
+        if (mEventListener != null) {
+            mEventListener.getData();
+        }
     }
 
     @Override

+ 61 - 35
tclive/src/main/java/com/daya/tclive/ui/TCStudentLiveRoomActivity.java

@@ -10,6 +10,7 @@ import android.content.Intent;
 import android.content.ServiceConnection;
 import android.content.pm.ActivityInfo;
 import android.content.res.Configuration;
+import android.graphics.Canvas;
 import android.graphics.Color;
 import android.net.Uri;
 import android.os.Bundle;
@@ -29,11 +30,14 @@ import com.airbnb.lottie.LottieAnimationView;
 import com.alibaba.android.arouter.facade.annotation.Route;
 import com.alibaba.android.arouter.launcher.ARouter;
 import com.bumptech.glide.Glide;
+import com.cooleshow.base.common.WebConstants;
+import com.cooleshow.base.router.RouterPath;
 import com.cooleshow.base.ui.activity.BaseMVPActivity;
 import com.cooleshow.base.utils.AppUtils;
 import com.cooleshow.base.utils.GsonUtils;
 import com.cooleshow.base.utils.LOG;
 import com.cooleshow.base.utils.PermissionUtils;
+import com.cooleshow.base.utils.SoftKeyboardUtil;
 import com.cooleshow.base.utils.ToastUtil;
 import com.cooleshow.base.utils.UiUtils;
 import com.cooleshow.base.widgets.DensityUtil;
@@ -115,7 +119,7 @@ import static com.tencent.live2.V2TXLiveDef.V2TXLiveRotation.V2TXLiveRotation0;
  * Author by pq, Date on 2023/2/22.
  */
 @Route(path = ARouterConstace.ACTIVITY_TT_LIVE_ROOM)
-public class TCStudentLiveRoomActivity extends BaseMVPActivity<AcTtLiveroomLayoutBinding,TTLiveRoomPresenter> implements TTLiveRoomContract.View, View.OnClickListener {
+public class TCStudentLiveRoomActivity extends BaseMVPActivity<AcTtLiveroomLayoutBinding, TTLiveRoomPresenter> implements TTLiveRoomContract.View, View.OnClickListener, SoftKeyboardUtil.OnSoftInputChangedListener {
     public static final String TAG = "TTLiveRoomActivity";
 
     ConstraintLayout content_view;
@@ -315,13 +319,12 @@ public class TCStudentLiveRoomActivity extends BaseMVPActivity<AcTtLiveroomLayou
 
     @Override
     protected void initView() {
-        setStatusBarColor();
         content_view = viewBinding.contentView;
-        mVideoView= viewBinding.videoView;
-        flVideoContainer= viewBinding.flVideoContainer;
-        csVideoContainer= viewBinding.csVideoContainer;
-        mGroupViews= viewBinding.groupViews;
-        mFlJoinBarrage= viewBinding.flJoinBarrage;
+        mVideoView = viewBinding.videoView;
+        flVideoContainer = viewBinding.flVideoContainer;
+        csVideoContainer = viewBinding.csVideoContainer;
+        mGroupViews = viewBinding.groupViews;
+        mFlJoinBarrage = viewBinding.flJoinBarrage;
         mIvClose = viewBinding.ivClose;
         mFlSnapUpBarrage = viewBinding.flSnapUpBarrage;
         mIvSwitchVideoOrientation = viewBinding.ivSwitchVideoOrientation;
@@ -365,6 +368,12 @@ public class TCStudentLiveRoomActivity extends BaseMVPActivity<AcTtLiveroomLayou
         }
         mMessageAdapter = new TTMessageAdapter(this);
         mLinearLayoutManager = new LinearLayoutManager(this, RecyclerView.VERTICAL, false);
+        mRecyclerMsg.addItemDecoration(new RecyclerView.ItemDecoration() {
+            @Override
+            public void onDraw(@NonNull Canvas c, @NonNull RecyclerView parent, @NonNull RecyclerView.State state) {
+                super.onDraw(c, parent, state);
+            }
+        });
         mRecyclerMsg.setLayoutManager(mLinearLayoutManager);
         mRecyclerMsg.setAdapter(mMessageAdapter);
     }
@@ -393,7 +402,7 @@ public class TCStudentLiveRoomActivity extends BaseMVPActivity<AcTtLiveroomLayou
         //关键 player 对象与界面 view
         mMLivePlayer.setRenderView(mVideoView);
         mMLivePlayer.enableReceiveSeiMessage(true, TTLiveConfig.DEFAULT_PAYLOAD_TYPE);
-        presenter.init(this,mRoomId);
+        presenter.init(this, mRoomId);
         initListener();
     }
 
@@ -404,7 +413,7 @@ public class TCStudentLiveRoomActivity extends BaseMVPActivity<AcTtLiveroomLayou
     private void initListener() {
         initViewClickListener();
         TCIMSdkManager.getInstance().addEventListener(mTIMSDKListener);
-
+        SoftKeyboardUtil.registerSoftInputChangedListener(getWindow(), this);
         mRecyclerMsg.addOnScrollListener(new RecyclerView.OnScrollListener() {
             @Override
             public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) {
@@ -560,7 +569,7 @@ public class TCStudentLiveRoomActivity extends BaseMVPActivity<AcTtLiveroomLayou
         }
     }
 
-    private void initViewClickListener(){
+    private void initViewClickListener() {
         viewBinding.ivClose.setOnClickListener(this);
         viewBinding.ivSwitchVideoOrientation.setOnClickListener(this);
         viewBinding.flInput.setOnClickListener(this);
@@ -1300,6 +1309,9 @@ public class TCStudentLiveRoomActivity extends BaseMVPActivity<AcTtLiveroomLayou
     }
 
     private void showShopCarDialog() {
+        if (roomInfo == null || TextUtils.isEmpty(roomInfo.getShopCarUrl())) {
+            return;
+        }
         if (mShopCarDialog == null) {
             mShopCarDialog = new LiveRoomShopCarDialog(this);
             mShopCarDialog.setOnEventListener(new LiveRoomShopCarDialog.OnEventListener() {
@@ -1308,19 +1320,19 @@ public class TCStudentLiveRoomActivity extends BaseMVPActivity<AcTtLiveroomLayou
                     mShopCarDialog.dismiss();
                     //发送XXX正在抢购消息
                     presenter.handleAction(LiveRoomMsgConstants.ACTION_SEND_ON_SNAP_UP);
-//                    sendShowFloatWindowAction(SEND_JUMP_OTHER_PAGE_MSG);
-//                    ARouter.getInstance()
-//                            .build(ARouterConstace.ACTIVITY_HTML)
-//                            .withString(ARouterConstace.URL, url)
-//                            .withString(ARouterConstace.TITLE, "商品详情")
-//                            .navigation();
+                    sendShowFloatWindowAction(SEND_JUMP_OTHER_PAGE_MSG);
+                    ARouter.getInstance()
+                            .build(RouterPath.WebCenter.ACTIVITY_HTML)
+                            .withString(WebConstants.WEB_URL, url)
+                            .withString(WebConstants.WEB_TITLE, "商品详情")
+                            .navigation();
                 }
             });
         }
         if (!mShopCarDialog.isShowing()) {
             mShopCarDialog.show();
         }
-        mShopCarDialog.setRoomId(mRoomId);
+        mShopCarDialog.setRoomId(mRoomId, roomInfo.getShopCarUrl());
     }
 
     private void showInviteSeatDialog() {
@@ -1456,7 +1468,7 @@ public class TCStudentLiveRoomActivity extends BaseMVPActivity<AcTtLiveroomLayou
             updateMicIcon(LiveRoomMsgConstants.MIC_STATUS_NORMAL);
             ToastUtil.getInstance().show(TCStudentLiveRoomActivity.this, getString(R.string.create_refuse_seat_tip));
             if (roomInfo != null) {
-                presenter.buildResponseMessage(mUserId, roomInfo.speakerId, roomInfo.speakerName);
+                presenter.buildResponseMessage(mUserId, roomInfo.speakerImUserId, roomInfo.speakerName);
             }
         }
     }
@@ -1600,11 +1612,8 @@ public class TCStudentLiveRoomActivity extends BaseMVPActivity<AcTtLiveroomLayou
             return;
         }
         if (mLlMicContainer != null && friendInfoBean != null) {
-            String friendAvatar = "";
-            if (friendInfoBean.friend != null) {
-                friendAvatar = friendInfoBean.friend.avatar;
-            }
-            mLlMicContainer.updateTargetUserInfo(new TTUserInfo(friendInfoBean.friendId, friendInfoBean.friendNickname, !TextUtils.isEmpty(friendAvatar) ? Uri.parse(friendAvatar) : null));
+            String friendAvatar = friendInfoBean.getFriendAvatar();
+            mLlMicContainer.updateTargetUserInfo(new TTUserInfo(friendInfoBean.getImFriendId(), friendInfoBean.friendNickname, !TextUtils.isEmpty(friendAvatar) ? Uri.parse(friendAvatar) : null));
         }
     }
 
@@ -2000,7 +2009,7 @@ public class TCStudentLiveRoomActivity extends BaseMVPActivity<AcTtLiveroomLayou
         }
         if (roomInfo != null) {
             this.roomInfo = roomInfo;
-            LOG.i(TAG,"getRoomInfoSuccess:"+roomInfo.toString());
+            LOG.i(TAG, "getRoomInfoSuccess:" + roomInfo.toString());
             String userSig = roomInfo.getUserSig();
             if (!TextUtils.isEmpty(userSig)) {
                 presenter.connectIM(mUserId, userSig);
@@ -2022,19 +2031,21 @@ public class TCStudentLiveRoomActivity extends BaseMVPActivity<AcTtLiveroomLayou
 //                    isEnableChat = chatCtrlMode == 1;
 //                    isEnableMic = micCtrlMode == 1;
 //
-//                    if (shopCarMode == 1) {
-//                        //隐藏购物车
-//                        mViewShopCarAnim.setVisibility(View.GONE);
-//                        mIvShopCar.setVisibility(View.GONE);
-//                    } else {
-//                        //显示购物车
-//                        mViewShopCarAnim.setVisibility(View.VISIBLE);
-//                        mIvShopCar.setVisibility(View.INVISIBLE);
-//                    }
+//
 //                } catch (JSONException e) {
 //                    e.printStackTrace();
 //                }
 //            }
+
+            if (TextUtils.isEmpty(roomInfo.getShopCarUrl())) {
+                //隐藏购物车
+                mViewShopCarAnim.setVisibility(View.GONE);
+                mIvShopCar.setVisibility(View.GONE);
+            } else {
+                //显示购物车
+                mViewShopCarAnim.setVisibility(View.VISIBLE);
+                mIvShopCar.setVisibility(View.INVISIBLE);
+            }
             //黑名单模式
             isEnableAll = roomInfo.blacklistFlag == 1;//1是黑名单 0否
             updateInputTip();
@@ -2212,7 +2223,7 @@ public class TCStudentLiveRoomActivity extends BaseMVPActivity<AcTtLiveroomLayou
 
     public String getSpeakerId() {
         if (roomInfo != null) {
-            return roomInfo.speakerId;
+            return roomInfo.speakerImUserId;
         }
         return "";
     }
@@ -2329,6 +2340,21 @@ public class TCStudentLiveRoomActivity extends BaseMVPActivity<AcTtLiveroomLayou
     }
 
     @Override
+    public void onSoftInputChanged(int height) {
+        Log.i("pq", "height" + height);
+        if (height == 0) {
+            //软键盘隐藏
+            Log.i("pq", "SoftInput hide");
+            if (mInputBarDialog != null && mInputBarDialog.isShowing()) {
+                mInputBarDialog.dismiss();
+            }
+        } else {
+            //软键盘弹出
+            Log.i("pq", "SoftInput show");
+        }
+    }
+
+    @Override
     public void onDestroy() {
         if (presenter != null) {
             presenter.release();
@@ -2350,11 +2376,11 @@ public class TCStudentLiveRoomActivity extends BaseMVPActivity<AcTtLiveroomLayou
             showHeaderInfoAnim.cancel();
             showHeaderInfoAnim = null;
         }
+        SoftKeyboardUtil.unregisterSoftInputChangedListener(getWindow());
         LiveRoomAnimatorHelper.getInstance().releaseAnimator();
         LiveRoomAddLikeHelper.getInstance().release();
         TRTCSdkManager.getInstance().release();
         TCIMSdkManager.getInstance().quitGroup(mRoomId);
         TCIMSdkManager.getInstance().release(mTIMSDKListener);
     }
-
 }

+ 16 - 8
tclive/src/main/java/com/daya/tclive/ui/TCTeacherLiveRoomActivity.java

@@ -2,6 +2,7 @@ package com.daya.tclive.ui;
 
 import android.Manifest;
 import android.content.DialogInterface;
+import android.graphics.Canvas;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Looper;
@@ -409,7 +410,6 @@ public class TCTeacherLiveRoomActivity extends BaseMVPActivity<ActivityTcTeacher
         tvCountTimeValue = viewBinding.viewMainLayout.tvCountTimeValue;
         tvCountTimeTip = viewBinding.viewMainLayout.tvCountTimeTip;
         iconFinishLive = viewBinding.viewMainLayout.iconFinishLive;
-        setStatusBarColor();
     }
 
     @Override
@@ -456,6 +456,12 @@ public class TCTeacherLiveRoomActivity extends BaseMVPActivity<ActivityTcTeacher
         mRoomMicMemberHelper.setOnEventListener(this);
         mMessageAdapter = new TTLiveRoomMessageAdapter(this);
         mLinearLayoutManager = new LinearLayoutManager(this, RecyclerView.VERTICAL, false);
+        recyclerMsg.addItemDecoration(new RecyclerView.ItemDecoration() {
+            @Override
+            public void onDraw(@NonNull Canvas c, @NonNull RecyclerView parent, @NonNull RecyclerView.State state) {
+                super.onDraw(c, parent, state);
+            }
+        });
         recyclerMsg.setLayoutManager(mLinearLayoutManager);
         recyclerMsg.setAdapter(mMessageAdapter);
         checkNeedPermission();
@@ -492,7 +498,7 @@ public class TCTeacherLiveRoomActivity extends BaseMVPActivity<ActivityTcTeacher
 
     private void initLiveConfig() {
         Log.i("pq", "initPublishConfig");
-        presenter.initPublishConfig(this);
+        presenter.initPublishConfig(this,mRoomId);
         prepareInitRoom();
     }
 
@@ -1111,6 +1117,12 @@ public class TCTeacherLiveRoomActivity extends BaseMVPActivity<ActivityTcTeacher
                         presenter.notifyLiveRoomCloseMic(mRoomId, isCloseAllMic);
                     }
                 }
+
+                @Override
+                public void getData() {
+                    mLiveMicManagerDialog.setApplyListData(mRoomMicMemberHelper.getOnApplyMicUsers());
+                    mLiveMicManagerDialog.setOnMicListData(mRoomMicMemberHelper.getOnMicUsers());
+                }
             });
         }
         if (!mLiveMicManagerDialog.isShowing()) {
@@ -1263,14 +1275,10 @@ public class TCTeacherLiveRoomActivity extends BaseMVPActivity<ActivityTcTeacher
         if (isFinishing() || isDestroyed() || data == null) {
             return;
         }
-        FriendInfoBean.FriendBean friend = data.friend;
-        if (friend == null) {
-            return;
-        }
         User user = new User();
-        user.setUserId(data.friendId);
+        user.setUserId(data.getImFriendId());
         user.setUserName(data.friendNickname);
-        user.setPortrait(data.friend.avatar);
+        user.setPortrait(data.getFriendAvatar());
         mRoomMicMemberHelper.refreshUserInfo(user);
         refreshMicData();
     }

+ 7 - 2
tclive/src/main/java/com/daya/tclive/ui/TTLiveOnMicFragment.java

@@ -13,6 +13,7 @@ import com.chad.library.adapter.base.listener.OnItemChildClickListener;
 import com.chad.library.adapter.base.viewholder.BaseViewHolder;
 import com.cooleshow.base.ui.fragment.BaseFragment;
 import com.cooleshow.base.utils.GlideImageLoaderUtils;
+import com.cooleshow.base.utils.LOG;
 import com.cooleshow.base.widgets.dialog.CommonConfirmDialog;
 import com.daya.tclive.R;
 import com.daya.tclive.bean.User;
@@ -45,11 +46,12 @@ public class TTLiveOnMicFragment extends BaseFragment<TcFgTtLiveOnMicLayoutBindi
 
     @Override
     protected void initView(View rootView) {
-
+        LOG.i("pq","TTLiveOnMicFragment initView");
     }
 
     @Override
     protected void initData() {
+        LOG.i("pq","TTLiveOnMicFragment initData");
         recyclerView = mViewBinding.recyclerView;
         tvCloseAllMic = mViewBinding.tvCloseAllMic;
         mViewBinding.tvDownAllMic.setOnClickListener(this);
@@ -87,6 +89,9 @@ public class TTLiveOnMicFragment extends BaseFragment<TcFgTtLiveOnMicLayoutBindi
         });
         recyclerView.setAdapter(mAdapter);
         refreshMuteAllMicMode();
+        if (mEventListener != null) {
+            mEventListener.getData();
+        }
     }
 
     @Override
@@ -158,7 +163,7 @@ public class TTLiveOnMicFragment extends BaseFragment<TcFgTtLiveOnMicLayoutBindi
 
     private class Adapter extends BaseQuickAdapter<User, BaseViewHolder> {
         public Adapter() {
-            super(R.layout.item_live_mic_manager_layout);
+            super(R.layout.tc_item_live_mic_manager_layout);
             addChildClickViewIds(R.id.tv_handle);
             addChildClickViewIds(R.id.iv_stu_mic_status);
         }

+ 65 - 0
tclive/src/main/java/com/daya/tclive/widget/TopTransparentRecyclerView.java

@@ -0,0 +1,65 @@
+package com.daya.tclive.widget;
+
+import android.content.Context;
+import android.util.AttributeSet;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.recyclerview.widget.RecyclerView;
+
+/**
+ * Author by pq, Date on 2023/7/24.
+ */
+public class TopTransparentRecyclerView extends RecyclerView {
+    public TopTransparentRecyclerView(@NonNull Context context) {
+        super(context);
+    }
+
+    public TopTransparentRecyclerView(@NonNull Context context, @Nullable AttributeSet attrs) {
+        super(context, attrs);
+    }
+
+    public TopTransparentRecyclerView(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
+        super(context, attrs, defStyleAttr);
+    }
+
+    /**
+     * 重写这个方法,返回值是0,去掉顶部阴影
+     *
+     * @return
+     */
+    @Override
+    protected float getTopFadingEdgeStrength() {
+        return super.getTopFadingEdgeStrength();
+    }
+    /**
+     * 重写这个方法,返回值是0,去底顶部阴影
+     *
+     * @return
+     */
+    @Override
+    protected float getBottomFadingEdgeStrength() {
+        //return super.getBottomFadingEdgeStrength();
+        return 0;
+    }
+
+    /**
+     * 重写这个方法,返回值是0,去左顶部阴影
+     *
+     * @return
+     */
+    @Override
+    protected float getLeftFadingEdgeStrength() {
+        return super.getLeftFadingEdgeStrength();
+    }
+
+    /**
+     * 重写这个方法,返回值是0,去底右部阴影
+     *
+     * @return
+     */
+    @Override
+    protected float getRightFadingEdgeStrength() {
+        return super.getRightFadingEdgeStrength();
+    }
+}

+ 2 - 0
tclive/src/main/java/com/daya/tclive/widget/dialog/LiveMicOnEventListener.java

@@ -23,4 +23,6 @@ public interface LiveMicOnEventListener {
     void onUnderAllMic();
     //全部闭麦
     void onCloseAllMic(boolean isCloseAllMic);
+
+    void getData();
 }

+ 1 - 1
tclive/src/main/java/com/daya/tclive/widget/dialog/LiveRoomCloseMicTipDialog.java

@@ -28,7 +28,7 @@ public class LiveRoomCloseMicTipDialog extends Dialog implements View.OnClickLis
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
-        setContentView(R.layout.dialog_live_room_close_mic_layout);
+        setContentView(R.layout.tc_dialog_live_room_close_mic_layout);
         mTvSure = findViewById(R.id.tv_sure);
         mTvCancel = findViewById(R.id.tv_cancel);
         mTvTip = findViewById(R.id.tv_tip);

+ 1 - 1
tclive/src/main/java/com/daya/tclive/widget/dialog/LiveRoomClosePageOnMicTipDialog.java

@@ -29,7 +29,7 @@ public class LiveRoomClosePageOnMicTipDialog extends Dialog implements View.OnCl
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
-        setContentView(R.layout.dialog_live_room_close_page_layout);
+        setContentView(R.layout.tc_dialog_live_room_close_page_layout);
         mTvSure = findViewById(R.id.tv_sure);
         mTvCancel = findViewById(R.id.tv_cancel);
         mTvTip = findViewById(R.id.tv_tip);

+ 1 - 1
tclive/src/main/java/com/daya/tclive/widget/dialog/LiveRoomExitTipDialog2.java

@@ -28,7 +28,7 @@ public class LiveRoomExitTipDialog2 extends Dialog implements View.OnClickListen
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
-        setContentView(R.layout.dialog_live_room_exit_tip_layout2);
+        setContentView(R.layout.tc_dialog_live_room_exit_tip_layout2);
         mTvSure = findViewById(R.id.tv_sure);
         mTvCancel = findViewById(R.id.tv_cancel);
         mTvTip = findViewById(R.id.tv_tip);

+ 1 - 1
tclive/src/main/java/com/daya/tclive/widget/dialog/LiveRoomInviteSeatMicTipDialog.java

@@ -28,7 +28,7 @@ public class LiveRoomInviteSeatMicTipDialog extends Dialog {
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
-        setContentView(R.layout.dialog_live_room_invite_mic_layout);
+        setContentView(R.layout.tc_dialog_live_room_invite_mic_layout);
         mTvSure = findViewById(R.id.tv_sure);
         mTvCancel = findViewById(R.id.tv_cancel);
         mTvContent = findViewById(R.id.tv_content);

+ 1 - 1
tclive/src/main/java/com/daya/tclive/widget/dialog/LiveRoomMicManagerDialog.java

@@ -44,7 +44,7 @@ public class LiveRoomMicManagerDialog extends Dialog implements View.OnClickList
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
-        setContentView(R.layout.dialog_live_room_mic_manager_layout);
+        setContentView(R.layout.tc_dialog_live_room_mic_manager_layout);
         Window window = getWindow();
         //设置dialog在屏幕底部
         window.setGravity(Gravity.BOTTOM);

+ 2 - 2
tclive/src/main/java/com/daya/tclive/widget/dialog/LiveRoomShopCarDialog.java

@@ -68,7 +68,7 @@ public class LiveRoomShopCarDialog extends Dialog {
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
-        setContentView(R.layout.dialog_live_room_shop_car_layout);
+        setContentView(R.layout.tc_dialog_live_room_shop_car_layout);
         Window window = getWindow();
         //设置dialog在屏幕底部
         window.setGravity(Gravity.BOTTOM);
@@ -108,7 +108,7 @@ public class LiveRoomShopCarDialog extends Dialog {
         }
     }
 
-    public void setRoomId(String roomId) {
+    public void setRoomId(String roomId,String url) {
         if(TextUtils.isEmpty(webUrl)){
             webUrl = UrlConstants.getShopCarWebUrl() + "?liveId=" + roomId;
             if (!TextUtils.isEmpty(authorization)) {

+ 1 - 1
tclive/src/main/java/com/daya/tclive/widget/dialog/TTLiveMicManagerDialog.java

@@ -48,7 +48,7 @@ public class TTLiveMicManagerDialog extends Dialog implements View.OnClickListen
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
-        setContentView(R.layout.dialog_live_mic_manager_layout);
+        setContentView(R.layout.tc_dialog_live_mic_manager_layout);
         Window window = getWindow();
         //设置dialog在屏幕底部
         window.setGravity(Gravity.BOTTOM);

+ 4 - 1
tclive/src/main/res/layout/ac_tt_liveroom_layout.xml

@@ -362,8 +362,11 @@
         app:layout_constraintRight_toRightOf="parent"
         app:layout_constraintTop_toBottomOf="@+id/fl_video_container">
 
-        <androidx.recyclerview.widget.RecyclerView
+        <com.daya.tclive.widget.TopTransparentRecyclerView
             android:id="@+id/recycler_msg"
+            android:fadingEdgeLength="70dp"
+            android:maxWidth="240dp"
+            android:requiresFadingEdge="vertical"
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             android:overScrollMode="never"

+ 1 - 1
tclive/src/main/res/layout/activity_tc_teacher_live_room_layout.xml

@@ -16,7 +16,7 @@
 
     <include
         android:id="@+id/view_live_status"
-        layout="@layout/item_tc_live_room_status_layout"
+        layout="@layout/tc_item_tc_live_room_status_layout"
         android:layout_width="0dp"
         android:layout_height="0dp"
         android:visibility="gone"

+ 0 - 70
tclive/src/main/res/layout/item_live_mic_manager_layout.xml

@@ -1,70 +0,0 @@
-<?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"
-    android:layout_marginTop="10dp"
-    android:paddingStart="14dp"
-    android:paddingEnd="14dp">
-
-    <de.hdodenhof.circleimageview.CircleImageView
-        android:id="@+id/iv_avatar"
-        android:layout_width="48dp"
-        android:layout_height="48dp"
-        app:layout_constraintLeft_toLeftOf="parent"
-        app:layout_constraintTop_toTopOf="parent" />
-
-    <TextView
-        android:id="@+id/tv_name"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:paddingStart="10dp"
-        android:textColor="@color/color_1a1a1a"
-        android:textSize="15sp"
-        app:layout_constraintBottom_toTopOf="@+id/tv_tip"
-        app:layout_constraintLeft_toRightOf="@+id/iv_avatar"
-        app:layout_constraintTop_toTopOf="@+id/iv_avatar"
-        app:layout_constraintVertical_chainStyle="packed"
-        tools:text="王欣欣" />
-
-    <TextView
-        android:id="@+id/tv_tip"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_marginTop="5dp"
-        android:paddingStart="10dp"
-        android:text="申请连麦中"
-        android:textColor="@color/color_1a1a1a"
-        android:textSize="13sp"
-        app:layout_constraintBottom_toBottomOf="@+id/iv_avatar"
-        app:layout_constraintLeft_toRightOf="@+id/iv_avatar"
-        app:layout_constraintTop_toBottomOf="@+id/tv_name" />
-
-
-    <TextView
-        android:id="@+id/tv_handle"
-        android:layout_width="64dp"
-        android:layout_height="28dp"
-        android:background="@drawable/shape_8dp_01c1b5"
-        android:gravity="center"
-        android:includeFontPadding="false"
-        android:textColor="@color/white"
-        android:textSize="14sp"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintRight_toRightOf="parent"
-        app:layout_constraintTop_toTopOf="parent"
-        tools:text="上麦" />
-
-    <ImageView
-        tools:visibility="visible"
-        android:visibility="gone"
-        android:id="@+id/iv_stu_mic_status"
-        android:layout_marginEnd="16dp"
-        app:layout_constraintRight_toLeftOf="@+id/tv_handle"
-        app:layout_constraintBottom_toBottomOf="@+id/tv_handle"
-        app:layout_constraintTop_toTopOf="@+id/tv_handle"
-        android:src="@drawable/icon_tt_live_stu_mic_status_open"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"/>
-</androidx.constraintlayout.widget.ConstraintLayout>

+ 0 - 0
tclive/src/main/res/layout/dialog_live_mic_manager_layout.xml → tclive/src/main/res/layout/tc_dialog_live_mic_manager_layout.xml


+ 0 - 0
tclive/src/main/res/layout/dialog_live_room_close_mic_layout.xml → tclive/src/main/res/layout/tc_dialog_live_room_close_mic_layout.xml


+ 0 - 0
tclive/src/main/res/layout/dialog_live_room_close_page_layout.xml → tclive/src/main/res/layout/tc_dialog_live_room_close_page_layout.xml


+ 0 - 0
tclive/src/main/res/layout/dialog_live_room_exit_tip_layout2.xml → tclive/src/main/res/layout/tc_dialog_live_room_exit_tip_layout2.xml


+ 0 - 0
tclive/src/main/res/layout/dialog_live_room_invite_mic_layout.xml → tclive/src/main/res/layout/tc_dialog_live_room_invite_mic_layout.xml


+ 0 - 0
tclive/src/main/res/layout/dialog_live_room_mic_manager_layout.xml → tclive/src/main/res/layout/tc_dialog_live_room_mic_manager_layout.xml


+ 0 - 0
tclive/src/main/res/layout/dialog_live_room_shop_car_layout.xml → tclive/src/main/res/layout/tc_dialog_live_room_shop_car_layout.xml


+ 0 - 0
tclive/src/main/res/layout/item_live_room_join_message_text.xml → tclive/src/main/res/layout/tc_item_live_room_join_message_text.xml


+ 0 - 0
tclive/src/main/res/layout/item_live_room_message_mode_change.xml → tclive/src/main/res/layout/tc_item_live_room_message_mode_change.xml


+ 0 - 0
tclive/src/main/res/layout/item_live_room_message_text.xml → tclive/src/main/res/layout/tc_item_live_room_message_text.xml


+ 0 - 0
tclive/src/main/res/layout/item_tc_live_room_status_layout.xml → tclive/src/main/res/layout/tc_item_tc_live_room_status_layout.xml


+ 4 - 1
tclive/src/main/res/layout/view_tc_live_room_main_layout.xml

@@ -320,8 +320,11 @@
         app:layout_constraintLeft_toLeftOf="parent"
         app:layout_constraintRight_toRightOf="parent">
 
-        <androidx.recyclerview.widget.RecyclerView
+        <com.daya.tclive.widget.TopTransparentRecyclerView
             android:id="@+id/recycler_msg"
+            android:fadingEdgeLength="70dp"
+            android:maxWidth="240dp"
+            android:requiresFadingEdge="vertical"
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             android:overScrollMode="never"