浏览代码

增加学生端直播结束提示UI

Pq 3 年之前
父节点
当前提交
d9057ab6d3

+ 100 - 10
student/src/main/java/com/cooleshow/student/ui/live/LiveRoomActivity.java

@@ -8,6 +8,7 @@ import android.content.Intent;
 import android.content.ServiceConnection;
 import android.content.pm.ActivityInfo;
 import android.content.res.Configuration;
+import android.graphics.Color;
 import android.net.Uri;
 import android.os.Bundle;
 import android.os.Handler;
@@ -122,6 +123,9 @@ public class LiveRoomActivity extends BaseMVPActivity<ActivityLiveroomLayoutBind
     public static final int SEND_APP_BACKGROUND_MSG = 1001;//退到后台消息
     public static final int SEND_JUMP_OTHER_PAGE_MSG = 1002;//页面切换消息(购物车详情页等等)
     public static final int OPEN_SHOP_CAR_DIALOG = 1003;//打开购物车
+    public static final int LIVE_STATUS_IS_REST = 1;//休息一下,马上回来
+    public static final int LIVE_STATUS_IS_CLOSE_VIDEO = 2;//主持人关闭画面
+    public static final int LIVE_STATUS_IS_OFFLINE = 3;//直播已结束
     ConstraintLayout content_view;
     RelativeLayout mFlLiveView;
     LinearLayout ll_like;
@@ -168,6 +172,7 @@ public class LiveRoomActivity extends BaseMVPActivity<ActivityLiveroomLayoutBind
     private String mUserId;
     private boolean connectStatusIsPaused = false;
     private boolean isNeedRefresh = false;//是否需要重新刷新房间信息
+    private boolean liveIsFinish = false;//直播间是否已结束
     private ServiceConnection serviceConnection;
     private ObjectAnimator hideHeaderInfoAnim;
     private ObjectAnimator showHeaderInfoAnim;
@@ -396,8 +401,7 @@ public class LiveRoomActivity extends BaseMVPActivity<ActivityLiveroomLayoutBind
         }
 
         if (id == R.id.icon_add_like) {
-            if (connectStatusIsPaused) {
-                //连接状态异常,暂停连麦
+            if (checkAddLikeMode()) {
                 return;
             }
             //点赞
@@ -415,6 +419,10 @@ public class LiveRoomActivity extends BaseMVPActivity<ActivityLiveroomLayoutBind
         }
 
         if (id == R.id.view_shop_car_anim) {
+            if (liveIsFinish) {
+                ToastUtil.getInstance().show(LiveRoomActivity.this, "直播已结束");
+                return;
+            }
             //购物车
             if (isFullScreen()) {
                 changeOrientation();
@@ -559,6 +567,25 @@ public class LiveRoomActivity extends BaseMVPActivity<ActivityLiveroomLayoutBind
         });
     }
 
+    /**
+     * 检查点赞按钮是否可用
+     *
+     * @return
+     */
+    private boolean checkAddLikeMode() {
+        if (liveIsFinish) {
+            ToastUtil.getInstance().show(LiveRoomActivity.this, "直播已结束");
+            return true;
+        }
+        if (connectStatusIsPaused) {
+            //连接状态异常,暂停点赞
+            ToastUtil.getInstance().show(LiveRoomActivity.this, "网络连接状态异常");
+            return true;
+        }
+        return false;
+    }
+
+
     private void showInputDialog() {
         if (checkChatMode()) return;
         if (mInputBarDialog == null) {
@@ -855,7 +882,7 @@ public class LiveRoomActivity extends BaseMVPActivity<ActivityLiveroomLayoutBind
 
     @Override
     public void showRestView() {
-        showLiveStatusView(true);
+        showLiveStatusView(LIVE_STATUS_IS_REST);
     }
 
     @Override
@@ -867,10 +894,10 @@ public class LiveRoomActivity extends BaseMVPActivity<ActivityLiveroomLayoutBind
             showRestView();
             return;
         }
-        showLiveStatusView(false);
+        showLiveStatusView(LIVE_STATUS_IS_CLOSE_VIDEO);
     }
 
-    private void showLiveStatusView(boolean isRestView) {
+    private void showLiveStatusView(int status) {
         if (isFinishing() || isDestroyed()) {
             return;
         }
@@ -883,12 +910,21 @@ public class LiveRoomActivity extends BaseMVPActivity<ActivityLiveroomLayoutBind
             public void run() {
                 hideLoading();
                 mViewLiveStatus.setVisibility(View.VISIBLE);
-                if (isRestView) {
+                if (status == LIVE_STATUS_IS_REST) {
                     mIvLiveStatusCenterIcon.setImageResource(R.drawable.icon_live_room_rest_bg);
-                    mTvLiveStatusTipText.setText("休息一下马上回来!!");
-                } else {
+                    mTvLiveStatusTipText.setText("休息一下,马上回来!!");
+                    mTvLiveStatusTipText.setTextSize(12);
+                    mTvLiveStatusTipText.setBackgroundResource(com.cooleshow.base.R.drawable.shape_gray_14dp);
+                } else if (status == LIVE_STATUS_IS_CLOSE_VIDEO) {
                     mIvLiveStatusCenterIcon.setImageResource(R.drawable.icon_live_room_close_video);
                     mTvLiveStatusTipText.setText("主持人已关闭画面!");
+                    mTvLiveStatusTipText.setTextSize(12);
+                    mTvLiveStatusTipText.setBackgroundResource(com.cooleshow.base.R.drawable.shape_gray_14dp);
+                } else if (status == LIVE_STATUS_IS_OFFLINE) {
+                    mIvLiveStatusCenterIcon.setImageResource(R.drawable.icon_live_end_tip);
+                    mTvLiveStatusTipText.setText("直播已结束!");
+                    mTvLiveStatusTipText.setTextSize(14);
+                    mTvLiveStatusTipText.setBackgroundColor(Color.TRANSPARENT);
                 }
             }
         });
@@ -952,7 +988,14 @@ public class LiveRoomActivity extends BaseMVPActivity<ActivityLiveroomLayoutBind
     public void liveRoomOffline() {
         //关闭直播间
         ToastUtil.getInstance().show(this, "直播已结束");
-        finish();
+        this.liveIsFinish = true;
+        //取消连麦
+        handleCloseMicEvent();
+        notifyMicDelAll();
+        showLiveStatusView(LIVE_STATUS_IS_OFFLINE);
+        hideDialog();
+        //离开房间
+        LiveEventHelper.getInstance().leaveRoom(null);
     }
 
     @Override
@@ -967,6 +1010,20 @@ public class LiveRoomActivity extends BaseMVPActivity<ActivityLiveroomLayoutBind
     }
 
     /**
+     * 关闭一些交互弹窗
+     */
+    private void hideDialog() {
+        //关闭邀请弹窗
+        if (mInviteSeatMicTipDialog != null && mInviteSeatMicTipDialog.isShowing()) {
+            mInviteSeatMicTipDialog.dismiss();
+        }
+        //关闭商品弹窗
+        if (mShopCarDialog != null && mShopCarDialog.isShowing()) {
+            mShopCarDialog.dismiss();
+        }
+    }
+
+    /**
      * @param rcUserSeatResponseMessage
      */
     @Override
@@ -1112,6 +1169,14 @@ public class LiveRoomActivity extends BaseMVPActivity<ActivityLiveroomLayoutBind
 
     @Override
     public void subscribeAVStreamSuccess(List<RCRTCInputStream> inputStreams) {
+        if (isDestroyed() || isFinishing()) {
+            return;
+
+        }
+        if (liveIsFinish) {
+            //直播已结束
+            return;
+        }
         if (inputStreams != null) {
             refresh();
         } else {
@@ -1133,6 +1198,20 @@ public class LiveRoomActivity extends BaseMVPActivity<ActivityLiveroomLayoutBind
         }
     }
 
+    /**
+     * 清除所有连麦用户的UI
+     */
+    private void notifyMicDelAll() {
+        if (mLlMicContainer != null) {
+            mLlMicContainer.post(new Runnable() {
+                @Override
+                public void run() {
+                    mLlMicContainer.delAll();
+                }
+            });
+        }
+    }
+
     private void notifyMicContainerDel(String userId) {
         mLlMicContainer.post(new Runnable() {
             @Override
@@ -1165,7 +1244,6 @@ public class LiveRoomActivity extends BaseMVPActivity<ActivityLiveroomLayoutBind
     @Override
     public void onExitSeatMicSuccess() {
         updateMicIcon(LiveRoomMsgConstants.MIC_STATUS_NORMAL);
-        notifyMicContainerDel(mUserId);
         if (presenter != null) {
             presenter.handleAction(LiveRoomMsgConstants.ACTION_SEND_DOWN_SEAT_MIC);
         }
@@ -1463,6 +1541,10 @@ public class LiveRoomActivity extends BaseMVPActivity<ActivityLiveroomLayoutBind
 
     @Override
     public void onBackPressed() {
+        if (liveIsFinish) {
+            super.onBackPressed();
+            return;
+        }
         boolean permissionOverlay = FloatWindowHelper.requestOverlayPermission(this);
         if (!permissionOverlay) {
             showOpenOverlayPermissionTipDialog();
@@ -1636,6 +1718,10 @@ public class LiveRoomActivity extends BaseMVPActivity<ActivityLiveroomLayoutBind
      * 检查聊天模式
      */
     public boolean checkChatMode() {
+        if (liveIsFinish) {
+            ToastUtil.getInstance().show(LiveRoomActivity.this, "直播已结束");
+            return true;
+        }
         if (isEnableAll) {
             ToastUtil.getInstance().show(LiveRoomActivity.this, "您已被管理员禁言");
             return true;
@@ -1651,6 +1737,10 @@ public class LiveRoomActivity extends BaseMVPActivity<ActivityLiveroomLayoutBind
      * 检查mic模式
      */
     public boolean checkMicMode() {
+        if (liveIsFinish) {
+            ToastUtil.getInstance().show(LiveRoomActivity.this, "直播已结束");
+            return true;
+        }
         if (isEnableAll) {
             ToastUtil.getInstance().show(LiveRoomActivity.this, "您已被管理员禁言");
             return true;

二进制
student/src/main/res/drawable-xhdpi/icon_live_end_tip.png


二进制
student/src/main/res/drawable-xxhdpi/icon_live_end_tip.png