Selaa lähdekoodia

修改学生端作业详情样式

Pq 7 kuukautta sitten
vanhempi
commit
7ac2e1037e

BIN
BaseLibrary/src/main/res/drawable-xhdpi/icon_upload_video_tip.png


BIN
BaseLibrary/src/main/res/drawable-xxhdpi/icon_upload_video_tip.png


+ 9 - 0
BaseLibrary/src/main/res/drawable/shape_dotted_line_d9d9d9_10dp.xml

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <stroke
+        android:width="1dp"
+        android:color="#d9d9d9"
+        android:dashWidth="5dp"
+        android:dashGap="3dp" />
+    <corners android:radius="10dp"/>
+</shape>

+ 1 - 0
BaseLibrary/src/main/res/values/colors.xml

@@ -233,4 +233,5 @@
     <color name="color_cc622200">#cc622200</color>
     <color name="color_006eb0">#006EB0</color>
     <color name="color_cc005ba2">#cc005BA2</color>
+    <color name="color_d9d9d9">#D9D9D9</color>
 </resources>

+ 20 - 4
student/src/main/java/com/cooleshow/student/adapter/PracticeVideoWorkAdapter.java

@@ -20,12 +20,24 @@ import java.util.List;
  * 类说明:
  */
 public class PracticeVideoWorkAdapter extends BaseMultiItemQuickAdapter<PracticeVideoWorkBean, BaseViewHolder> {
-    public PracticeVideoWorkAdapter(List<PracticeVideoWorkBean> data) {
-        super(data);
+    private boolean isNeedDel =true;
+    public PracticeVideoWorkAdapter() {
+        super();
         addItemType(0, R.layout.item_practice_video_layout);
         addItemType(1, R.layout.item_practice_video_layout_add);
     }
 
+    public PracticeVideoWorkAdapter(List<PracticeVideoWorkBean> list) {
+        super(list);
+        addItemType(0, R.layout.item_practice_video_layout);
+        addItemType(1, R.layout.item_practice_video_layout_add);
+    }
+
+
+    public void setNeedDel(boolean needDel) {
+        isNeedDel = needDel;
+    }
+
     @Override
     protected void convert(@NonNull BaseViewHolder holder, PracticeVideoWorkBean styleVideoBean) {
         switch (styleVideoBean.getItemType()) {
@@ -50,10 +62,14 @@ public class PracticeVideoWorkAdapter extends BaseMultiItemQuickAdapter<Practice
                         }
                     }
                 });
-                iv_del.setVisibility(styleVideoBean.status == 0 ? View.VISIBLE : View.INVISIBLE);
+                if(isNeedDel){
+                    iv_del.setVisibility(styleVideoBean.status == 0 ? View.VISIBLE : View.INVISIBLE);
+                }else{
+                    iv_del.setVisibility(View.GONE);
+                }
                 break;
             case 1:
-                ImageView iv_video_add = holder.getView(R.id.iv_video_add);
+                View iv_video_add = holder.getView(R.id.iv_video_add);
                 iv_video_add.setOnClickListener(view -> {
                     if (null != itemAddClickAction) {
                         itemAddClickAction.add();

+ 77 - 49
student/src/main/java/com/cooleshow/student/ui/work/HomeWorkDetailActivity.java

@@ -2,6 +2,7 @@ package com.cooleshow.student.ui.work;
 
 import android.Manifest;
 import android.content.Intent;
+import android.graphics.Color;
 import android.net.Uri;
 import android.os.Bundle;
 import android.text.TextUtils;
@@ -35,6 +36,7 @@ import com.cooleshow.student.databinding.ActivityHomeworkDetailLayoutBinding;
 import com.cooleshow.student.presenter.homework.HomeWorkADetailPresenter;
 import com.cooleshow.student.ui.course.PianoRoomCourseDetailActivity;
 import com.cooleshow.student.ui.course.PracticeCourseDetailActivity;
+import com.cooleshow.student.widgets.dialog.UploadHomeworkVideoDialog;
 import com.tbruyelle.rxpermissions3.RxPermissions;
 
 import java.util.ArrayList;
@@ -60,6 +62,7 @@ public class HomeWorkDetailActivity extends BaseMVPActivity<ActivityHomeworkDeta
     private PracticeVideoWorkAdapter mVideoWorkAdapter;
     private boolean teacherIsReply = false;//老师是否已点评
     private boolean isChangeHomeWork = false;//是否变更过作业
+    private UploadHomeworkVideoDialog mVideoDialog;
 
     @Override
     protected void onCreate(@Nullable Bundle savedInstanceState) {
@@ -75,15 +78,16 @@ public class HomeWorkDetailActivity extends BaseMVPActivity<ActivityHomeworkDeta
             return;
         }
         initMidTitleToolBar(viewBinding.toolbarInclude.toolbar, "作业详情");
+        viewBinding.toolbarInclude.toolbar.setBackgroundColor(Color.TRANSPARENT);
         viewBinding.tvCommit.setOnClickListener(this);
-        viewBinding.ivGoChat.setOnClickListener(this);
+        viewBinding.tvEditHomework.setOnClickListener(this);
     }
 
     @Override
     public void initData() {
         super.initData();
-        mVideoWorkAdapter = new PracticeVideoWorkAdapter(homeworkVideoData);
-        homeworkVideoData.add(PracticeVideoWorkBean.defaultInstance());
+        mVideoWorkAdapter = new PracticeVideoWorkAdapter();
+        mVideoWorkAdapter.setNeedDel(false);
         viewBinding.rvVideo.setLayoutManager(new GridLayoutManager(this, 3));
         viewBinding.rvVideo.setAdapter(mVideoWorkAdapter);
         mVideoWorkAdapter.setItemAddClickAction(new PracticeVideoWorkAdapter.ItemAddClickAction() {
@@ -108,7 +112,6 @@ public class HomeWorkDetailActivity extends BaseMVPActivity<ActivityHomeworkDeta
                 isChangeHomeWork = true;
                 if (mVideoWorkAdapter != null && pos < homeworkVideoData.size()) {
                     homeworkVideoData.remove(pos);
-                    checkVideoList();
                     mVideoWorkAdapter.notifyDataSetChanged();
                 }
             }
@@ -116,25 +119,6 @@ public class HomeWorkDetailActivity extends BaseMVPActivity<ActivityHomeworkDeta
         refresh();
     }
 
-    private void checkVideoList() {
-        if (homeworkVideoData.size() < CourseConstants.COURSE_HOMEWORK_MAX_VIDEO_COUNT) {
-            if (!teacherIsReply && !checkAddItemExist()) {
-                //老师未点评的情况下才添加add按钮
-                homeworkVideoData.add(PracticeVideoWorkBean.defaultInstance());
-            }
-        }
-    }
-
-    private boolean checkAddItemExist() {
-        for (int i = 0; i < homeworkVideoData.size(); i++) {
-            PracticeVideoWorkBean videoWorkBean = homeworkVideoData.get(i);
-            if (videoWorkBean.type == 1) {
-                return true;
-            }
-        }
-        return false;
-    }
-
     @Override
     protected void onResume() {
         super.onResume();
@@ -183,7 +167,7 @@ public class HomeWorkDetailActivity extends BaseMVPActivity<ActivityHomeworkDeta
         }
         this.mInfoBean = infoBean;
         //时间
-        viewBinding.tvCourseTime.setText(UiUtils.getCourseTimeString(infoBean.startTime, infoBean.endTime));
+        viewBinding.tvTime.setText(UiUtils.getCourseTimeString(infoBean.startTime, infoBean.endTime));
         //学生头像
         if (TextUtils.equals(infoBean.courseType, CourseConstants.PIANO_ROOM_COURSE)) {
             viewBinding.ivAvatar.setImageResource(R.drawable.icon_piano_room_course);
@@ -225,9 +209,10 @@ public class HomeWorkDetailActivity extends BaseMVPActivity<ActivityHomeworkDeta
         if (!checkActivityExist()) {
             return;
         }
-        if (mVideoWorkAdapter != null) {
-            addVideoData(PracticeVideoWorkBean.createNormalInstance(url));
-            mVideoWorkAdapter.notifyDataSetChanged();
+        PracticeVideoWorkBean normalInstance = PracticeVideoWorkBean.createNormalInstance(url);
+        addVideoData(normalInstance);
+        if (mVideoDialog != null) {
+            mVideoDialog.setData(homeworkVideoData);
         }
     }
 
@@ -236,6 +221,9 @@ public class HomeWorkDetailActivity extends BaseMVPActivity<ActivityHomeworkDeta
         if (!checkActivityExist()) {
             return;
         }
+        if (mVideoDialog != null) {
+            mVideoDialog.dismiss();
+        }
         isChangeHomeWork = false;
         ToastUtil.getInstance().showShort("提交成功");
         refresh();
@@ -249,9 +237,7 @@ public class HomeWorkDetailActivity extends BaseMVPActivity<ActivityHomeworkDeta
 
     private void addVideoData(PracticeVideoWorkBean videoWorkBean) {
         if (homeworkVideoData.size() < CourseConstants.COURSE_HOMEWORK_MAX_VIDEO_COUNT) {
-            homeworkVideoData.add(homeworkVideoData.size() - 1, videoWorkBean);
-        } else {
-            homeworkVideoData.set(homeworkVideoData.size() - 1, videoWorkBean);
+            homeworkVideoData.add(videoWorkBean);
         }
     }
 
@@ -281,11 +267,13 @@ public class HomeWorkDetailActivity extends BaseMVPActivity<ActivityHomeworkDeta
             }
         } else {
             //学员未提交课后作业
-            homeworkVideoData.add(PracticeVideoWorkBean.defaultInstance());
             viewBinding.csTeacherReply.setVisibility(View.GONE);
+            viewBinding.viewHomeworkVideoContentBg.setVisibility(View.VISIBLE);
+            viewBinding.tvHomeworkVideoEmptyText.setVisibility(View.VISIBLE);
+            viewBinding.tvHomeworkVideoEmptyText.setText(CourseConstants.getHomeworkVideoDefaultTip(""));
         }
         if (mVideoWorkAdapter != null) {
-            mVideoWorkAdapter.notifyDataSetChanged();
+            mVideoWorkAdapter.setList(homeworkVideoData);
         }
     }
 
@@ -306,7 +294,6 @@ public class HomeWorkDetailActivity extends BaseMVPActivity<ActivityHomeworkDeta
                     }
                     homeworkVideoData.add(videoWorkBean);
                 }
-                checkVideoList();
             }
         } catch (Exception e) {
             e.printStackTrace();
@@ -349,16 +336,18 @@ public class HomeWorkDetailActivity extends BaseMVPActivity<ActivityHomeworkDeta
             viewBinding.tvCommit.setClickable(false);
             viewBinding.tvCommit.setEnabled(false);
             viewBinding.tvCommit.setVisibility(View.GONE);
+            viewBinding.tvEditHomework.setVisibility(View.GONE);
             viewBinding.tvHomeworkCommentEmptyText.setVisibility(View.GONE);
             viewBinding.tvHomeworkSetComment.setVisibility(View.GONE);
             viewBinding.tvHomeworkCommentContent.setVisibility(View.VISIBLE);
             viewBinding.tvHomeworkCommentContent.setText(bean.teacherReplied);
         } else {
-            //没布置作业 不显示提交按钮 但是没布置作业怎么进到作业详情呢 奇怪的逻辑
             boolean isSet = bean.decorateHomework == CourseConstants.COURSE_HOMEWORK_SET;
-            viewBinding.tvCommit.setVisibility(isSet ? View.VISIBLE : View.GONE);
+            viewBinding.tvCommit.setVisibility(View.GONE);
             viewBinding.tvCommit.setClickable(isSet);
             viewBinding.tvCommit.setEnabled(isSet);
+            //没布置作业 不显示提交作业 但是没布置作业怎么进到作业详情呢 奇怪的逻辑
+            viewBinding.tvEditHomework.setVisibility(isSet ? View.VISIBLE : View.GONE);
             viewBinding.tvHomeworkCommentEmptyText.setVisibility(View.VISIBLE);
             viewBinding.tvHomeworkSetComment.setVisibility(View.GONE);
             viewBinding.tvHomeworkCommentContent.setVisibility(View.GONE);
@@ -370,20 +359,7 @@ public class HomeWorkDetailActivity extends BaseMVPActivity<ActivityHomeworkDeta
     public void onClick(View v) {
         int id = v.getId();
         if (id == R.id.tv_commit) {
-            if (UiUtils.isFastClick()) {
-                return;
-            }
-            //提交
-            if (!isChangeHomeWork) {
-                ToastUtil.getInstance().showShort("请选择视频文件");
-                return;
-            }
-            String result = getVideoHomeworkResult();
-            if (!TextUtils.isEmpty(result)) {
-                presenter.submitCourseHomework(result, courseId);
-            } else {
-                ToastUtil.getInstance().showShort("请选择视频文件");
-            }
+
         }
 
         if (id == R.id.iv_go_chat) {
@@ -392,6 +368,28 @@ public class HomeWorkDetailActivity extends BaseMVPActivity<ActivityHomeworkDeta
             }
             ChatHelper.getInstance().goChat(mInfoBean.imUserId, mInfoBean.teacherName);
         }
+
+        if (id == R.id.tv_edit_homework) {
+            showUploadDialog();
+            return;
+        }
+    }
+
+    private void submit(){
+        if (UiUtils.isFastClick()) {
+            return;
+        }
+        //提交
+        if (!isChangeHomeWork) {
+            ToastUtil.getInstance().showShort("请选择视频文件");
+            return;
+        }
+        String result = getVideoHomeworkResult();
+        if (!TextUtils.isEmpty(result)) {
+            presenter.submitCourseHomework(result, courseId);
+        } else {
+            ToastUtil.getInstance().showShort("请选择视频文件");
+        }
     }
 
     private String getVideoHomeworkResult() {
@@ -408,6 +406,36 @@ public class HomeWorkDetailActivity extends BaseMVPActivity<ActivityHomeworkDeta
         return stringBuilder.toString();
     }
 
+    private void showUploadDialog() {
+        if (mVideoDialog == null) {
+            mVideoDialog = new UploadHomeworkVideoDialog(this);
+            mVideoDialog.setOnEventListener(new UploadHomeworkVideoDialog.OnEventListener() {
+                @Override
+                public void onResult() {
+                    submit();
+                }
+
+                @Override
+                public void goUpload() {
+                    isChangeHomeWork = true;
+                    getVideoPermission();
+                }
+
+                @Override
+                public void onDel(int pos) {
+                    isChangeHomeWork = true;
+                    if (homeworkVideoData != null && pos < homeworkVideoData.size()) {
+                        homeworkVideoData.remove(pos);
+                    }
+                }
+            });
+        }
+        if (!mVideoDialog.isShowing()) {
+            mVideoDialog.show();
+        }
+        mVideoDialog.setData(homeworkVideoData);
+    }
+
     @Override
     protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
         super.onActivityResult(requestCode, resultCode, data);

+ 203 - 0
student/src/main/java/com/cooleshow/student/widgets/dialog/UploadHomeworkVideoDialog.java

@@ -0,0 +1,203 @@
+package com.cooleshow.student.widgets.dialog;
+
+import android.app.Dialog;
+import android.content.Context;
+import android.os.Bundle;
+import android.text.Editable;
+import android.text.TextUtils;
+import android.text.TextWatcher;
+import android.view.Gravity;
+import android.view.View;
+import android.view.Window;
+import android.view.WindowManager;
+import android.widget.EditText;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+
+import com.chad.library.adapter.base.BaseQuickAdapter;
+import com.chad.library.adapter.base.listener.OnItemClickListener;
+import com.cooleshow.base.ui.video.VideoPlayActivity;
+import com.cooleshow.base.utils.ToastUtil;
+import com.cooleshow.base.utils.UiUtils;
+import com.cooleshow.student.R;
+import com.cooleshow.student.adapter.PracticeVideoWorkAdapter;
+import com.cooleshow.student.bean.PracticeVideoWorkBean;
+import com.cooleshow.student.constants.CourseConstants;
+import com.cooleshow.student.ui.work.HomeWorkDetailActivity;
+
+import java.util.List;
+import java.util.Locale;
+
+import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.GridLayoutManager;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
+/**
+ * Author by pq, Date on 2023/10/17.
+ */
+public class UploadHomeworkVideoDialog extends Dialog implements View.OnClickListener {
+
+
+    private OnEventListener mEventListener;
+    private TextView mTvConfirm;
+    private ImageView mIvClose;
+    private RecyclerView mRecyclerView;
+    private LinearLayout mLlUploadEmptyView;
+    private PracticeVideoWorkAdapter mVideoWorkAdapter;
+
+    public UploadHomeworkVideoDialog(@NonNull Context context) {
+        super(context, R.style.MyBottomDialogStyle);
+    }
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.dialog_upload_homework_video_layout);
+        initParams();
+        initViews();
+        initData();
+        initListener();
+    }
+
+
+    private void initViews() {
+        mRecyclerView = findViewById(R.id.recyclerView);
+        mLlUploadEmptyView = findViewById(R.id.ll_upload_empty_view);
+        mTvConfirm = findViewById(R.id.tv_confirm);
+        mIvClose = findViewById(R.id.iv_close);
+    }
+
+    private void initData() {
+        mVideoWorkAdapter = new PracticeVideoWorkAdapter();
+        mRecyclerView.setLayoutManager(new GridLayoutManager(getContext(),3));
+        mRecyclerView.setAdapter(mVideoWorkAdapter);
+    }
+
+    private void initListener() {
+        mIvClose.setOnClickListener(this);
+        mTvConfirm.setOnClickListener(this);
+        mLlUploadEmptyView.setOnClickListener(this);
+
+        mVideoWorkAdapter.setItemAddClickAction(new PracticeVideoWorkAdapter.ItemAddClickAction() {
+            @Override
+            public void add() {
+                if (UiUtils.isFastClick()) {
+                    return;
+                }
+                if (mEventListener != null) {
+                    mEventListener.goUpload();
+                }
+            }
+
+            @Override
+            public void previewVideo(String url) {
+                if (!TextUtils.isEmpty(url)) {
+                    VideoPlayActivity.start(getContext(), url);
+                }
+            }
+
+            @Override
+            public void delVideo(int pos) {
+                if (mVideoWorkAdapter != null && pos < mVideoWorkAdapter.getData().size()) {
+                    if (mEventListener != null) {
+                        mVideoWorkAdapter.getData().remove(pos);
+                        mEventListener.onDel(pos);
+                        checkVideoList();
+                        mVideoWorkAdapter.notifyDataSetChanged();
+                    }
+                }
+            }
+        });
+    }
+
+    public void setData(List<PracticeVideoWorkBean> data) {
+        if (data != null && data.size() > 0) {
+            mLlUploadEmptyView.setVisibility(View.GONE);
+            mRecyclerView.setVisibility(View.VISIBLE);
+            if (mVideoWorkAdapter != null) {
+                mVideoWorkAdapter.setList(data);
+            }
+            checkVideoList();
+        } else {
+            mLlUploadEmptyView.setVisibility(View.VISIBLE);
+            mRecyclerView.setVisibility(View.GONE);
+        }
+    }
+
+    private void checkVideoList() {
+        List<PracticeVideoWorkBean> data = mVideoWorkAdapter.getData();
+        if (data.size() < CourseConstants.COURSE_HOMEWORK_MAX_VIDEO_COUNT) {
+            if (!checkAddItemExist(data)) {
+                //老师未点评的情况下才添加add按钮
+                data.add(PracticeVideoWorkBean.defaultInstance());
+            }
+        }
+    }
+
+    private boolean checkAddItemExist(List<PracticeVideoWorkBean> data) {
+        for (int i = 0; i < data.size(); i++) {
+            PracticeVideoWorkBean videoWorkBean = data.get(i);
+            if (videoWorkBean.type == 1) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    private void initParams() {
+        Window window = getWindow();
+        //设置dialog在屏幕底部
+        window.setGravity(Gravity.BOTTOM);
+        //设置dialog弹出时的动画效果,从屏幕底部向上弹出
+        window.setWindowAnimations(com.cooleshow.base.R.style.BottomAnimation);
+        window.getDecorView().setPadding(0, 0, 0, 0);
+        //获得window窗口的属性
+        WindowManager.LayoutParams lp = window.getAttributes();
+        //设置窗口宽度为充满全屏
+        lp.width = WindowManager.LayoutParams.MATCH_PARENT;
+        //设置窗口高度为包裹内容
+        lp.height = WindowManager.LayoutParams.WRAP_CONTENT;
+        lp.horizontalMargin = 0;
+        lp.verticalMargin = 0;
+        //将设置好的属性set回去
+        window.setAttributes(lp);
+    }
+
+    @Override
+    public void onClick(View v) {
+        int id = v.getId();
+        if (id == R.id.iv_close) {
+            dismiss();
+            return;
+        }
+        if (id == R.id.tv_confirm) {
+            if (mEventListener != null) {
+                mEventListener.onResult();
+            }
+            return;
+        }
+
+        if (id == R.id.ll_upload_empty_view) {
+            if (mEventListener != null) {
+                mEventListener.goUpload();
+            }
+            return;
+        }
+
+    }
+
+
+    public void setOnEventListener(OnEventListener listener) {
+        this.mEventListener = listener;
+    }
+
+    public interface OnEventListener {
+        void onResult();
+
+        void goUpload();
+
+        void onDel(int pos);
+    }
+}

BIN
student/src/main/res/drawable-xhdpi/icon_video_close.png


BIN
student/src/main/res/drawable-xhdpi/icon_work_upload_tum.png


BIN
student/src/main/res/drawable-xxhdpi/icon_video_close.png


BIN
student/src/main/res/drawable-xxhdpi/icon_work_upload_tum.png


+ 14 - 0
student/src/main/res/drawable/bg_dash_border_d9d9d9_4dp_radius.xml

@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+
+    <corners
+        android:radius="4dp" />
+
+    <stroke
+        android:width="1dp"
+        android:color="@color/color_d9d9d9"
+        android:dashWidth="5dp"
+        android:dashGap="2dp" />
+
+</shape>

+ 125 - 59
student/src/main/res/layout/activity_homework_detail_layout.xml

@@ -5,6 +5,15 @@
     android:layout_width="match_parent"
     android:layout_height="match_parent">
 
+    <ImageView
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:adjustViewBounds="true"
+        android:src="@drawable/bg_appointment_top"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintTop_toTopOf="parent" />
+
+
     <include
         android:id="@+id/toolbar_include"
         layout="@layout/common_toolbar_layout" />
@@ -27,100 +36,118 @@
             android:paddingBottom="12dp">
 
             <androidx.constraintlayout.widget.ConstraintLayout
+                android:id="@+id/cs_top_info"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:background="@drawable/bg_white_10dp"
-                android:paddingBottom="20dp">
+                android:paddingStart="12dp"
+                android:paddingEnd="12dp"
+                android:paddingBottom="12dp"
+                app:layout_constraintLeft_toLeftOf="parent"
+                app:layout_constraintTop_toBottomOf="@+id/title_view">
 
                 <ImageView
-                    android:id="@+id/iv_time_icon"
+                    android:id="@+id/iv_clock_icon"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
-                    android:layout_marginStart="11dp"
-                    android:layout_marginTop="12dp"
+                    android:layout_marginTop="15dp"
                     android:src="@drawable/icon_clock"
                     app:layout_constraintLeft_toLeftOf="parent"
                     app:layout_constraintTop_toTopOf="parent" />
 
                 <TextView
-                    android:id="@+id/tv_course_time"
+                    android:id="@+id/tv_time"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
+                    android:layout_marginStart="6dp"
                     android:includeFontPadding="false"
-                    android:paddingStart="7dp"
                     android:textColor="@color/color_666666"
                     android:textSize="@dimen/sp_13"
-                    app:layout_constraintBottom_toBottomOf="@+id/iv_time_icon"
-                    app:layout_constraintLeft_toRightOf="@+id/iv_time_icon"
-                    app:layout_constraintTop_toTopOf="@+id/iv_time_icon"
+                    app:layout_constraintBottom_toBottomOf="@+id/iv_clock_icon"
+                    app:layout_constraintLeft_toRightOf="@+id/iv_clock_icon"
+                    app:layout_constraintTop_toTopOf="@+id/iv_clock_icon"
                     tools:text="2021/09/17 14:00~14:25" />
 
-                <TextView
-                    android:id="@+id/tv_course_status"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_marginEnd="11dp"
-                    android:text="已结束"
-                    android:textColor="@color/color_999999"
-                    android:textSize="@dimen/sp_14"
-                    app:layout_constraintBottom_toBottomOf="@+id/iv_time_icon"
-                    app:layout_constraintRight_toRightOf="parent"
-                    app:layout_constraintTop_toTopOf="@+id/iv_time_icon" />
-
                 <View
                     android:id="@+id/view_line"
-                    android:layout_width="match_parent"
-                    android:layout_height="1px"
-                    android:layout_marginTop="10dp"
+                    android:layout_width="0dp"
+                    android:layout_height="1dp"
+                    android:layout_marginTop="15dp"
                     android:background="@color/color_f2f2f2"
-                    app:layout_constraintTop_toBottomOf="@+id/iv_time_icon" />
+                    app:layout_constraintLeft_toLeftOf="parent"
+                    app:layout_constraintRight_toRightOf="parent"
+                    app:layout_constraintTop_toBottomOf="@+id/iv_clock_icon" />
 
-                <com.cooleshow.base.widgets.QMUIRadiusImageView
+                <de.hdodenhof.circleimageview.CircleImageView
                     android:id="@+id/iv_avatar"
-                    android:layout_width="47dp"
-                    android:layout_height="51dp"
-                    android:layout_marginStart="11dp"
-                    android:layout_marginTop="17dp"
-                    app:layout_constraintBottom_toBottomOf="parent"
+                    android:layout_width="40dp"
+                    android:layout_height="40dp"
+                    android:layout_marginTop="12dp"
+                    android:src="@drawable/icon_default_head"
                     app:layout_constraintLeft_toLeftOf="parent"
                     app:layout_constraintTop_toBottomOf="@+id/view_line"
                     app:qmui_corner_radius="5dp" />
 
                 <TextView
                     android:id="@+id/tv_title"
-                    android:layout_width="wrap_content"
+                    android:layout_width="0dp"
                     android:layout_height="wrap_content"
                     android:layout_marginStart="10dp"
-                    android:layout_marginEnd="10dp"
                     android:ellipsize="end"
                     android:includeFontPadding="false"
-                    android:maxLines="2"
+                    android:maxLines="1"
                     android:textColor="@color/color_1a1a1a"
-                    android:textSize="@dimen/sp_16"
-                    android:textStyle="bold"
-                    app:layout_constraintBottom_toTopOf="@+id/tv_course_name"
+                    android:textSize="@dimen/sp_15"
+                    app:layout_constraintBottom_toTopOf="@+id/tv_name"
+                    app:layout_constraintHorizontal_bias="0"
+                    app:layout_constraintHorizontal_chainStyle="packed"
                     app:layout_constraintLeft_toRightOf="@+id/iv_avatar"
-                    app:layout_constraintRight_toLeftOf="@+id/iv_go_chat"
+                    app:layout_constraintRight_toLeftOf="@+id/iv_attendance_status"
                     app:layout_constraintTop_toTopOf="@+id/iv_avatar"
                     app:layout_constraintVertical_chainStyle="packed"
-                    tools:text="张豆豆张豆豆张豆豆张豆" />
-
+                    app:layout_constraintWidth_default="wrap"
+                    tools:text="VIP定制课-张豆豆VIP定制课-张豆豆" />
 
                 <ImageView
-                    android:id="@+id/iv_go_chat"
+                    android:id="@+id/iv_attendance_status"
                     android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_marginStart="8dp"
-                    android:src="@drawable/icon_chat_small"
+                    android:layout_height="17.1dp"
+                    android:layout_marginStart="5dp"
+                    android:layout_marginEnd="5dp"
+                    android:adjustViewBounds="true"
+                    android:src="@drawable/icon_course_attendance_truancy"
+                    android:visibility="gone"
                     app:layout_constraintBottom_toBottomOf="@+id/tv_title"
                     app:layout_constraintLeft_toRightOf="@+id/tv_title"
+                    app:layout_constraintRight_toRightOf="parent"
                     app:layout_constraintTop_toTopOf="@+id/tv_title" />
 
                 <TextView
+                    android:id="@+id/tv_name"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="4dp"
+                    android:ellipsize="middle"
+                    android:includeFontPadding="false"
+                    android:singleLine="true"
+                    android:textColor="@color/color_999999"
+                    android:textSize="@dimen/sp_13"
+                    app:layout_constraintBottom_toBottomOf="@+id/iv_avatar"
+                    app:layout_constraintHorizontal_bias="0"
+                    app:layout_constraintHorizontal_chainStyle="packed"
+                    app:layout_constraintLeft_toLeftOf="@+id/tv_title"
+                    app:layout_constraintRight_toLeftOf="@+id/tv_course_name"
+                    app:layout_constraintTop_toBottomOf="@+id/tv_title"
+                    app:layout_constraintWidth_default="wrap"
+                    tools:text="张豆豆张豆豆张豆豆张豆豆张豆豆张豆豆张豆豆张豆豆张豆豆张豆豆张豆豆张豆豆" />
+
+
+                <TextView
                     android:id="@+id/tv_course_name"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
-                    android:layout_marginTop="8dp"
+                    android:layout_marginStart="5dp"
+                    android:layout_marginEnd="5dp"
                     android:background="@drawable/shape_couse_type_text_bg"
                     android:gravity="center"
                     android:includeFontPadding="false"
@@ -130,11 +157,25 @@
                     android:paddingBottom="1.5dp"
                     android:textColor="@color/color_ff8c00"
                     android:textSize="@dimen/sp_10"
-                    app:layout_constraintBottom_toBottomOf="@+id/iv_avatar"
-                    app:layout_constraintLeft_toLeftOf="@+id/tv_title"
-                    app:layout_constraintTop_toBottomOf="@+id/tv_title"
+                    app:layout_constraintBottom_toBottomOf="@+id/tv_name"
+                    app:layout_constraintLeft_toRightOf="@+id/tv_name"
+                    app:layout_constraintRight_toRightOf="parent"
+                    app:layout_constraintTop_toTopOf="@+id/tv_name"
                     tools:text="单簧管" />
 
+
+                <TextView
+                    android:id="@+id/tv_course_status"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:textColor="@color/color_999999"
+                    android:textSize="@dimen/sp_14"
+                    app:layout_constraintBottom_toTopOf="@+id/view_line"
+                    app:layout_constraintRight_toRightOf="parent"
+                    app:layout_constraintTop_toTopOf="parent"
+                    tools:text="未开始" />
+
+
             </androidx.constraintlayout.widget.ConstraintLayout>
 
 
@@ -198,11 +239,13 @@
 
                     <TextView
                         android:id="@+id/tv_homework_empty_text"
-                        android:layout_width="wrap_content"
+                        android:layout_width="match_parent"
+                        android:layout_marginEnd="20dp"
+                        android:layout_marginStart="20dp"
+                        android:drawablePadding="10dp"
                         android:layout_height="wrap_content"
                         android:layout_gravity="center"
                         android:drawableLeft="@drawable/icon_homework_empty"
-                        android:drawablePadding="8dp"
                         android:gravity="center_vertical"
                         android:text="老师尚未布置作业"
                         android:textColor="@color/color_999999"
@@ -225,7 +268,7 @@
                 android:layout_height="wrap_content"
                 android:layout_marginTop="12dp"
                 android:background="@drawable/bg_white_10dp"
-                android:paddingBottom="10dp">
+                android:paddingBottom="12dp">
 
                 <View
                     android:id="@+id/view_title_line_homework_video"
@@ -250,6 +293,25 @@
                     app:layout_constraintLeft_toRightOf="@+id/view_title_line_homework_video"
                     app:layout_constraintTop_toTopOf="@+id/view_title_line_homework_video" />
 
+                <TextView
+                    android:id="@+id/tv_edit_homework"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:drawableLeft="@drawable/icon_set_homework2"
+                    android:drawablePadding="3dp"
+                    android:includeFontPadding="false"
+                    android:paddingTop="5dp"
+                    android:paddingEnd="11dp"
+                    android:paddingBottom="5dp"
+                    android:text="提交作业"
+                    tools:visibility="visible"
+                    android:textColor="@color/color_2dc7aa"
+                    android:textSize="@dimen/sp_14"
+                    android:visibility="visible"
+                    app:layout_constraintBottom_toBottomOf="@+id/view_title_line_homework_video"
+                    app:layout_constraintRight_toRightOf="parent"
+                    app:layout_constraintTop_toTopOf="@+id/view_title_line_homework_video" />
+
                 <FrameLayout
                     android:id="@+id/view_homework_video_content_bg"
                     android:layout_width="match_parent"
@@ -265,11 +327,13 @@
 
                     <TextView
                         android:id="@+id/tv_homework_video_empty_text"
-                        android:layout_width="wrap_content"
+                        android:layout_width="match_parent"
+                        android:layout_marginEnd="20dp"
+                        android:layout_marginStart="20dp"
+                        android:drawablePadding="10dp"
                         android:layout_height="wrap_content"
                         android:layout_gravity="center"
                         android:drawableLeft="@drawable/icon_homework_video_empty"
-                        android:drawablePadding="8dp"
                         android:gravity="center_vertical"
                         android:text="您尚未上传作业视频"
                         android:textColor="@color/color_999999"
@@ -289,9 +353,9 @@
                     android:id="@+id/rv_video"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
-                    android:layout_marginLeft="@dimen/dp_5"
-                    android:layout_marginTop="6dp"
-                    android:layout_marginRight="@dimen/dp_5"
+                    android:layout_marginLeft="@dimen/dp_7"
+                    android:layout_marginTop="12dp"
+                    android:layout_marginRight="@dimen/dp_7"
                     app:layout_constraintBottom_toBottomOf="parent"
                     app:layout_constraintLeft_toLeftOf="parent"
                     app:layout_constraintRight_toRightOf="parent"
@@ -360,11 +424,13 @@
 
                     <TextView
                         android:id="@+id/tv_homework_comment_empty_text"
-                        android:layout_width="wrap_content"
+                        android:layout_width="match_parent"
+                        android:layout_marginEnd="20dp"
+                        android:layout_marginStart="20dp"
+                        android:drawablePadding="10dp"
                         android:layout_height="wrap_content"
                         android:layout_gravity="center"
                         android:drawableLeft="@drawable/icon_homework_comment"
-                        android:drawablePadding="8dp"
                         android:gravity="center_vertical"
                         android:text="老师尚未点评作业"
                         android:textColor="@color/color_999999"
@@ -394,7 +460,7 @@
                 android:gravity="center"
                 android:text="提交"
                 android:textColor="@color/white"
-                android:visibility="visible"
+                android:visibility="gone"
                 app:layout_constraintBottom_toBottomOf="parent"
                 app:layout_constraintLeft_toLeftOf="parent"
                 app:layout_constraintRight_toRightOf="parent" />

+ 106 - 0
student/src/main/res/layout/dialog_upload_homework_video_layout.xml

@@ -0,0 +1,106 @@
+<?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"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:background="@drawable/shape_f8f9fc_top_12dp"
+    android:paddingBottom="30dp">
+
+    <TextView
+        android:id="@+id/tv_title"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="18dp"
+        android:includeFontPadding="false"
+        android:text="提交作业"
+        android:textColor="@color/color_333333"
+        android:textSize="@dimen/sp_18"
+        android:textStyle="bold"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintRight_toRightOf="parent"
+        app:layout_constraintTop_toTopOf="parent" />
+
+    <ImageView
+        android:id="@+id/iv_close"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:padding="12dp"
+        android:src="@drawable/icon_close_dialog_32_32"
+        app:layout_constraintBottom_toBottomOf="@+id/tv_title"
+        app:layout_constraintRight_toRightOf="parent"
+        app:layout_constraintTop_toTopOf="@+id/tv_title" />
+
+    <FrameLayout
+        android:id="@+id/fl_input"
+        android:layout_width="match_parent"
+        android:layout_height="108dp"
+        android:layout_marginStart="14dp"
+        android:layout_marginTop="18dp"
+        android:layout_marginEnd="14dp"
+        android:background="@drawable/shape_white_10dp"
+        android:minHeight="108dp"
+        app:layout_constraintTop_toBottomOf="@+id/tv_title">
+
+        <androidx.recyclerview.widget.RecyclerView
+            android:id="@+id/recyclerView"
+            android:visibility="gone"
+            android:layout_marginStart="7dp"
+            android:layout_marginEnd="7dp"
+            android:layout_gravity="center_vertical"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:overScrollMode="never"
+            android:scrollbars="none" />
+
+        <LinearLayout
+            android:id="@+id/ll_upload_empty_view"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:background="@drawable/shape_dotted_line_d9d9d9_10dp"
+            android:gravity="center"
+            android:orientation="vertical">
+
+            <ImageView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:src="@drawable/icon_upload_video_tip" />
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="5dp"
+                android:includeFontPadding="false"
+                android:text="上传视频"
+                android:textColor="@color/color_333333"
+                android:textSize="@dimen/sp_14"
+                android:textStyle="bold" />
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="5dp"
+                android:includeFontPadding="false"
+                android:text="(最多3个)"
+                android:textColor="@color/color_999999"
+                android:textSize="@dimen/sp_12"
+                android:textStyle="bold" />
+        </LinearLayout>
+    </FrameLayout>
+
+
+    <TextView
+        android:id="@+id/tv_confirm"
+        android:layout_width="0dp"
+        android:layout_height="44dp"
+        android:layout_marginStart="28dp"
+        android:layout_marginTop="30dp"
+        android:layout_marginEnd="28dp"
+        android:background="@drawable/shape_2dc7aa_39dp"
+        android:gravity="center"
+        android:text="提交"
+        android:textColor="@color/white"
+        android:textSize="@dimen/sp_18"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintRight_toRightOf="parent"
+        app:layout_constraintTop_toBottomOf="@+id/fl_input" />
+</androidx.constraintlayout.widget.ConstraintLayout>

+ 7 - 6
student/src/main/res/layout/item_practice_video_layout.xml

@@ -2,20 +2,19 @@
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     android:layout_width="match_parent"
-    android:layout_height="wrap_content">
+    android:layout_height="wrap_content"
+    android:layout_marginLeft="5dp"
+    android:layout_marginRight="5dp">
 
     <FrameLayout
         android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_marginLeft="5dp"
-        android:layout_marginTop="5dp"
-        android:layout_marginRight="5dp">
+        android:layout_height="wrap_content">
 
         <com.cooleshow.base.widgets.QMUIRadiusImageView
             android:id="@+id/iv_video_bg"
             android:layout_width="match_parent"
             android:layout_height="@dimen/dp_72"
-            app:qmui_corner_radius="10dp" />
+            app:qmui_corner_radius="4dp" />
 
         <ImageView
             android:layout_width="@dimen/dp_24"
@@ -25,6 +24,8 @@
     </FrameLayout>
 
     <ImageView
+        android:layout_marginEnd="4dp"
+        android:layout_marginTop="4dp"
         android:id="@+id/iv_del"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"

+ 25 - 17
student/src/main/res/layout/item_practice_video_layout_add.xml

@@ -2,30 +2,38 @@
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     android:layout_width="match_parent"
+    android:layout_marginStart="5dp"
+    android:layout_marginEnd="5dp"
     android:layout_height="@dimen/dp_72">
 
-    <ImageView
+    <View
         android:id="@+id/iv_video_add"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
-        android:layout_marginRight="5dp"
-        android:layout_marginLeft="5dp"
-        android:background="@drawable/bg_dash_border_2dc7aa_radius"
+        android:background="@drawable/bg_dash_border_d9d9d9_4dp_radius"
         app:qmui_corner_radius="10dp" />
 
-    <ImageView
-        android:layout_width="31dp"
-        android:layout_height="25dp"
-        android:layout_marginTop="13dp"
-        android:background="@drawable/icon_work_upload_tum"
-        android:layout_centerHorizontal="true" />
-    <TextView
+    <LinearLayout
+        android:gravity="center"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
-        android:text="上传视频"
-        android:textColor="@color/color_2dc7aa"
-        android:textSize="@dimen/sp_10"
-        android:layout_alignParentBottom="true"
-        android:layout_marginBottom="13dp"
-        android:layout_centerHorizontal="true"/>
+        android:layout_centerInParent="true"
+        android:orientation="vertical">
+
+        <ImageView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_centerHorizontal="true"
+            android:background="@drawable/icon_work_upload_tum" />
+
+        <TextView
+            android:layout_marginTop="6dp"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_alignParentBottom="true"
+            android:layout_centerHorizontal="true"
+            android:text="上传视频"
+            android:textColor="@color/color_333333"
+            android:textSize="@dimen/sp_12" />
+    </LinearLayout>
 </RelativeLayout>