Kaynağa Gözat

修改老师端陪练课详情

Pq 3 yıl önce
ebeveyn
işleme
678229735d
35 değiştirilmiş dosya ile 783 ekleme ve 90 silme
  1. 1 0
      BaseLibrary/src/main/java/com/cooleshow/base/router/RouterPath.kt
  2. 103 0
      BaseLibrary/src/main/java/com/cooleshow/base/ui/activity/BaseActivity.java
  3. 0 74
      BaseLibrary/src/main/java/com/cooleshow/base/ui/activity/BaseActivity.kt
  4. 3 0
      BaseLibrary/src/main/java/com/cooleshow/base/ui/fragment/BaseFragment.java
  5. BIN
      BaseLibrary/src/main/res/drawable-xhdpi/bg_sparring_course_header.png
  6. BIN
      BaseLibrary/src/main/res/drawable-xhdpi/icon_back_arrow_white.png
  7. BIN
      BaseLibrary/src/main/res/drawable-xxhdpi/bg_sparring_course_header.png
  8. BIN
      BaseLibrary/src/main/res/drawable-xxhdpi/icon_back_arrow_white.png
  9. 5 0
      BaseLibrary/src/main/res/drawable/shape_bg_f7f8f9_4dp.xml
  10. 96 0
      BaseLibrary/src/main/res/layout/common_toolbar_layout_white.xml
  11. 1 0
      BaseLibrary/src/main/res/values/colors.xml
  12. 0 2
      app/src/main/java/com/example/cooleshow/ui/activity/MainActivity.kt
  13. 0 2
      app/src/main/java/com/example/cooleshow/ui/activity/splash/SplashActivity.kt
  14. 5 0
      teacher/src/main/AndroidManifest.xml
  15. 16 0
      teacher/src/main/java/com/cooleshow/teacher/contract/SparringCourseDetailContract.java
  16. 11 0
      teacher/src/main/java/com/cooleshow/teacher/presenter/course/SparringCourseDetailPresenter.java
  17. 35 0
      teacher/src/main/java/com/cooleshow/teacher/ui/course/SparringCourseDetailActivity.java
  18. 13 7
      teacher/src/main/java/com/cooleshow/teacher/ui/main/HomeFragment.kt
  19. 0 1
      teacher/src/main/java/com/cooleshow/teacher/ui/splash/SplashActivity.kt
  20. BIN
      teacher/src/main/res/drawable-xhdpi/icon_edit_appraisal.png
  21. BIN
      teacher/src/main/res/drawable-xhdpi/icon_homework_comment.png
  22. BIN
      teacher/src/main/res/drawable-xhdpi/icon_homework_empty.png
  23. BIN
      teacher/src/main/res/drawable-xhdpi/icon_homework_video_empty.png
  24. BIN
      teacher/src/main/res/drawable-xhdpi/icon_stu_comment_empty.png
  25. BIN
      teacher/src/main/res/drawable-xhdpi/icon_teacher_appraisal_empty.png
  26. BIN
      teacher/src/main/res/drawable-xxhdpi/icon_edit_appraisal.png
  27. BIN
      teacher/src/main/res/drawable-xxhdpi/icon_homework_comment.png
  28. BIN
      teacher/src/main/res/drawable-xxhdpi/icon_homework_empty.png
  29. BIN
      teacher/src/main/res/drawable-xxhdpi/icon_homework_video_empty.png
  30. BIN
      teacher/src/main/res/drawable-xxhdpi/icon_stu_comment_empty.png
  31. BIN
      teacher/src/main/res/drawable-xxhdpi/icon_teacher_appraisal_empty.png
  32. 8 0
      teacher/src/main/res/drawable/shape_course_title_tag_bg.xml
  33. 481 0
      teacher/src/main/res/layout/activity_sparring_course_detail_layout.xml
  34. 1 0
      teacher/src/main/res/values/strings.xml
  35. 4 4
      usercenter/src/main/java/com/cooleshow/usercenter/ui/activity/LoginActivity.kt

+ 1 - 0
BaseLibrary/src/main/java/com/cooleshow/base/router/RouterPath.kt

@@ -34,6 +34,7 @@ object RouterPath {
     class CourseCenter {
         companion object {
             const val TEACHER_MINE_COURSE = "/teacher/ui/course/MineCourseActivity"
+            const val SPARRING_COURSE_DETAIL = "/teacher/ui/course/SparringCourseDetailActivity"
         }
     }
 

+ 103 - 0
BaseLibrary/src/main/java/com/cooleshow/base/ui/activity/BaseActivity.java

@@ -0,0 +1,103 @@
+package com.cooleshow.base.ui.activity;
+
+import android.os.Bundle;
+import android.view.View;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import com.cooleshow.base.R;
+import com.cooleshow.base.common.AppManager;
+import com.cooleshow.base.presenter.view.BaseView;
+import com.cooleshow.base.utils.ToastUtils;
+import com.cooleshow.base.utils.helper.QMUIStatusBarHelper;
+import com.cooleshow.base.widgets.ProgressLoading;
+import com.trello.rxlifecycle4.components.support.RxAppCompatActivity;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.appcompat.widget.Toolbar;
+import androidx.viewbinding.ViewBinding;
+
+/**
+ * Author by pq, Date on 2022/4/27.
+ */
+public abstract class BaseActivity<V extends ViewBinding> extends RxAppCompatActivity implements BaseView {
+    protected V viewBinding = null;
+    protected ProgressLoading mLoading;
+
+    @Override
+    protected void onCreate(@Nullable Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        viewBinding = getLayoutView();
+        setContentView(viewBinding.getRoot());
+        AppManager.Companion.getInstance().addActivity(this);
+        QMUIStatusBarHelper.translucent(this);
+        initView();
+        initData();
+    }
+
+    protected void initData() {
+        mLoading = ProgressLoading.Companion.create(this);
+    }
+
+    public void initMidTitleToolBar(Toolbar toolbar, String title) {
+        if (toolbar == null) {
+            return;
+        }
+        TextView tv_title = toolbar.findViewById(R.id.title);
+        ImageView ivBack = toolbar.findViewById(R.id.iv_back);
+        ivBack.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                onBackPressed();
+            }
+        });
+        toolbar.setTitle("");
+        ivBack.setImageResource(R.drawable.icon_back_black);
+        tv_title.setTextColor(getResources().getColor(R.color.common_black));
+        tv_title.setText(title);
+        setSupportActionBar(toolbar);
+        getSupportActionBar().setDisplayHomeAsUpEnabled(false);
+        getSupportActionBar().setDisplayShowHomeEnabled(false);
+    }
+
+
+    protected abstract void initView();
+
+    protected abstract V getLayoutView();
+
+    @Override
+    public void showLoading() {
+        if (mLoading != null) {
+            mLoading.showLoading();
+        }
+    }
+
+    @Override
+    public void hideLoading() {
+        if (mLoading != null) {
+            mLoading.hideLoading();
+        }
+    }
+
+    @Override
+    public void onError(@NonNull Throwable throwable) {
+        ToastUtils.showShort("onError:+" + throwable.getMessage());
+    }
+
+    public V getViewBinding() {
+        return viewBinding;
+    }
+
+    @Override
+    protected void onDestroy() {
+        super.onDestroy();
+        AppManager.Companion.getInstance().finishActivity(this);
+        if (mLoading != null) {
+            mLoading.stopAnim();
+        }
+        if (viewBinding != null) {
+            viewBinding = null;
+        }
+    }
+}

+ 0 - 74
BaseLibrary/src/main/java/com/cooleshow/base/ui/activity/BaseActivity.kt

@@ -1,74 +0,0 @@
-package com.cooleshow.base.ui.activity
-
-import android.graphics.Color
-import android.os.Bundle
-import android.view.View
-import android.widget.ImageView
-import android.widget.TextView
-import androidx.appcompat.widget.Toolbar
-import androidx.viewbinding.ViewBinding
-import com.cooleshow.base.R
-import com.cooleshow.base.common.AppManager
-import com.cooleshow.base.presenter.view.BaseView
-import com.cooleshow.base.utils.ToastUtils
-import com.cooleshow.base.utils.helper.QMUIStatusBarHelper
-import com.cooleshow.base.widgets.ProgressLoading
-import com.trello.rxlifecycle4.components.support.RxAppCompatActivity
-
-/*
-    Activity基类,业务无关
- */
-abstract class BaseActivity<V : ViewBinding> : RxAppCompatActivity(), BaseView {
-    lateinit var mLoading: ProgressLoading;
-    lateinit var viewBinding: V;
-
-    override fun onCreate(savedInstanceState: Bundle?) {
-        super.onCreate(savedInstanceState)
-        viewBinding = getLayoutView()
-        setContentView(viewBinding?.root)
-        AppManager.instance.addActivity(this)
-        QMUIStatusBarHelper.translucent(this)
-        initView()
-        initData()
-    }
-
-    protected abstract fun getLayoutView(): V
-
-    protected abstract fun initView()
-
-    open fun initData() {
-        mLoading = ProgressLoading.create(this);
-    }
-
-    override fun showLoading() {
-        mLoading?.showLoading()
-    }
-
-    override fun hideLoading() {
-        mLoading?.hideLoading()
-    }
-
-    fun initMidTitleToolBar(toolbar: Toolbar?, title: String?) {
-        if (toolbar == null) return
-        val tv_title: TextView = toolbar.findViewById<TextView>(R.id.title)
-        toolbar.findViewById<View>(R.id.iv_back)
-            .setOnClickListener(View.OnClickListener { onBackPressed() })
-        toolbar.title = ""
-        (toolbar.findViewById(R.id.iv_back) as ImageView).setImageResource(R.drawable.icon_back_black)
-        tv_title.setTextColor(resources.getColor(R.color.common_black))
-        tv_title.text = title
-        setSupportActionBar(toolbar)
-        supportActionBar!!.setDisplayHomeAsUpEnabled(false)
-        supportActionBar!!.setDisplayShowHomeEnabled(false)
-    }
-
-    override fun onError(throwable: Throwable) {
-        ToastUtils.showShort("onError:${throwable.message}")
-    }
-
-    override fun onDestroy() {
-        super.onDestroy()
-        AppManager.instance.finishActivity(this)
-        mLoading?.stopAnim()
-    }
-}

+ 3 - 0
BaseLibrary/src/main/java/com/cooleshow/base/ui/fragment/BaseFragment.java

@@ -85,6 +85,9 @@ public abstract class BaseFragment<V extends ViewBinding> extends Fragment imple
         if (mLoading != null) {
             mLoading.stopAnim();
         }
+        if (mViewBinding != null) {
+            mViewBinding = null;
+        }
     }
 
     public void showLoading() {

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


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


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


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


+ 5 - 0
BaseLibrary/src/main/res/drawable/shape_bg_f7f8f9_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="@color/color_f7f8f9"/>
+    <corners android:radius="4dp"/>
+</shape>

+ 96 - 0
BaseLibrary/src/main/res/layout/common_toolbar_layout_white.xml

@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.appcompat.widget.Toolbar 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:id="@+id/toolbar"
+    android:layout_width="match_parent"
+    android:layout_height="73dp"
+    android:background="@color/transparent"
+    android:fitsSystemWindows="true"
+    android:paddingTop="25dp"
+    android:theme="@style/ThemeOverlay.AppCompat.ActionBar"
+    android:visibility="visible"
+    app:popupTheme="@style/AppBarTheme">
+
+    <ImageView
+        android:id="@+id/iv_back"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_gravity="center_vertical"
+        android:layout_marginRight="15dp"
+        android:paddingTop="5dp"
+        android:paddingRight="12dp"
+        android:paddingBottom="5dp"
+        android:src="@drawable/icon_back_arrow_white" />
+
+    <TextView
+        android:id="@+id/title"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_centerInParent="true"
+        android:layout_gravity="center"
+        android:textColor="@color/white"
+        android:textSize="@dimen/sp_18"
+        android:textStyle="bold"
+        tools:text="我的课程" />
+
+    <ImageView
+        android:id="@+id/tv_right"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_gravity="right"
+        android:layout_marginRight="15dp"
+        android:scaleType="centerCrop"
+        android:visibility="gone"
+        tools:visibility="visible" />
+
+    <ImageView
+        android:id="@+id/tv_right2"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_gravity="right"
+        android:layout_marginRight="25dp"
+        android:scaleType="centerCrop"
+        android:visibility="gone"
+        tools:visibility="visible" />
+
+    <TextView
+        android:id="@+id/tv_right_text"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_gravity="right|center_vertical"
+        android:layout_marginRight="15dp"
+        android:scaleType="centerCrop"
+        android:text=""
+        android:textColor="@color/white"
+        android:textSize="15sp"
+        android:visibility="gone"
+        tools:text="右侧标题"
+        tools:textColor="@color/white"
+        tools:visibility="gone" />
+
+    <RelativeLayout
+        android:id="@+id/rl_red_point_title"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_gravity="right|center_vertical"
+        android:layout_marginRight="15dp"
+        android:visibility="gone">
+
+        <TextView
+            android:id="@+id/tv_right_text_red"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="right|center_vertical"
+            android:layout_marginTop="4dp"
+
+            android:scaleType="centerCrop"
+            android:text=""
+            android:textColor="@color/white"
+            android:textSize="16sp"
+            android:visibility="gone"
+            tools:text="右侧标题"
+            tools:textColor="@color/white"
+            tools:visibility="visible" />
+    </RelativeLayout>
+</androidx.appcompat.widget.Toolbar>

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

@@ -52,4 +52,5 @@
     <color name="color_ff802c">#FF802C</color>
     <color name="black_333">#494757</color>
     <color name="color_f85043">#F85043</color>
+    <color name="color_f7f8f9">#F7F8F9</color>
 </resources>

+ 0 - 2
app/src/main/java/com/example/cooleshow/ui/activity/MainActivity.kt

@@ -5,9 +5,7 @@ import androidx.fragment.app.Fragment
 import com.alibaba.android.arouter.facade.annotation.Route
 import com.ashokvarma.bottomnavigation.BottomNavigationBar
 import com.cooleshow.base.common.AppManager
-import com.cooleshow.base.ext.showToast
 import com.cooleshow.base.router.RouterPath
-import com.cooleshow.base.ui.activity.BaseActivity
 import com.example.cooleshow.R
 import com.example.cooleshow.databinding.ActivityMainBinding
 import com.example.cooleshow.ui.fragment.HomeFragment

+ 0 - 2
app/src/main/java/com/example/cooleshow/ui/activity/splash/SplashActivity.kt

@@ -2,8 +2,6 @@ package com.example.cooleshow.ui.activity.splash
 
 import com.alibaba.android.arouter.launcher.ARouter
 import com.cooleshow.base.router.RouterPath
-import com.cooleshow.base.ui.activity.BaseActivity
-import com.example.cooleshow.R
 import com.example.cooleshow.databinding.ActivitySplashBinding
 
 

+ 5 - 0
teacher/src/main/AndroidManifest.xml

@@ -33,6 +33,11 @@
             android:name=".ui.web.WebActivity"
             android:configChanges="orientation|screenSize|keyboardHidden"
             android:screenOrientation="portrait" />
+
+        <activity
+            android:name=".ui.course.SparringCourseDetailActivity"
+            android:configChanges="orientation|screenSize|keyboardHidden"
+            android:screenOrientation="portrait" />
     </application>
 
 </manifest>

+ 16 - 0
teacher/src/main/java/com/cooleshow/teacher/contract/SparringCourseDetailContract.java

@@ -0,0 +1,16 @@
+package com.cooleshow.teacher.contract;
+
+import com.cooleshow.base.presenter.view.BaseView;
+import com.cooleshow.teacher.bean.SparringCourseListBean;
+
+/**
+ * Author by pq, Date on 2022/4/20.
+ */
+public interface SparringCourseDetailContract {
+
+    interface SparringCourseDetailView extends BaseView {
+    }
+
+    interface Presenter {
+    }
+}

+ 11 - 0
teacher/src/main/java/com/cooleshow/teacher/presenter/course/SparringCourseDetailPresenter.java

@@ -0,0 +1,11 @@
+package com.cooleshow.teacher.presenter.course;
+
+import com.cooleshow.base.presenter.BasePresenter;
+import com.cooleshow.teacher.contract.SparringCourseDetailContract;
+
+/**
+ * Author by pq, Date on 2022/4/27.
+ */
+public class SparringCourseDetailPresenter extends BasePresenter<SparringCourseDetailContract.SparringCourseDetailView> implements SparringCourseDetailContract.Presenter {
+
+}

+ 35 - 0
teacher/src/main/java/com/cooleshow/teacher/ui/course/SparringCourseDetailActivity.java

@@ -0,0 +1,35 @@
+package com.cooleshow.teacher.ui.course;
+
+import com.alibaba.android.arouter.facade.annotation.Route;
+import com.cooleshow.base.presenter.BasePresenter;
+import com.cooleshow.base.router.RouterPath;
+import com.cooleshow.base.ui.activity.BaseMVPActivity;
+import com.cooleshow.teacher.contract.SparringCourseContract;
+import com.cooleshow.teacher.contract.SparringCourseDetailContract;
+import com.cooleshow.teacher.databinding.ActivitySparringCourseDetailLayoutBinding;
+import com.cooleshow.teacher.presenter.course.SparringCourseDetailPresenter;
+
+import androidx.annotation.NonNull;
+import androidx.viewbinding.ViewBinding;
+
+/**
+ * Author by pq, Date on 2022/4/27.
+ */
+@Route(path = RouterPath.CourseCenter.SPARRING_COURSE_DETAIL)
+public class SparringCourseDetailActivity extends BaseMVPActivity<ActivitySparringCourseDetailLayoutBinding, SparringCourseDetailPresenter> implements SparringCourseDetailContract.SparringCourseDetailView {
+    @NonNull
+    @Override
+    protected ActivitySparringCourseDetailLayoutBinding getLayoutView() {
+        return ActivitySparringCourseDetailLayoutBinding.inflate(getLayoutInflater());
+    }
+
+    @Override
+    protected void initView() {
+
+    }
+
+    @Override
+    protected SparringCourseDetailPresenter createPresenter() {
+        return new SparringCourseDetailPresenter();
+    }
+}

+ 13 - 7
teacher/src/main/java/com/cooleshow/teacher/ui/main/HomeFragment.kt

@@ -34,6 +34,7 @@ class HomeFragment : BaseMVPFragment<FragmentHomeLayoutBinding, HomePresenter>()
     override fun initData() {
         mViewBinding.cardMineCourse.setOnClickListener(this)
         mViewBinding.ivUnCertificationTip.setOnClickListener(this)
+        mViewBinding.cardMineIncome.setOnClickListener(this)
     }
 
     override fun createPresenter(): HomePresenter {
@@ -67,16 +68,17 @@ class HomeFragment : BaseMVPFragment<FragmentHomeLayoutBinding, HomePresenter>()
         //头像
         GlideUtils.loadImage(requireContext(), teacherUserInfo.heardUrl, mViewBinding.ivAvatar)
         //昵称
-        mViewBinding.tvNickname.text = UserHelper.getTeacherName(teacherUserInfo.username, teacherUserInfo.userId);
+        mViewBinding.tvNickname.text =
+            UserHelper.getTeacherName(teacherUserInfo.username, teacherUserInfo.userId);
         //星级
         mViewBinding.ratingBar.rating = teacherUserInfo.starGrade.toFloat()
 
         //粉丝数
-        mViewBinding.tvFansNum.text=teacherUserInfo.fansNum;
+        mViewBinding.tvFansNum.text = teacherUserInfo.fansNum;
         //已上课时数
-        mViewBinding.tvCourseNumCompleted.text=teacherUserInfo.expTime
+        mViewBinding.tvCourseNumCompleted.text = teacherUserInfo.expTime
         //未上课时数
-        mViewBinding.tvCourseNumNotStart.text=teacherUserInfo.unExpTime
+        mViewBinding.tvCourseNumNotStart.text = teacherUserInfo.unExpTime
         //入驻状态
         when (teacherUserInfo.entryStatus) {
             TeacherInfoConstants.ENTRY_STATUS_DOING -> {
@@ -104,11 +106,11 @@ class HomeFragment : BaseMVPFragment<FragmentHomeLayoutBinding, HomePresenter>()
             }
         }
 
-        when(teacherUserInfo.musicianAuthStatus){
-            TeacherInfoConstants.MUSICIAN_STATUS_PASS->{
+        when (teacherUserInfo.musicianAuthStatus) {
+            TeacherInfoConstants.MUSICIAN_STATUS_PASS -> {
                 mViewBinding.ivTeacherMusicPersonTag.setVisible(true)
             }
-            else->{
+            else -> {
                 mViewBinding.ivTeacherMusicPersonTag.setVisible(false)
             }
         }
@@ -125,6 +127,10 @@ class HomeFragment : BaseMVPFragment<FragmentHomeLayoutBinding, HomePresenter>()
                 ARouter.getInstance().build(RouterPath.CourseCenter.TEACHER_MINE_COURSE)
                     .navigation()
             }
+            R.id.card_mine_income -> {
+                ARouter.getInstance().build(RouterPath.CourseCenter.SPARRING_COURSE_DETAIL)
+                    .navigation()
+            }
         }
     }
 

+ 0 - 1
teacher/src/main/java/com/cooleshow/teacher/ui/splash/SplashActivity.kt

@@ -3,7 +3,6 @@ package com.cooleshow.teacher.ui.splash
 import com.alibaba.android.arouter.launcher.ARouter
 import com.cooleshow.base.router.RouterPath
 import com.cooleshow.base.ui.activity.BaseActivity
-import com.cooleshow.teacher.R
 import com.cooleshow.teacher.databinding.ActivitySplashLayoutBinding
 import com.cooleshow.usercenter.helper.UserHelper
 

BIN
teacher/src/main/res/drawable-xhdpi/icon_edit_appraisal.png


BIN
teacher/src/main/res/drawable-xhdpi/icon_homework_comment.png


BIN
teacher/src/main/res/drawable-xhdpi/icon_homework_empty.png


BIN
teacher/src/main/res/drawable-xhdpi/icon_homework_video_empty.png


BIN
teacher/src/main/res/drawable-xhdpi/icon_stu_comment_empty.png


BIN
teacher/src/main/res/drawable-xhdpi/icon_teacher_appraisal_empty.png


BIN
teacher/src/main/res/drawable-xxhdpi/icon_edit_appraisal.png


BIN
teacher/src/main/res/drawable-xxhdpi/icon_homework_comment.png


BIN
teacher/src/main/res/drawable-xxhdpi/icon_homework_empty.png


BIN
teacher/src/main/res/drawable-xxhdpi/icon_homework_video_empty.png


BIN
teacher/src/main/res/drawable-xxhdpi/icon_stu_comment_empty.png


BIN
teacher/src/main/res/drawable-xxhdpi/icon_teacher_appraisal_empty.png


+ 8 - 0
teacher/src/main/res/drawable/shape_course_title_tag_bg.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <gradient android:type="linear" android:useLevel="true"
+        android:startColor="#ff59e5d5"
+        android:endColor="#ff2dc7aa"
+        android:angle="180" />
+    <corners android:radius="3dp" />
+</shape>

+ 481 - 0
teacher/src/main/res/layout/activity_sparring_course_detail_layout.xml

@@ -0,0 +1,481 @@
+<?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="match_parent">
+
+    <ImageView
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:adjustViewBounds="true"
+        android:scaleType="fitXY"
+        android:src="@drawable/bg_sparring_course_header"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintTop_toTopOf="parent" />
+
+    <include
+        android:id="@+id/toolbar_include"
+        layout="@layout/common_toolbar_layout_white" />
+
+    <androidx.core.widget.NestedScrollView
+        android:layout_width="match_parent"
+        android:layout_height="0dp"
+        android:overScrollMode="never"
+        android:scrollbars="none"
+        app:layout_constraintTop_toBottomOf="@+id/toolbar_include">
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:orientation="vertical"
+            android:paddingStart="14dp"
+            android:paddingEnd="14dp">
+
+            <androidx.constraintlayout.widget.ConstraintLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:background="@drawable/bg_white_10dp"
+                android:paddingBottom="20dp">
+
+                <ImageView
+                    android:id="@+id/iv_time_icon"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginStart="11dp"
+                    android:layout_marginTop="12dp"
+                    android:src="@drawable/icon_clock"
+                    app:layout_constraintLeft_toLeftOf="parent"
+                    app:layout_constraintTop_toTopOf="parent" />
+
+                <TextView
+                    android:id="@+id/tv_course_time"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    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"
+                    tools:text="2021/09/17 14:00~14:25" />
+
+                <TextView
+                    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:background="@color/color_f2f2f2"
+                    app:layout_constraintTop_toBottomOf="@+id/iv_time_icon" />
+
+                <com.cooleshow.base.widgets.QMUIRadiusImageView
+                    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"
+                    app:layout_constraintLeft_toLeftOf="parent"
+                    app:layout_constraintTop_toBottomOf="@+id/view_line" />
+
+                <TextView
+                    android:id="@+id/tv_title"
+                    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:textColor="@color/color_1a1a1a"
+                    android:textSize="@dimen/sp_16"
+                    android:textStyle="bold"
+                    app:layout_constraintBottom_toTopOf="@+id/tv_course_name"
+                    app:layout_constraintLeft_toRightOf="@+id/iv_avatar"
+                    app:layout_constraintRight_toRightOf="parent"
+                    app:layout_constraintTop_toTopOf="@+id/iv_avatar"
+                    app:layout_constraintVertical_chainStyle="packed"
+                    tools:text="张豆豆张豆豆张豆豆张豆" />
+
+                <TextView
+                    android:id="@+id/tv_course_name"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="8dp"
+                    android:background="@drawable/shape_couse_type_text_bg"
+                    android:gravity="center"
+                    android:includeFontPadding="false"
+                    android:paddingStart="4dp"
+                    android:paddingTop="2dp"
+                    android:paddingEnd="4dp"
+                    android:paddingBottom="2dp"
+                    android:textColor="@color/color_ff8c00"
+                    android:textSize="@dimen/sp_11"
+                    app:layout_constraintBottom_toBottomOf="@+id/iv_avatar"
+                    app:layout_constraintLeft_toLeftOf="@+id/tv_title"
+                    app:layout_constraintTop_toBottomOf="@+id/tv_title"
+                    tools:text="单簧管" />
+
+            </androidx.constraintlayout.widget.ConstraintLayout>
+
+
+            <androidx.constraintlayout.widget.ConstraintLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="12dp"
+                android:background="@drawable/bg_white_10dp"
+                android:paddingBottom="10dp">
+
+                <View
+                    android:id="@+id/view_title_line"
+                    android:layout_width="4dp"
+                    android:layout_height="14dp"
+                    android:layout_marginStart="12dp"
+                    android:layout_marginTop="13dp"
+                    android:background="@drawable/shape_course_title_tag_bg"
+                    app:layout_constraintLeft_toLeftOf="parent"
+                    app:layout_constraintTop_toTopOf="parent" />
+
+                <TextView
+                    android:id="@+id/tv_teacher_appraisal_title"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:includeFontPadding="false"
+                    android:paddingStart="5dp"
+                    android:text="老师评价"
+                    android:textColor="@color/color_1a1a1a"
+                    android:textSize="@dimen/sp_13"
+                    app:layout_constraintBottom_toBottomOf="@+id/view_title_line"
+                    app:layout_constraintLeft_toRightOf="@+id/view_title_line"
+                    app:layout_constraintTop_toTopOf="@+id/view_title_line" />
+
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:drawableLeft="@drawable/icon_edit_appraisal"
+                    android:drawablePadding="3dp"
+                    android:includeFontPadding="false"
+                    android:paddingEnd="11dp"
+                    android:text="@string/appraisal_str"
+                    android:textColor="@color/color_2dc7aa"
+                    android:textSize="@dimen/sp_14"
+                    app:layout_constraintBottom_toBottomOf="@+id/view_title_line"
+                    app:layout_constraintRight_toRightOf="parent"
+                    app:layout_constraintTop_toTopOf="@+id/view_title_line" />
+
+                <FrameLayout
+                    android:id="@+id/view_content_bg"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginStart="11dp"
+                    android:layout_marginTop="11dp"
+                    android:layout_marginEnd="11dp"
+                    android:background="@drawable/shape_bg_f7f8f9_4dp"
+                    android:minHeight="88dp"
+                    android:padding="11dp"
+                    app:layout_constraintTop_toBottomOf="@+id/view_title_line">
+
+                    <TextView
+                        android:id="@+id/tv_teacher_appraisal_empty_text"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_gravity="center"
+                        android:drawableLeft="@drawable/icon_teacher_appraisal_empty"
+                        android:drawablePadding="8dp"
+                        android:gravity="center_vertical"
+                        android:text="课程结束之后记得对学员的\n表现进行评价哦!"
+                        android:textColor="@color/color_999999"
+                        android:textSize="@dimen/sp_13" />
+
+                    <TextView
+                        android:id="@+id/tv_teacher_appraisal_content"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:includeFontPadding="false"
+                        android:textColor="@color/color_333333"
+                        android:textSize="@dimen/sp_13"
+                        android:visibility="gone"
+                        tools:text="每个音的指法比较熟练,但是遇到指法变换比较频繁的小节熟练度不足,建议平时可以选择指法变换较大的曲目多加练习!" />
+                </FrameLayout>
+            </androidx.constraintlayout.widget.ConstraintLayout>
+
+            <androidx.constraintlayout.widget.ConstraintLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="12dp"
+                android:background="@drawable/bg_white_10dp"
+                android:paddingBottom="10dp">
+
+                <View
+                    android:id="@+id/view_title_line_stu_comment"
+                    android:layout_width="4dp"
+                    android:layout_height="14dp"
+                    android:layout_marginStart="12dp"
+                    android:layout_marginTop="13dp"
+                    android:background="@drawable/shape_course_title_tag_bg"
+                    app:layout_constraintLeft_toLeftOf="parent"
+                    app:layout_constraintTop_toTopOf="parent" />
+
+                <TextView
+                    android:id="@+id/tv_stu_comment_title"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:includeFontPadding="false"
+                    android:paddingStart="5dp"
+                    android:text="学员评价"
+                    android:textColor="@color/color_1a1a1a"
+                    android:textSize="@dimen/sp_13"
+                    app:layout_constraintBottom_toBottomOf="@+id/view_title_line_stu_comment"
+                    app:layout_constraintLeft_toRightOf="@+id/view_title_line_stu_comment"
+                    app:layout_constraintTop_toTopOf="@+id/view_title_line_stu_comment" />
+
+                <FrameLayout
+                    android:id="@+id/view_stu_comment_content_bg"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginStart="11dp"
+                    android:layout_marginTop="11dp"
+                    android:layout_marginEnd="11dp"
+                    android:background="@drawable/shape_bg_f7f8f9_4dp"
+                    android:minHeight="88dp"
+                    android:padding="11dp"
+                    app:layout_constraintTop_toBottomOf="@+id/view_title_line_stu_comment">
+
+                    <TextView
+                        android:id="@+id/tv_stu_comment_empty_text"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_gravity="center"
+                        android:drawableLeft="@drawable/icon_stu_comment_empty"
+                        android:drawablePadding="8dp"
+                        android:gravity="center_vertical"
+                        android:text="学员尚未对您进行评价"
+                        android:textColor="@color/color_999999"
+                        android:textSize="@dimen/sp_13" />
+
+                    <TextView
+                        android:id="@+id/tv_stu_comment_content"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:includeFontPadding="false"
+                        android:textColor="@color/color_333333"
+                        android:textSize="@dimen/sp_13"
+                        android:visibility="gone"
+                        tools:text="每个音的指法比较熟练,但是遇到指法变换比较频繁的小节熟练度不足,建议平时可以选择指法变换较大的曲目多加练习!" />
+                </FrameLayout>
+            </androidx.constraintlayout.widget.ConstraintLayout>
+
+            <androidx.constraintlayout.widget.ConstraintLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="12dp"
+                android:background="@drawable/bg_white_10dp"
+                android:paddingBottom="10dp">
+
+                <View
+                    android:id="@+id/view_title_line_homework"
+                    android:layout_width="4dp"
+                    android:layout_height="14dp"
+                    android:layout_marginStart="12dp"
+                    android:layout_marginTop="13dp"
+                    android:background="@drawable/shape_course_title_tag_bg"
+                    app:layout_constraintLeft_toLeftOf="parent"
+                    app:layout_constraintTop_toTopOf="parent" />
+
+                <TextView
+                    android:id="@+id/tv_homework_title"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:includeFontPadding="false"
+                    android:paddingStart="5dp"
+                    android:text="课后作业"
+                    android:textColor="@color/color_1a1a1a"
+                    android:textSize="@dimen/sp_13"
+                    app:layout_constraintBottom_toBottomOf="@+id/view_title_line_homework"
+                    app:layout_constraintLeft_toRightOf="@+id/view_title_line_homework"
+                    app:layout_constraintTop_toTopOf="@+id/view_title_line_homework" />
+
+                <FrameLayout
+                    android:id="@+id/view_homework_content_bg"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginStart="11dp"
+                    android:layout_marginTop="11dp"
+                    android:layout_marginEnd="11dp"
+                    android:background="@drawable/shape_bg_f7f8f9_4dp"
+                    android:minHeight="88dp"
+                    android:padding="11dp"
+                    app:layout_constraintTop_toBottomOf="@+id/view_title_line_homework">
+
+                    <TextView
+                        android:id="@+id/tv_homework_empty_text"
+                        android:layout_width="wrap_content"
+                        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"
+                        android:textSize="@dimen/sp_13" />
+
+                    <TextView
+                        android:id="@+id/tv_homework_content"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:includeFontPadding="false"
+                        android:textColor="@color/color_333333"
+                        android:textSize="@dimen/sp_13"
+                        android:visibility="gone"
+                        tools:text="每个音的指法比较熟练,但是遇到指法变换比较频繁的小节熟练度不足,建议平时可以选择指法变换较大的曲目多加练习!" />
+                </FrameLayout>
+            </androidx.constraintlayout.widget.ConstraintLayout>
+
+            <androidx.constraintlayout.widget.ConstraintLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="12dp"
+                android:background="@drawable/bg_white_10dp"
+                android:paddingBottom="10dp">
+
+                <View
+                    android:id="@+id/view_title_line_homework_video"
+                    android:layout_width="4dp"
+                    android:layout_height="14dp"
+                    android:layout_marginStart="12dp"
+                    android:layout_marginTop="13dp"
+                    android:background="@drawable/shape_course_title_tag_bg"
+                    app:layout_constraintLeft_toLeftOf="parent"
+                    app:layout_constraintTop_toTopOf="parent" />
+
+                <TextView
+                    android:id="@+id/tv_homework_video_title"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:includeFontPadding="false"
+                    android:paddingStart="5dp"
+                    android:text="作业视频"
+                    android:textColor="@color/color_1a1a1a"
+                    android:textSize="@dimen/sp_13"
+                    app:layout_constraintBottom_toBottomOf="@+id/view_title_line_homework_video"
+                    app:layout_constraintLeft_toRightOf="@+id/view_title_line_homework_video"
+                    app:layout_constraintTop_toTopOf="@+id/view_title_line_homework_video" />
+
+                <FrameLayout
+                    android:id="@+id/view_homework_video_content_bg"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginStart="11dp"
+                    android:layout_marginTop="11dp"
+                    android:layout_marginEnd="11dp"
+                    android:background="@drawable/shape_bg_f7f8f9_4dp"
+                    android:minHeight="88dp"
+                    android:padding="11dp"
+                    app:layout_constraintTop_toBottomOf="@+id/view_title_line_homework_video">
+
+                    <TextView
+                        android:id="@+id/tv_homework_video_empty_text"
+                        android:layout_width="wrap_content"
+                        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"
+                        android:textSize="@dimen/sp_13" />
+
+                    <TextView
+                        android:id="@+id/tv_homework_video_content"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:includeFontPadding="false"
+                        android:textColor="@color/color_333333"
+                        android:textSize="@dimen/sp_13"
+                        android:visibility="gone"
+                        tools:text="每个音的指法比较熟练,但是遇到指法变换比较频繁的小节熟练度不足,建议平时可以选择指法变换较大的曲目多加练习!" />
+                </FrameLayout>
+            </androidx.constraintlayout.widget.ConstraintLayout>
+
+
+            <androidx.constraintlayout.widget.ConstraintLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="12dp"
+                android:background="@drawable/bg_white_10dp"
+                android:paddingBottom="10dp">
+
+                <View
+                    android:id="@+id/view_title_line_homework_comment"
+                    android:layout_width="4dp"
+                    android:layout_height="14dp"
+                    android:layout_marginStart="12dp"
+                    android:layout_marginTop="13dp"
+                    android:background="@drawable/shape_course_title_tag_bg"
+                    app:layout_constraintLeft_toLeftOf="parent"
+                    app:layout_constraintTop_toTopOf="parent" />
+
+                <TextView
+                    android:id="@+id/tv_homework_comment_title"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:includeFontPadding="false"
+                    android:paddingStart="5dp"
+                    android:text="作业点评"
+                    android:textColor="@color/color_1a1a1a"
+                    android:textSize="@dimen/sp_13"
+                    app:layout_constraintBottom_toBottomOf="@+id/view_title_line_homework_comment"
+                    app:layout_constraintLeft_toRightOf="@+id/view_title_line_homework_comment"
+                    app:layout_constraintTop_toTopOf="@+id/view_title_line_homework_comment" />
+
+                <FrameLayout
+                    android:id="@+id/view_homework_comment_content_bg"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginStart="11dp"
+                    android:layout_marginTop="11dp"
+                    android:layout_marginEnd="11dp"
+                    android:background="@drawable/shape_bg_f7f8f9_4dp"
+                    android:minHeight="88dp"
+                    android:padding="11dp"
+                    app:layout_constraintTop_toBottomOf="@+id/view_title_line_homework_comment">
+
+                    <TextView
+                        android:id="@+id/tv_homework_comment_empty_text"
+                        android:layout_width="wrap_content"
+                        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"
+                        android:textSize="@dimen/sp_13" />
+
+                    <TextView
+                        android:id="@+id/tv_homework_comment_content"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:includeFontPadding="false"
+                        android:textColor="@color/color_333333"
+                        android:textSize="@dimen/sp_13"
+                        android:visibility="gone"
+                        tools:text="每个音的指法比较熟练,但是遇到指法变换比较频繁的小节熟练度不足,建议平时可以选择指法变换较大的曲目多加练习!" />
+                </FrameLayout>
+            </androidx.constraintlayout.widget.ConstraintLayout>
+        </LinearLayout>
+    </androidx.core.widget.NestedScrollView>
+
+</androidx.constraintlayout.widget.ConstraintLayout>

+ 1 - 0
teacher/src/main/res/values/strings.xml

@@ -7,4 +7,5 @@
     <string name="menu_mine">我的</string>
     <string name="pay_count_str">%1$s人已购买</string>
     <string name="home_mine_course_str">我的课程</string>
+    <string name="appraisal_str">评价</string>
 </resources>

+ 4 - 4
usercenter/src/main/java/com/cooleshow/usercenter/ui/activity/LoginActivity.kt

@@ -50,7 +50,7 @@ class LoginActivity : BaseMVPActivity<ActivityLoginBinding, LoginPresenter>(),
 
         var phone: String? = intent.getStringExtra(UserConstants.PHONE_NUM_KEY);
         if (!TextUtils.isEmpty(phone)) {
-            viewBinding.etPhoneNum.setText(phone);
+            viewBinding?.etPhoneNum?.setText(phone);
         }
         setPrivacyText()
         mLoginBtn.setOnClickListener {
@@ -85,9 +85,9 @@ class LoginActivity : BaseMVPActivity<ActivityLoginBinding, LoginPresenter>(),
     }
 
     private fun setPrivacyText() {
-        viewBinding.tvPrivacy.movementMethod = LinkMovementMethod.getInstance()
+        viewBinding?.tvPrivacy?.movementMethod = LinkMovementMethod.getInstance()
         val builder = SpannableStringUtils.Builder()
-        viewBinding.tvPrivacy.highlightColor = Color.TRANSPARENT
+        viewBinding?.tvPrivacy?.highlightColor = Color.TRANSPARENT
         builder.append(getString(R.string.login_privacy_tip))
             .setClickSpan(object : ClickableSpan() {
                 override fun onClick(view: View) {
@@ -113,7 +113,7 @@ class LoginActivity : BaseMVPActivity<ActivityLoginBinding, LoginPresenter>(),
                     ds.isUnderlineText = false
                 }
             })
-        viewBinding.tvPrivacy.text = builder.create()
+        viewBinding?.tvPrivacy?.text = builder.create()
     }
 
     private fun startWebActivity(agreement: String?) {