Jelajahi Sumber

增加网络教室老师端返回白板功能流程

Pq 1 tahun lalu
induk
melakukan
d5267c75f4

+ 94 - 54
classRoom/src/main/java/com/dayayuemeng/classroom/ui/TeacherNetClassRoomActivity.java

@@ -28,6 +28,7 @@ import android.widget.Toast;
 import com.alibaba.android.arouter.facade.annotation.Route;
 import com.cooleshow.base.ui.activity.BaseMVPActivity;
 import com.cooleshow.base.utils.AppUtils;
+import com.cooleshow.base.utils.LOG;
 import com.cooleshow.base.utils.PermissionUtils;
 import com.cooleshow.base.utils.ToastUtil;
 import com.cooleshow.base.utils.helper.QMUIDisplayHelper;
@@ -358,6 +359,11 @@ public class TeacherNetClassRoomActivity extends BaseMVPActivity<AcNetClassRoomT
             controlVideoListViewVisibility(true);
             return;
         }
+
+        if (id == R.id.tv_reback_wb) {
+            showWhiteBoard(true);
+            return;
+        }
     }
 
     private void controlVideoListViewVisibility(boolean isVisibility) {
@@ -431,6 +437,8 @@ public class TeacherNetClassRoomActivity extends BaseMVPActivity<AcNetClassRoomT
         });
     }
 
+    private ScreenDisplay.Display lastDisplay;
+
     private void initViewModel() {
         isVisibilityTopFragmentAnimation(HIDE_TOP_OPERATE_TIME);
         isRefreshClassViewModel = true;
@@ -517,6 +525,8 @@ public class TeacherNetClassRoomActivity extends BaseMVPActivity<AcNetClassRoomT
                     //需要判断是否是播放节拍器或者伴奏模式 并且是全员播放的情况
                     checkPlayStatus(screenDisplay.getUserId());
                 }
+                checkNeedPackUpWhiteBoard(screenDisplay);
+
             }
         });
 
@@ -638,6 +648,40 @@ public class TeacherNetClassRoomActivity extends BaseMVPActivity<AcNetClassRoomT
         });
     }
 
+    boolean isNeedCheckPackUpWhiteBoardMode = false;
+
+    private void checkNeedPackUpWhiteBoard(ScreenDisplay screenDisplay) {
+        if (screenDisplay == null) {
+            changeBackWhiteBoardButtonVisibility(false);
+            return;
+        }
+        if (!isNeedCheckPackUpWhiteBoardMode) {
+            return;
+        }
+        LOG.i("current ScreenDisplay:" + screenDisplay.getType());
+        LOG.i("lastDisplay:" + (lastDisplay != null ? lastDisplay.getType() : "null"));
+        ScreenDisplay.Display currentDisplayType = screenDisplay.getType();
+        if (currentDisplayType == ScreenDisplay.Display.WHITEBOARD) {
+            changeBackWhiteBoardButtonVisibility(false);
+        }
+        if (lastDisplay != null && lastDisplay == ScreenDisplay.Display.WHITEBOARD) {
+            if (currentDisplayType == ScreenDisplay.Display.LECTURER || currentDisplayType == ScreenDisplay.Display.STUDENT) {
+                showWhiteBoard(false);
+                changeBackWhiteBoardButtonVisibility(true);
+            }
+        }
+        boolean onStageMember = isOnStageMember(screenDisplay.getUserId());
+        if (onStageMember) {
+            showWhiteBoard(false);
+            changeBackWhiteBoardButtonVisibility(false);
+        }
+        TeacherNetClassRoomActivity.this.lastDisplay = screenDisplay.getType();
+    }
+
+    private void changeBackWhiteBoardButtonVisibility(boolean isShow) {
+        viewBinding.tvRebackWb.setVisibility(isShow ? View.VISIBLE : View.GONE);
+    }
+
     private void checkPlayStatus(String targetId) {
         Boolean isPlayBeat = classViewModel.getPlayBeatStatus().getValue();
         Boolean isPlayMusic = classViewModel.getAccompanyStatus().getValue();
@@ -656,6 +700,7 @@ public class TeacherNetClassRoomActivity extends BaseMVPActivity<AcNetClassRoomT
     }
 
     private void initListener() {
+        viewBinding.tvRebackWb.setOnClickListener(this);
         viewBinding.tvTeachingTools.setOnClickListener(this);
         viewBinding.clLive.setOnClickListener(this);
         viewBinding.ivPackUpVideoList.setOnClickListener(this);
@@ -985,11 +1030,29 @@ public class TeacherNetClassRoomActivity extends BaseMVPActivity<AcNetClassRoomT
         }
     }
 
+    private void showWhiteBoard(boolean isShow) {
+        FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
+        transaction.setCustomAnimations(R.anim.slid_left_in, R.anim.slid_left_out);
+        BaseWhiteFragment whiteBoardFragment;
+        whiteBoardFragment = (BaseWhiteFragment) getSupportFragmentManager().findFragmentByTag("whiteBoardFragment");
+        if (whiteBoardFragment != null) {
+            if (isShow) {
+                transaction.show(whiteBoardFragment);
+                classViewModel.switchDisplay(getRoomId(), ScreenDisplay.Display.WHITEBOARD
+                        , userInfo.getUserId(), false);
+            } else {
+                transaction.hide(whiteBoardFragment);
+            }
+            transaction.commitNowAllowingStateLoss();
+            switchAnimation(false);
+        }
+    }
 
     private void switchWhiteBorardOrVideo(NewTeachingToolsFragment.Operate operate, boolean isPostDisplay) {
         FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
         transaction.setCustomAnimations(R.anim.slid_left_in, R.anim.slid_left_out);
         if (NewTeachingToolsFragment.Operate.SHARE_WHITE_BOARD == operate) {
+            isNeedCheckPackUpWhiteBoardMode = true;
             BaseWhiteFragment whiteBoardFragment;
             whiteBoardFragment = (BaseWhiteFragment) getSupportFragmentManager().findFragmentByTag("whiteBoardFragment");
             if (whiteBoardFragment == null) {
@@ -1033,11 +1096,6 @@ public class TeacherNetClassRoomActivity extends BaseMVPActivity<AcNetClassRoomT
                 if (userInfo.getRole() == Role.LECTURER) {
                     if (isNewWhiteBoard(whiteBoardFragment)) {
                         ivWhiteBoardSwitch.setVisibility(View.GONE);
-                    } else {
-                        ivWhiteBoardSwitch.setVisibility(View.VISIBLE);
-                    }
-                    if (whiteBoardFragment != null) {
-                        whiteBoardFragment.isConnect(true);
                     }
                 }
                 transaction.show(whiteBoardFragment);
@@ -1051,15 +1109,13 @@ public class TeacherNetClassRoomActivity extends BaseMVPActivity<AcNetClassRoomT
             transaction.commitNowAllowingStateLoss();
             switchAnimation(false);
         } else if (NewTeachingToolsFragment.Operate.SHARE_VIDEO == operate) {
+            isNeedCheckPackUpWhiteBoardMode = false;
+            changeBackWhiteBoardButtonVisibility(false);
             BaseWhiteFragment whiteBoardFragment = (BaseWhiteFragment) getSupportFragmentManager().findFragmentByTag("whiteBoardFragment");
             if (null != whiteBoardFragment) {
-                if (isPostDisplay || userInfo.getRole() == Role.STUDENT) {
-                    ivWhiteBoardSwitch.setVisibility(View.GONE);
-                    transaction.remove(whiteBoardFragment);
-                } else {
-                    whiteBoardFragment.isConnect(false);
-                    transaction.hide(whiteBoardFragment);
-                }
+                ivWhiteBoardSwitch.setVisibility(View.GONE);
+                whiteBoardFragment.isConnect(false);
+                transaction.hide(whiteBoardFragment);
                 transaction.commitNowAllowingStateLoss();
             }
             switchAnimation(false);
@@ -1070,24 +1126,6 @@ public class TeacherNetClassRoomActivity extends BaseMVPActivity<AcNetClassRoomT
         }
     }
 
-    private void showCoursePreviewDialog(CoursewareListBean.RowsBean coursewareData) {
-        CoursewarePreviewDialog coursewarePreviewDialog = new CoursewarePreviewDialog(this);
-        coursewarePreviewDialog.setOnEventListener(new CoursewarePreviewDialog.OnEventListener() {
-            @Override
-            public void onSelectCourse(String courseUrl, String courseImageUrl, int imgWidth, int imgHeight) {
-                classViewModel.WhiteBoardInsertImage(courseImageUrl, imgWidth, imgHeight);
-                if (coursewarePreviewDialog != null) {
-                    coursewarePreviewDialog.dismiss();
-                }
-                if (mCourseWareSelectDialog != null) {
-                    mCourseWareSelectDialog.dismiss();
-                }
-            }
-        });
-        coursewarePreviewDialog.show();
-        coursewarePreviewDialog.setCoursewareData(coursewareData);
-    }
-
     private void switchAnimation() {
         if (null != lvList && lvList.getVisibility() == View.VISIBLE) {
             lvList.setVisibility(View.GONE);
@@ -1210,30 +1248,32 @@ public class TeacherNetClassRoomActivity extends BaseMVPActivity<AcNetClassRoomT
                 member.setOnStage(false);
             }
         }
-        if (ivWhiteBoardSwitch.getVisibility() == View.VISIBLE && NewTeachingToolsFragment.Operate.SHARE_WHITE_BOARD == operate) {
-            switchWhiteBorardOrVideo(NewTeachingToolsFragment.Operate.SHARE_WHITE_BOARD, false);
-        } else if (NewTeachingToolsFragment.Operate.SHARE_WHITE_BOARD == operate) {
-            DialogUtil.showInCenter(getSupportFragmentManager(), com.cooleshow.base.R.layout.load, new DialogUtil.ShowListener() {
-                @Override
-                public void onShow(ViewHolder holder, BaseDialog dialog) {
-                    dialogFragment = dialog;
-                    dialog.getDialog().setOnDismissListener(dialogInterface -> {
-                        dialogFragment = null;
-                    });
-                }
-            });
-            mHandler.postDelayed(new Runnable() {
-                @Override
-                public void run() {
-                    switchWhiteBorardOrVideo(operate, true);
-                    if (null != dialogFragment) {
-                        dialogFragment.dismiss();
-                    }
-                }
-            }, 2000);
-        } else {
-            switchWhiteBorardOrVideo(operate, true);
-        }
+        switchWhiteBorardOrVideo(operate, true);
+//        if (ivWhiteBoardSwitch.getVisibility() == View.VISIBLE && NewTeachingToolsFragment.Operate.SHARE_WHITE_BOARD == operate) {
+//            switchWhiteBorardOrVideo(NewTeachingToolsFragment.Operate.SHARE_WHITE_BOARD, false);
+//        } else if (NewTeachingToolsFragment.Operate.SHARE_WHITE_BOARD == operate) {
+//            switchWhiteBorardOrVideo(operate, true);
+////            DialogUtil.showInCenter(getSupportFragmentManager(), com.cooleshow.base.R.layout.load, new DialogUtil.ShowListener() {
+////                @Override
+////                public void onShow(ViewHolder holder, BaseDialog dialog) {
+////                    dialogFragment = dialog;
+////                    dialog.getDialog().setOnDismissListener(dialogInterface -> {
+////                        dialogFragment = null;
+////                    });
+////                }
+////            });
+////            mHandler.postDelayed(new Runnable() {
+////                @Override
+////                public void run() {
+////                    switchWhiteBorardOrVideo(operate, true);
+////                    if (null != dialogFragment) {
+////                        dialogFragment.dismiss();
+////                    }
+////                }
+////            }, 2000);
+//        } else {
+//            switchWhiteBorardOrVideo(operate, true);
+//        }
 //        tvTeachingTools.callOnClick();
     }
 

+ 5 - 0
classRoom/src/main/res/drawable/shape_fe5219_4dp.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <solid android:color="#fe5219"/>
+    <corners android:radius="4dp"/>
+</shape>

+ 49 - 32
classRoom/src/main/res/layout/ac_net_class_room_teacher_layout.xml

@@ -12,12 +12,12 @@
     tools:ignore="MissingDefaultResource">
 
     <com.dayayuemeng.classroom.widget.CameraPlaceholderView
-        android:visibility="invisible"
-        app:layout_constraintLeft_toLeftOf="parent"
-        app:layout_constraintTop_toTopOf="parent"
         android:id="@+id/camera_placeholder"
         android:layout_width="300dp"
-        android:layout_height="300dp"/>
+        android:layout_height="300dp"
+        android:visibility="invisible"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintTop_toTopOf="parent" />
 
     <FrameLayout
         android:id="@+id/share_screen_fragment"
@@ -63,44 +63,44 @@
         app:layout_constraintStart_toStartOf="@+id/share_screen_fragment" />
 
     <View
-        android:layout_marginBottom="15dp"
-        app:layout_constraintLeft_toLeftOf="@+id/tv_teaching_tools"
-        app:layout_constraintBottom_toTopOf="@+id/tv_teaching_tools"
         android:id="@+id/view_help_teaching_tools"
         android:layout_width="1px"
-        android:layout_height="1px"/>
+        android:layout_height="1px"
+        android:layout_marginBottom="15dp"
+        app:layout_constraintBottom_toTopOf="@+id/tv_teaching_tools"
+        app:layout_constraintLeft_toLeftOf="@+id/tv_teaching_tools" />
 
     <FrameLayout
         android:id="@+id/teaching_tools_fragment"
         android:layout_width="64dp"
         android:layout_height="200dp"
-        app:layout_constraintRight_toRightOf="@+id/tv_teaching_tools"
+        app:layout_constraintBottom_toTopOf="@id/view_help_teaching_tools"
         app:layout_constraintLeft_toLeftOf="@+id/tv_teaching_tools"
-        app:layout_constraintBottom_toTopOf="@id/view_help_teaching_tools" />
+        app:layout_constraintRight_toRightOf="@+id/tv_teaching_tools" />
 
     <ImageView
+        android:id="@+id/tv_teaching_tools"
+        android:layout_width="48dp"
+        android:layout_height="47dp"
         android:layout_marginEnd="20dp"
         android:layout_marginBottom="16dp"
-        android:id="@+id/tv_teaching_tools"
-        app:layout_constraintEnd_toEndOf="@+id/share_screen_fragment"
-        app:layout_constraintBottom_toBottomOf="@+id/share_screen_fragment"
         android:src="@drawable/tc_icon_teaching_tools"
-        android:layout_width="48dp"
-        android:layout_height="47dp"/>
+        app:layout_constraintBottom_toBottomOf="@+id/share_screen_fragment"
+        app:layout_constraintEnd_toEndOf="@+id/share_screen_fragment" />
 
 
     <TextView
-        android:background="@drawable/shape_66000000_4dp"
-        android:drawableStart="@drawable/tc_icon_clock"
         android:id="@+id/tv_time"
         android:layout_width="wrap_content"
         android:layout_height="26dp"
         android:layout_marginTop="@dimen/dp_15"
         android:layout_marginEnd="@dimen/dp_20"
-        android:paddingStart="6dp"
-        android:paddingEnd="6dp"
+        android:background="@drawable/shape_66000000_4dp"
+        android:drawableStart="@drawable/tc_icon_clock"
         android:drawablePadding="6dp"
         android:gravity="center"
+        android:paddingStart="6dp"
+        android:paddingEnd="6dp"
         android:text="00:00:00"
         android:textColor="@color/white"
         android:textSize="@dimen/dp_14"
@@ -108,6 +108,23 @@
         app:layout_constraintEnd_toEndOf="@id/share_screen_fragment"
         app:layout_constraintTop_toTopOf="parent" />
 
+    <TextView
+        tools:visibility="visible"
+        android:visibility="gone"
+        android:id="@+id/tv_reback_wb"
+        android:layout_width="72dp"
+        android:layout_height="26dp"
+        android:layout_marginEnd="12dp"
+        android:background="@drawable/shape_fe5219_4dp"
+        android:gravity="center"
+        android:text="返回白板"
+        android:textStyle="bold"
+        android:textSize="@dimen/sp_14"
+        android:textColor="@color/white"
+        app:layout_constraintBottom_toBottomOf="@+id/tv_time"
+        app:layout_constraintRight_toLeftOf="@+id/tv_time"
+        app:layout_constraintTop_toTopOf="@+id/tv_time" />
+
     <ListView
         android:id="@+id/lv_list"
         android:layout_width="@dimen/dp_135"
@@ -141,33 +158,33 @@
         android:paddingTop="12dp"
         android:paddingEnd="12dp"
         android:scrollbars="none"
+        app:layout_constraintBottom_toTopOf="@id/play_metronome_fragment"
         app:layout_constraintHorizontal_bias="1"
-        app:layout_constraintWidth_percent="0.192"
         app:layout_constraintLeft_toLeftOf="parent"
         app:layout_constraintRight_toRightOf="parent"
-        app:layout_constraintBottom_toTopOf="@id/play_metronome_fragment"
-        app:layout_constraintTop_toTopOf="parent" />
+        app:layout_constraintTop_toTopOf="parent"
+        app:layout_constraintWidth_percent="0.192" />
 
     <ImageView
-        android:paddingBottom="50dp"
-        android:paddingTop="50dp"
-        android:visibility="visible"
         android:id="@+id/iv_pack_up_video_list"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:paddingStart="3dp"
+        android:paddingTop="50dp"
         android:paddingEnd="3dp"
+        android:paddingBottom="50dp"
         android:src="@drawable/tc_icon_right_arrow"
+        android:visibility="visible"
         app:layout_constraintBottom_toBottomOf="parent"
         app:layout_constraintRight_toLeftOf="@+id/video_list_container"
         app:layout_constraintTop_toTopOf="parent" />
 
 
     <androidx.constraintlayout.widget.Group
-        android:visibility="visible"
         android:id="@+id/group_video_list"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
+        android:visibility="visible"
         app:constraint_referenced_ids="iv_pack_up_video_list,video_list_container" />
 
     <FrameLayout
@@ -219,19 +236,19 @@
 
 
     <androidx.constraintlayout.widget.Guideline
-        android:orientation="horizontal"
-        app:layout_constraintGuide_percent="0.5"
         android:id="@+id/guide1"
         android:layout_width="wrap_content"
-        android:layout_height="wrap_content"/>
+        android:layout_height="wrap_content"
+        android:orientation="horizontal"
+        app:layout_constraintGuide_percent="0.5" />
 
     <com.dayayuemeng.classroom.widget.BarrageChatView
-        app:layout_constraintTop_toTopOf="@+id/guide1"
         android:id="@+id/barrage_chat_view"
         android:layout_width="wrap_content"
-        app:layout_constraintLeft_toLeftOf="@+id/share_screen_fragment"
+        android:layout_height="0dp"
         app:layout_constraintBottom_toBottomOf="@+id/share_screen_fragment"
-        android:layout_height="0dp"/>
+        app:layout_constraintLeft_toLeftOf="@+id/share_screen_fragment"
+        app:layout_constraintTop_toTopOf="@+id/guide1" />
 
     <FrameLayout
         android:id="@+id/gongge_mode_fragment"