Quellcode durchsuchen

添加老师端个人主页个人风采和乐谱页面

Pq vor 2 Jahren
Ursprung
Commit
41b89774fc
54 geänderte Dateien mit 1322 neuen und 48 gelöschten Zeilen
  1. 7 0
      BaseLibrary/src/main/java/com/cooleshow/base/constanst/SheetMusicConstants.java
  2. 0 2
      BaseLibrary/src/main/java/com/cooleshow/base/ui/fragment/BaseFragment.java
  3. 17 3
      BaseLibrary/src/main/java/com/cooleshow/base/utils/GlideUtils.kt
  4. 10 2
      BaseLibrary/src/main/java/com/cooleshow/base/utils/UiUtils.java
  5. BIN
      BaseLibrary/src/main/res/drawable-xhdpi/icon_music_free.png
  6. BIN
      BaseLibrary/src/main/res/drawable-xhdpi/icon_music_order.png
  7. BIN
      BaseLibrary/src/main/res/drawable-xhdpi/icon_music_vip.png
  8. BIN
      BaseLibrary/src/main/res/drawable-xhdpi/icon_play_video.png
  9. BIN
      BaseLibrary/src/main/res/drawable-xxhdpi/icon_music_free.png
  10. BIN
      BaseLibrary/src/main/res/drawable-xxhdpi/icon_music_order.png
  11. BIN
      BaseLibrary/src/main/res/drawable-xxhdpi/icon_music_vip.png
  12. BIN
      BaseLibrary/src/main/res/drawable-xxhdpi/icon_play_video.png
  13. 9 0
      BaseLibrary/src/main/res/drawable/bg_white_10dp_border_e5e5e5.xml
  14. 0 0
      BaseLibrary/src/main/res/drawable/shape_couse_type_text_bg.xml
  15. 16 0
      BaseLibrary/src/main/res/layout/view_subject_item_layout.xml
  16. 3 0
      BaseLibrary/src/main/res/values/colors.xml
  17. 83 0
      teacher/src/main/java/com/cooleshow/teacher/adapter/HomePageSheetMusicAdapter.java
  18. 21 0
      teacher/src/main/java/com/cooleshow/teacher/adapter/MineStyleFansGroupListAdapter.java
  19. 29 0
      teacher/src/main/java/com/cooleshow/teacher/adapter/MineStyleVideoListAdapter.java
  20. 20 0
      teacher/src/main/java/com/cooleshow/teacher/api/APIService.java
  21. 200 0
      teacher/src/main/java/com/cooleshow/teacher/bean/HomePageSheetMusicListBean.java
  22. 103 0
      teacher/src/main/java/com/cooleshow/teacher/bean/TeacherSelfStyleInfoBean.java
  23. 3 0
      teacher/src/main/java/com/cooleshow/teacher/contract/HomePageContract.java
  24. 16 0
      teacher/src/main/java/com/cooleshow/teacher/contract/LiveCoursePageContract.java
  25. 3 0
      teacher/src/main/java/com/cooleshow/teacher/contract/MineStyleContract.java
  26. 19 0
      teacher/src/main/java/com/cooleshow/teacher/contract/SheetMusicPageContract.java
  27. 4 3
      teacher/src/main/java/com/cooleshow/teacher/presenter/homePage/HomePagePresenter.java
  28. 42 0
      teacher/src/main/java/com/cooleshow/teacher/presenter/homePage/LiveCoursePagePresenter.java
  29. 8 6
      teacher/src/main/java/com/cooleshow/teacher/presenter/homePage/MineStylePresenter.java
  30. 73 0
      teacher/src/main/java/com/cooleshow/teacher/presenter/homePage/SheetMusicPagePresenter.java
  31. 81 8
      teacher/src/main/java/com/cooleshow/teacher/ui/homepage/HomePageActivity.java
  32. 5 3
      teacher/src/main/java/com/cooleshow/teacher/ui/homepage/LiveCoursePageFragment.java
  33. 41 2
      teacher/src/main/java/com/cooleshow/teacher/ui/homepage/MineStyleFragment.java
  34. 113 3
      teacher/src/main/java/com/cooleshow/teacher/ui/homepage/SheetMusicPageFragment.java
  35. 1 1
      teacher/src/main/java/com/cooleshow/teacher/ui/homepage/SparringCoursePageFragment.java
  36. 1 1
      teacher/src/main/java/com/cooleshow/teacher/ui/homepage/VideoCoursePageFragment.java
  37. 41 0
      teacher/src/main/java/com/cooleshow/teacher/widgets/MineStyleVideoListItemDecoration.java
  38. BIN
      teacher/src/main/res/drawable-xhdpi/icon_fans_group.png
  39. BIN
      teacher/src/main/res/drawable-xhdpi/icon_self_introduction.png
  40. BIN
      teacher/src/main/res/drawable-xhdpi/icon_sheet_music_img.png
  41. BIN
      teacher/src/main/res/drawable-xhdpi/icon_teacher_style.png
  42. BIN
      teacher/src/main/res/drawable-xhdpi/icon_upload_sheet_music.png
  43. BIN
      teacher/src/main/res/drawable-xxhdpi/icon_fans_group.png
  44. BIN
      teacher/src/main/res/drawable-xxhdpi/icon_self_introduction.png
  45. BIN
      teacher/src/main/res/drawable-xxhdpi/icon_sheet_music_img.png
  46. BIN
      teacher/src/main/res/drawable-xxhdpi/icon_teacher_style.png
  47. BIN
      teacher/src/main/res/drawable-xxhdpi/icon_upload_sheet_music.png
  48. 3 4
      teacher/src/main/res/layout/activity_home_page_layout.xml
  49. 173 3
      teacher/src/main/res/layout/fragment_mine_style_layout.xml
  50. 54 7
      teacher/src/main/res/layout/fragment_sheet_music_page_layout.xml
  51. 99 0
      teacher/src/main/res/layout/item_home_page_sheet_music_layout.xml
  52. 6 0
      teacher/src/main/res/layout/item_mine_style_fans_group_layout.xml
  53. 17 0
      teacher/src/main/res/layout/item_mine_style_video_layout.xml
  54. 1 0
      teacher/src/main/res/values/strings.xml

+ 7 - 0
BaseLibrary/src/main/java/com/cooleshow/base/constanst/SheetMusicConstants.java

@@ -0,0 +1,7 @@
+package com.cooleshow.base.constanst;
+
+public class SheetMusicConstants {
+    public static final String SHEET_MUSIC_CHARGE_TYPE_FREE = "FREE";//免费
+    public static final String SHEET_MUSIC_CHARGE_TYPE_VIP = "VIP";//VIP
+    public static final String SHEET_MUSIC_CHARGE_TYPE_CHARGE = "CHARGE";//单曲收费
+}

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

@@ -108,7 +108,5 @@ public abstract class BaseFragment<V extends ViewBinding> extends Fragment imple
     public void onError(@NonNull Throwable throwable) {
         throwable.printStackTrace();
         ErrorParse.getInstance().parseError(throwable);
-        LogUtils.e("onError:" + throwable.getMessage());
-        ToastUtils.showShort("onError:" + throwable.getMessage());
     }
 }

+ 17 - 3
BaseLibrary/src/main/java/com/cooleshow/base/utils/GlideUtils.kt

@@ -1,11 +1,11 @@
 package com.cooleshow.base.utils
 
+//import com.bumptech.glide.load.resource.drawable.GlideDrawable
+//import com.bumptech.glide.request.animation.GlideAnimation
 import android.content.Context
 import android.widget.ImageView
 import com.bumptech.glide.Glide
-//import com.bumptech.glide.load.resource.drawable.GlideDrawable
-//import com.bumptech.glide.request.animation.GlideAnimation
-import com.bumptech.glide.request.target.SimpleTarget
+import com.bumptech.glide.request.RequestOptions
 import com.cooleshow.base.R
 
 /*
@@ -36,4 +36,18 @@ object GlideUtils {
 //                    }
 //                })
     }
+
+
+    fun loadVideoThumbnail(context: Context,videoUrl: String, view: ImageView) {
+        Glide.with(context)
+            .setDefaultRequestOptions(
+                RequestOptions()
+                    .frame(0)
+                    .centerCrop()
+                    .error(R.drawable.bg_video_placeholder)
+                    .placeholder(R.drawable.bg_video_placeholder)
+            )
+            .load(videoUrl)
+            .into(view)
+    }
 }

+ 10 - 2
BaseLibrary/src/main/java/com/cooleshow/base/utils/UiUtils.java

@@ -113,11 +113,11 @@ public class UiUtils {
     public static SpannableString diffColorString(String bigSizeStr, String centerStr, String lastStr, int firstColor, int centerColor) {
         String tmpStr = bigSizeStr + centerStr + lastStr;
         SpannableString result = new SpannableString(tmpStr);
-        try{
+        try {
             result.setSpan(new ForegroundColorSpan(firstColor), 0, bigSizeStr.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
             result.setSpan(new ForegroundColorSpan(centerColor), bigSizeStr.length(), bigSizeStr.length() + centerStr.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
             result.setSpan(new ForegroundColorSpan(firstColor), bigSizeStr.length() + centerStr.length(), tmpStr.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
-        }catch (Exception e){
+        } catch (Exception e) {
             e.printStackTrace();
         }
         return result;
@@ -157,4 +157,12 @@ public class UiUtils {
         }
     }
 
+    public static String[] splitSubjectName(String subjectName) {
+        if (TextUtils.isEmpty(subjectName)) {
+            return null;
+        }
+        String[] split = subjectName.split(",");
+        return split;
+    }
+
 }

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


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


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


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


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


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


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


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


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

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+    <solid android:color="@color/white" />
+    <corners
+        android:radius="10dp" />
+    <stroke android:color="@color/color_e5e5e5"
+        android:width="1dp"/>
+</shape>

+ 0 - 0
teacher/src/main/res/drawable/shape_couse_type_text_bg.xml → BaseLibrary/src/main/res/drawable/shape_couse_type_text_bg.xml


+ 16 - 0
BaseLibrary/src/main/res/layout/view_subject_item_layout.xml

@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<TextView xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:id="@+id/tv_course_name"
+    tools:text="单簧管"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    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" />

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

@@ -58,4 +58,7 @@
     <color name="color_f7f8f9">#F7F8F9</color>
     <color name="color_1ecdac">#1ECDAC</color>
     <color name="color_a6ffffff">#A6ffffff</color>
+    <color name="color_e5e5e5">#E5E5E5</color>
+    <color name="color_0086ff">#0086FF</color>
+    <color name="color_e1f0ff">#E1F0FF</color>
 </resources>

+ 83 - 0
teacher/src/main/java/com/cooleshow/teacher/adapter/HomePageSheetMusicAdapter.java

@@ -0,0 +1,83 @@
+package com.cooleshow.teacher.adapter;
+
+import android.media.Image;
+import android.text.TextUtils;
+import android.view.LayoutInflater;
+import android.view.ViewGroup;
+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.module.BaseLoadMoreModule;
+import com.chad.library.adapter.base.module.LoadMoreModule;
+import com.chad.library.adapter.base.viewholder.BaseViewHolder;
+import com.cooleshow.base.constanst.SheetMusicConstants;
+import com.cooleshow.base.presenter.view.BaseView;
+import com.cooleshow.base.utils.GlideUtils;
+import com.cooleshow.base.utils.SizeUtils;
+import com.cooleshow.base.utils.UiUtils;
+import com.cooleshow.teacher.R;
+import com.cooleshow.teacher.bean.HomePageSheetMusicListBean;
+
+import androidx.annotation.NonNull;
+
+/**
+ * Author by pq, Date on 2022/5/10.
+ */
+public class HomePageSheetMusicAdapter extends BaseQuickAdapter<HomePageSheetMusicListBean.RowsBean, BaseViewHolder> implements LoadMoreModule {
+
+
+    public HomePageSheetMusicAdapter(int layoutResId) {
+        super(layoutResId);
+    }
+
+    @Override
+    protected void convert(@NonNull BaseViewHolder holder, HomePageSheetMusicListBean.RowsBean bean) {
+        //曲谱名称
+        holder.setText(R.id.tv_title, bean.musicSheetName);
+        //音乐人
+        holder.setText(R.id.tv_author, bean.composer);
+        //创建人
+        holder.setText(R.id.tv_nickname, bean.addName);
+        ImageView cir_avatar = holder.getView(R.id.cir_avatar);
+        GlideUtils.INSTANCE.loadImage(getContext(), bean.addUserAvatar, cir_avatar, R.drawable.icon_teacher_default_head);
+
+        ImageView iv_enter = holder.getView(R.id.iv_enter);
+        if (TextUtils.equals(bean.chargeType, SheetMusicConstants.SHEET_MUSIC_CHARGE_TYPE_VIP)) {
+            iv_enter.setImageResource(com.cooleshow.base.R.drawable.icon_music_vip);
+        } else if (TextUtils.equals(bean.chargeType, SheetMusicConstants.SHEET_MUSIC_CHARGE_TYPE_CHARGE)) {
+            iv_enter.setImageResource(com.cooleshow.base.R.drawable.icon_music_order);
+        } else {
+            iv_enter.setImageResource(com.cooleshow.base.R.drawable.icon_music_free);
+        }
+
+        //subject
+        try {
+            LinearLayout ll_subject_container = holder.getView(R.id.ll_subject_container);
+            ll_subject_container.removeAllViews();
+            String[] subjectNames = UiUtils.splitSubjectName(bean.subjectNames);
+            for (int i = 0; i < subjectNames.length; i++) {
+                createSubjectView(ll_subject_container, subjectNames[i]);
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    @NonNull
+    @Override
+    public BaseLoadMoreModule addLoadMoreModule(@NonNull BaseQuickAdapter<?, ?> baseQuickAdapter) {
+        return new BaseLoadMoreModule(baseQuickAdapter);
+    }
+
+    private void createSubjectView(ViewGroup container, String text) {
+        TextView textView = (TextView) LayoutInflater.from(getContext()).inflate(com.cooleshow.base.R.layout.view_subject_item_layout, container, false);
+        textView.setText(text);
+        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
+        if (container.getChildCount() >= 1) {
+            params.setMargins(SizeUtils.dp2px(4), 0, 0, 0);
+        }
+        container.addView(textView, params);
+    }
+}

+ 21 - 0
teacher/src/main/java/com/cooleshow/teacher/adapter/MineStyleFansGroupListAdapter.java

@@ -0,0 +1,21 @@
+package com.cooleshow.teacher.adapter;
+
+import com.chad.library.adapter.base.BaseQuickAdapter;
+import com.chad.library.adapter.base.viewholder.BaseViewHolder;
+import com.cooleshow.teacher.bean.TeacherSelfStyleInfoBean;
+
+import androidx.annotation.NonNull;
+
+/**
+ * Author by pq, Date on 2022/5/10.
+ */
+public class MineStyleFansGroupListAdapter extends BaseQuickAdapter<TeacherSelfStyleInfoBean.StyleVideoBean, BaseViewHolder> {
+    public MineStyleFansGroupListAdapter(int layoutResId) {
+        super(layoutResId);
+    }
+
+    @Override
+    protected void convert(@NonNull BaseViewHolder holder, TeacherSelfStyleInfoBean.StyleVideoBean styleVideoBean) {
+
+    }
+}

+ 29 - 0
teacher/src/main/java/com/cooleshow/teacher/adapter/MineStyleVideoListAdapter.java

@@ -0,0 +1,29 @@
+package com.cooleshow.teacher.adapter;
+
+import android.widget.ImageView;
+
+import com.bumptech.glide.Glide;
+import com.bumptech.glide.request.RequestOptions;
+import com.chad.library.adapter.base.BaseQuickAdapter;
+import com.chad.library.adapter.base.viewholder.BaseViewHolder;
+import com.cooleshow.base.utils.GlideUtils;
+import com.cooleshow.teacher.R;
+import com.cooleshow.teacher.bean.TeacherSelfStyleInfoBean;
+
+import androidx.annotation.NonNull;
+
+/**
+ * Author by pq, Date on 2022/5/10.
+ */
+public class MineStyleVideoListAdapter extends BaseQuickAdapter<TeacherSelfStyleInfoBean.StyleVideoBean, BaseViewHolder> {
+    public MineStyleVideoListAdapter(int layoutResId) {
+        super(layoutResId);
+    }
+
+    @Override
+    protected void convert(@NonNull BaseViewHolder holder, TeacherSelfStyleInfoBean.StyleVideoBean styleVideoBean) {
+        //加载视频缩略图
+        ImageView iv_video_bg =holder.getView(R.id.iv_video_bg);
+        GlideUtils.INSTANCE.loadVideoThumbnail(getContext(),styleVideoBean.videoUrl,iv_video_bg);
+    }
+}

+ 20 - 0
teacher/src/main/java/com/cooleshow/teacher/api/APIService.java

@@ -3,11 +3,13 @@ package com.cooleshow.teacher.api;
 import com.cooleshow.base.data.net.BaseResponse;
 import com.cooleshow.teacher.bean.CourseCommentListBean;
 import com.cooleshow.teacher.bean.CourseTableDataBean;
+import com.cooleshow.teacher.bean.HomePageSheetMusicListBean;
 import com.cooleshow.teacher.bean.LiveCourseListBean;
 import com.cooleshow.teacher.bean.ReceivedCommentListBean;
 import com.cooleshow.teacher.bean.SparringCourseCommentBean;
 import com.cooleshow.teacher.bean.SparringCourseHomeworkBean;
 import com.cooleshow.teacher.bean.SparringCourseListBean;
+import com.cooleshow.teacher.bean.TeacherSelfStyleInfoBean;
 import com.cooleshow.teacher.bean.TeacherUserInfo;
 import com.cooleshow.teacher.bean.VideoCourseListBean;
 import com.cooleshow.usercenter.bean.UserInfo;
@@ -140,6 +142,15 @@ public interface APIService {
     Observable<BaseResponse<TeacherUserInfo>> getTeacherUserInfo();
 
     /**
+     * 查询老师个人风采
+     *
+     * @param
+     * @return
+     */
+    @GET(TEACHER_GROUP + "teacher/queryTeacherStyle")
+    Observable<BaseResponse<TeacherSelfStyleInfoBean>> getTeacherSelfStyle();
+
+    /**
      * 查询我收到的评价
      *
      * @param
@@ -157,4 +168,13 @@ public interface APIService {
      */
     @POST(TEACHER_GROUP + "courseSchedule/queryTeacherPracticeCourse")
     Observable<BaseResponse<CourseCommentListBean>> getCourseCommentList(@Body RequestBody body);
+
+    /**
+     * 查询课后评价
+     *
+     * @param
+     * @return
+     */
+    @POST(TEACHER_GROUP + "music/sheet/list")
+    Observable<BaseResponse<HomePageSheetMusicListBean>> getSheetMusicList(@Body RequestBody body);
 }

+ 200 - 0
teacher/src/main/java/com/cooleshow/teacher/bean/HomePageSheetMusicListBean.java

@@ -0,0 +1,200 @@
+package com.cooleshow.teacher.bean;
+
+import java.util.List;
+
+/**
+ * Author by pq, Date on 2022/5/10.
+ */
+public class HomePageSheetMusicListBean {
+
+    /**
+     * footer : [{"addName":"","addUserAvatar":"","audioFileUrl":"","audioType":"","auditStatus":"","auditVersion":"","canEvaluate":"","chargeType":"","composer":"","createBy":0,"createTime":"","delFlag":true,"favorite":"","hasBeat":"","hotFlag":"","id":0,"metronomeUrl":"","midiUrl":"","mp3Type":"","musicPrice":0,"musicSheetName":"","musicSubject":"","musicTag":"","musicTagNames":"","playSpeed":0,"remark":"","showFingering":"","sortNumber":0,"sourceType":"","state":"","subjectNames":"","submitAuditTime":"","topFlag":"","updateBy":0,"updateTime":"","url":"","userId":0,"xmlFileUrl":""}]
+     * limit : 0
+     * nextPage : 0
+     * offset : 0
+     * pageNo : 0
+     * prePage : 0
+     * rows : [{"addName":"","addUserAvatar":"","audioFileUrl":"","audioType":"","auditStatus":"","auditVersion":"","canEvaluate":"","chargeType":"","composer":"","createBy":0,"createTime":"","delFlag":true,"favorite":"","hasBeat":"","hotFlag":"","id":0,"metronomeUrl":"","midiUrl":"","mp3Type":"","musicPrice":0,"musicSheetName":"","musicSubject":"","musicTag":"","musicTagNames":"","playSpeed":0,"remark":"","showFingering":"","sortNumber":0,"sourceType":"","state":"","subjectNames":"","submitAuditTime":"","topFlag":"","updateBy":0,"updateTime":"","url":"","userId":0,"xmlFileUrl":""}]
+     * statInfo : {}
+     * total : 0
+     * totalPage : 0
+     */
+
+    public int limit;
+    public int nextPage;
+    public int offset;
+    public int pageNo;
+    public int prePage;
+    public StatInfoBean statInfo;
+    public int total;
+    public int totalPage;
+    public List<FooterBean> footer;
+    public List<RowsBean> rows;
+
+    public static class StatInfoBean {
+    }
+
+    public static class FooterBean {
+        /**
+         * addName :
+         * addUserAvatar :
+         * audioFileUrl :
+         * audioType :
+         * auditStatus :
+         * auditVersion :
+         * canEvaluate :
+         * chargeType :
+         * composer :
+         * createBy : 0
+         * createTime :
+         * delFlag : true
+         * favorite :
+         * hasBeat :
+         * hotFlag :
+         * id : 0
+         * metronomeUrl :
+         * midiUrl :
+         * mp3Type :
+         * musicPrice : 0
+         * musicSheetName :
+         * musicSubject :
+         * musicTag :
+         * musicTagNames :
+         * playSpeed : 0
+         * remark :
+         * showFingering :
+         * sortNumber : 0
+         * sourceType :
+         * state :
+         * subjectNames :
+         * submitAuditTime :
+         * topFlag :
+         * updateBy : 0
+         * updateTime :
+         * url :
+         * userId : 0
+         * xmlFileUrl :
+         */
+
+        public String addName;
+        public String addUserAvatar;
+        public String audioFileUrl;
+        public String audioType;
+        public String auditStatus;
+        public String auditVersion;
+        public String canEvaluate;
+        public String chargeType;
+        public String composer;
+        public int createBy;
+        public String createTime;
+        public boolean delFlag;
+        public String favorite;
+        public String hasBeat;
+        public String hotFlag;
+        public int id;
+        public String metronomeUrl;
+        public String midiUrl;
+        public String mp3Type;
+        public int musicPrice;
+        public String musicSheetName;
+        public String musicSubject;
+        public String musicTag;
+        public String musicTagNames;
+        public int playSpeed;
+        public String remark;
+        public String showFingering;
+        public int sortNumber;
+        public String sourceType;
+        public String state;
+        public String subjectNames;
+        public String submitAuditTime;
+        public String topFlag;
+        public int updateBy;
+        public String updateTime;
+        public String url;
+        public int userId;
+        public String xmlFileUrl;
+    }
+
+    public static class RowsBean {
+        /**
+         * addName :
+         * addUserAvatar :
+         * audioFileUrl :
+         * audioType :
+         * auditStatus :
+         * auditVersion :
+         * canEvaluate :
+         * chargeType :
+         * composer :
+         * createBy : 0
+         * createTime :
+         * delFlag : true
+         * favorite :
+         * hasBeat :
+         * hotFlag :
+         * id : 0
+         * metronomeUrl :
+         * midiUrl :
+         * mp3Type :
+         * musicPrice : 0
+         * musicSheetName :
+         * musicSubject :
+         * musicTag :
+         * musicTagNames :
+         * playSpeed : 0
+         * remark :
+         * showFingering :
+         * sortNumber : 0
+         * sourceType :
+         * state :
+         * subjectNames :
+         * submitAuditTime :
+         * topFlag :
+         * updateBy : 0
+         * updateTime :
+         * url :
+         * userId : 0
+         * xmlFileUrl :
+         */
+
+        public String addName;
+        public String addUserAvatar;
+        public String audioFileUrl;
+        public String audioType;
+        public String auditStatus;
+        public String auditVersion;
+        public String canEvaluate;
+        public String chargeType;
+        public String composer;
+        public String createBy;
+        public String createTime;
+        public boolean delFlag;
+        public String favorite;
+        public String hasBeat;
+        public String hotFlag;
+        public int id;
+        public String metronomeUrl;
+        public String midiUrl;
+        public String mp3Type;
+        public int musicPrice;
+        public String musicSheetName;
+        public String musicSubject;
+        public String musicTag;
+        public String musicTagNames;
+        public int playSpeed;
+        public String remark;
+        public String showFingering;
+        public int sortNumber;
+        public String sourceType;
+        public String state;
+        public String subjectNames;
+        public String submitAuditTime;
+        public String topFlag;
+        public int updateBy;
+        public String updateTime;
+        public String url;
+        public int userId;
+        public String xmlFileUrl;
+    }
+}

+ 103 - 0
teacher/src/main/java/com/cooleshow/teacher/bean/TeacherSelfStyleInfoBean.java

@@ -0,0 +1,103 @@
+package com.cooleshow.teacher.bean;
+
+import java.util.List;
+
+/**
+ * Author by pq, Date on 2022/5/10.
+ */
+public class TeacherSelfStyleInfoBean {
+
+    /**
+     * avatar :
+     * birthdate :
+     * createTime :
+     * degreeCertificate :
+     * educationBackground :
+     * entryAuthDate :
+     * entryFlag :
+     * gender :
+     * gradCertificate :
+     * graduateSchool :
+     * idCardNo :
+     * introduction :
+     * isBank :
+     * isReal :
+     * liveDate :
+     * liveFlag :
+     * lockFlag :
+     * memo :
+     * musicianDate :
+     * musicianFlag :
+     * phone :
+     * realName :
+     * styleVideo : [{"auditVersion":"","browse":0,"createTime":"","describe":"","id":0,"updateTime":"","userId":0,"videoUrl":""}]
+     * subject :
+     * subjectId :
+     * subjectName :
+     * teacherCertificate :
+     * teacherType :
+     * technicalTitles :
+     * updateTime :
+     * userId : 0
+     * username :
+     * verifyUser :
+     * workUnit :
+     */
+
+    public String avatar;
+    public String birthdate;
+    public String createTime;
+    public String degreeCertificate;
+    public String educationBackground;
+    public String entryAuthDate;
+    public String entryFlag;
+    public String gender;
+    public String gradCertificate;
+    public String graduateSchool;
+    public String idCardNo;
+    public String introduction;
+    public String isBank;
+    public String isReal;
+    public String liveDate;
+    public String liveFlag;
+    public String lockFlag;
+    public String memo;
+    public String musicianDate;
+    public String musicianFlag;
+    public String phone;
+    public String realName;
+    public String subject;
+    public String subjectId;
+    public String subjectName;
+    public String teacherCertificate;
+    public String teacherType;
+    public String technicalTitles;
+    public String updateTime;
+    public int userId;
+    public String username;
+    public String verifyUser;
+    public String workUnit;
+    public List<StyleVideoBean> styleVideo;
+
+    public static class StyleVideoBean {
+        /**
+         * auditVersion :
+         * browse : 0
+         * createTime :
+         * describe :
+         * id : 0
+         * updateTime :
+         * userId : 0
+         * videoUrl :
+         */
+
+        public String auditVersion;
+        public int browse;
+        public String createTime;
+        public String describe;
+        public int id;
+        public String updateTime;
+        public int userId;
+        public String videoUrl;
+    }
+}

+ 3 - 0
teacher/src/main/java/com/cooleshow/teacher/contract/HomePageContract.java

@@ -1,6 +1,7 @@
 package com.cooleshow.teacher.contract;
 
 import com.cooleshow.base.presenter.view.BaseView;
+import com.cooleshow.teacher.bean.TeacherUserInfo;
 
 /**
  * Author by pq, Date on 2022/4/20.
@@ -8,8 +9,10 @@ import com.cooleshow.base.presenter.view.BaseView;
 public interface HomePageContract {
 
     interface HomePageView extends BaseView {
+        void getTeacherInfoSuccess(TeacherUserInfo info);
     }
 
     interface Presenter {
+        void getTeacherUserInfo();
     }
 }

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

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

+ 3 - 0
teacher/src/main/java/com/cooleshow/teacher/contract/MineStyleContract.java

@@ -1,6 +1,7 @@
 package com.cooleshow.teacher.contract;
 
 import com.cooleshow.base.presenter.view.BaseView;
+import com.cooleshow.teacher.bean.TeacherSelfStyleInfoBean;
 
 /**
  * Author by pq, Date on 2022/4/20.
@@ -8,8 +9,10 @@ import com.cooleshow.base.presenter.view.BaseView;
 public interface MineStyleContract {
 
     interface MineStylePageView extends BaseView {
+        void getSelfStyleSuccess(TeacherSelfStyleInfoBean styleInfoBean);
     }
 
     interface Presenter {
+        void getTeacherSelfStyle();
     }
 }

+ 19 - 0
teacher/src/main/java/com/cooleshow/teacher/contract/SheetMusicPageContract.java

@@ -0,0 +1,19 @@
+package com.cooleshow.teacher.contract;
+
+import com.cooleshow.base.presenter.view.BaseView;
+import com.cooleshow.teacher.bean.HomePageSheetMusicListBean;
+
+/**
+ * Author by pq, Date on 2022/4/20.
+ */
+public interface SheetMusicPageContract {
+
+    interface SheetMusicPageView extends BaseView {
+        void getSheetMusicListSuccess(int page, HomePageSheetMusicListBean sheetMusicListBean);
+
+        void getSheetMusicListError(int page);
+    }
+
+    interface Presenter {
+    }
+}

+ 4 - 3
teacher/src/main/java/com/cooleshow/teacher/presenter/homePage/HomePagePresenter.java

@@ -29,13 +29,14 @@ public class HomePagePresenter extends BasePresenter<HomePageContract.HomePageVi
         });
     }
 
+    @Override
     public void getTeacherUserInfo() {
         addSubscribe(create(APIService.class).getTeacherUserInfo(), new BaseObserver<TeacherUserInfo>(getView()) {
             @Override
             protected void onSuccess(TeacherUserInfo data) {
-//                if (getView() != null) {
-//                    getView().getTeacherInfoSuccess(data);
-//                }
+                if (getView() != null) {
+                    getView().getTeacherInfoSuccess(data);
+                }
             }
         });
     }

+ 42 - 0
teacher/src/main/java/com/cooleshow/teacher/presenter/homePage/LiveCoursePagePresenter.java

@@ -0,0 +1,42 @@
+package com.cooleshow.teacher.presenter.homePage;
+
+import com.cooleshow.base.presenter.BasePresenter;
+import com.cooleshow.base.rx.BaseObserver;
+import com.cooleshow.teacher.api.APIService;
+import com.cooleshow.teacher.bean.TeacherSelfStyleInfoBean;
+import com.cooleshow.teacher.contract.LiveCoursePageContract;
+import com.cooleshow.teacher.contract.MineStyleContract;
+import com.cooleshow.usercenter.bean.UserInfo;
+
+/**
+ * Author by pq, Date on 2022/4/20.
+ */
+public class LiveCoursePagePresenter extends BasePresenter<LiveCoursePageContract.LiveCoursePageView> implements LiveCoursePageContract.Presenter {
+
+    /**
+     * 查询UserInfo
+     *
+     * @param
+     */
+    public void getUserInfo() {
+        addSubscribe(create(APIService.class).getUserInfo(), new BaseObserver<UserInfo>(getView()) {
+            @Override
+            protected void onSuccess(UserInfo data) {
+//                if (getView() != null) {
+//                    getView().getUserInfoSuccess(data);
+//                }
+            }
+        });
+    }
+
+    public void getTeacherSelfStyle() {
+        addSubscribe(create(APIService.class).getTeacherSelfStyle(), new BaseObserver<TeacherSelfStyleInfoBean>(getView()) {
+            @Override
+            protected void onSuccess(TeacherSelfStyleInfoBean data) {
+                if (getView() != null) {
+//                    getView().getSelfStyleSuccess(data);
+                }
+            }
+        });
+    }
+}

+ 8 - 6
teacher/src/main/java/com/cooleshow/teacher/presenter/homePage/MineStylePresenter.java

@@ -3,6 +3,7 @@ package com.cooleshow.teacher.presenter.homePage;
 import com.cooleshow.base.presenter.BasePresenter;
 import com.cooleshow.base.rx.BaseObserver;
 import com.cooleshow.teacher.api.APIService;
+import com.cooleshow.teacher.bean.TeacherSelfStyleInfoBean;
 import com.cooleshow.teacher.bean.TeacherUserInfo;
 import com.cooleshow.teacher.contract.HomePageContract;
 import com.cooleshow.teacher.contract.MineStyleContract;
@@ -29,13 +30,14 @@ public class MineStylePresenter extends BasePresenter<MineStyleContract.MineStyl
         });
     }
 
-    public void getTeacherUserInfo() {
-        addSubscribe(create(APIService.class).getTeacherUserInfo(), new BaseObserver<TeacherUserInfo>(getView()) {
+    @Override
+    public void getTeacherSelfStyle() {
+        addSubscribe(create(APIService.class).getTeacherSelfStyle(), new BaseObserver<TeacherSelfStyleInfoBean>(getView()) {
             @Override
-            protected void onSuccess(TeacherUserInfo data) {
-//                if (getView() != null) {
-//                    getView().getTeacherInfoSuccess(data);
-//                }
+            protected void onSuccess(TeacherSelfStyleInfoBean data) {
+                if (getView() != null) {
+                    getView().getSelfStyleSuccess(data);
+                }
             }
         });
     }

+ 73 - 0
teacher/src/main/java/com/cooleshow/teacher/presenter/homePage/SheetMusicPagePresenter.java

@@ -0,0 +1,73 @@
+package com.cooleshow.teacher.presenter.homePage;
+
+import com.cooleshow.base.constanst.Constants;
+import com.cooleshow.base.presenter.BasePresenter;
+import com.cooleshow.base.rx.BaseObserver;
+import com.cooleshow.base.utils.RequestBodyUtil;
+import com.cooleshow.teacher.api.APIService;
+import com.cooleshow.teacher.bean.HomePageSheetMusicListBean;
+import com.cooleshow.teacher.bean.TeacherSelfStyleInfoBean;
+import com.cooleshow.teacher.contract.LiveCoursePageContract;
+import com.cooleshow.teacher.contract.SheetMusicPageContract;
+import com.cooleshow.usercenter.bean.UserInfo;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+
+/**
+ * Author by pq, Date on 2022/4/20.
+ */
+public class SheetMusicPagePresenter extends BasePresenter<SheetMusicPageContract.SheetMusicPageView> implements SheetMusicPageContract.Presenter {
+    //DOING:待审核;PASS:通过;UNPASS:未通过
+    public static final String SHEET_MUSIC_STATUS_PASS = "PASS";//曲目审核状态PASS
+
+    /**
+     * 查询UserInfo
+     *
+     * @param
+     */
+    public void getUserInfo() {
+        addSubscribe(create(APIService.class).getUserInfo(), new BaseObserver<UserInfo>(getView()) {
+            @Override
+            protected void onSuccess(UserInfo data) {
+//                if (getView() != null) {
+//                    getView().getUserInfoSuccess(data);
+//                }
+            }
+        });
+    }
+
+    /**
+     * 老师个人主页->曲谱列表
+     */
+    public void getSheetMusicList(boolean isShowLoading, int page) {
+        if (isShowLoading && getView() != null) {
+            getView().showLoading();
+        }
+        JSONObject jsonObject = new JSONObject();
+        try {
+            jsonObject.putOpt("auditStatus", SHEET_MUSIC_STATUS_PASS);//0:停用,1:启用
+            jsonObject.putOpt("page", page);
+            jsonObject.putOpt("rows", Constants.DEFAULT_DATA_SIZE);
+        } catch (JSONException e) {
+            e.printStackTrace();
+        }
+
+        addSubscribe(create(APIService.class).getSheetMusicList(RequestBodyUtil.convertToRequestBodyJson(jsonObject.toString())), new BaseObserver<HomePageSheetMusicListBean>(getView()) {
+            @Override
+            protected void onSuccess(HomePageSheetMusicListBean data) {
+                if (getView() != null) {
+                    getView().getSheetMusicListSuccess(page, data);
+                }
+            }
+
+            @Override
+            public void onError(Throwable e) {
+                super.onError(e);
+                if (getView() != null) {
+                    getView().getSheetMusicListError(page);
+                }
+            }
+        });
+    }
+}

+ 81 - 8
teacher/src/main/java/com/cooleshow/teacher/ui/homepage/HomePageActivity.java

@@ -1,25 +1,35 @@
 package com.cooleshow.teacher.ui.homepage;
 
 import android.graphics.Typeface;
+import android.text.TextUtils;
 import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
+import android.view.ViewGroup;
+import android.widget.LinearLayout;
 import android.widget.TextView;
 
 import com.alibaba.android.arouter.facade.annotation.Route;
 import com.common.im.adapter.MessagePagerAdapter;
 import com.cooleshow.base.router.RouterPath;
 import com.cooleshow.base.ui.activity.BaseMVPActivity;
+import com.cooleshow.base.utils.GlideUtils;
 import com.cooleshow.base.utils.LogUtils;
+import com.cooleshow.base.utils.SizeUtils;
+import com.cooleshow.base.utils.UiUtils;
 import com.cooleshow.base.utils.Utils;
 import com.cooleshow.teacher.R;
 import com.cooleshow.teacher.adapter.HomePagerAdapter;
+import com.cooleshow.teacher.bean.TeacherUserInfo;
+import com.cooleshow.teacher.constants.TeacherInfoConstants;
 import com.cooleshow.teacher.contract.HomePageContract;
 import com.cooleshow.teacher.databinding.ActivityHomePageLayoutBinding;
 import com.cooleshow.teacher.presenter.homePage.HomePagePresenter;
 import com.google.android.material.tabs.TabLayout;
 import com.google.android.material.tabs.TabLayoutMediator;
 
+import org.w3c.dom.Text;
+
 import java.util.ArrayList;
 
 import androidx.annotation.NonNull;
@@ -31,11 +41,12 @@ import androidx.fragment.app.Fragment;
  */
 @Route(path = RouterPath.MineCenter.HOME_PAGE)
 public class HomePageActivity extends BaseMVPActivity<ActivityHomePageLayoutBinding, HomePagePresenter> implements HomePageContract.HomePageView, View.OnClickListener {
-    public static final String[] titles = new String[]{"个人风采", "陪练课","直播课","视频课","乐谱"};
+    public static final String[] titles = new String[]{"个人风采", "陪练课", "直播课", "视频课", "乐谱"};
     private ArrayList<Fragment> fragments = new ArrayList<>();
+
     @Override
     protected void initView() {
-        Utils.setHeadView(viewBinding.viewStatusBar,this, 0);
+        Utils.setHeadView(viewBinding.viewStatusBar, this, 0);
         viewBinding.ivBack.setOnClickListener(this);
     }
 
@@ -75,11 +86,11 @@ public class HomePageActivity extends BaseMVPActivity<ActivityHomePageLayoutBind
             public void onTabReselected(TabLayout.Tab tab) {
             }
         });
-        MineStyleFragment mineStyleFragment =new MineStyleFragment();
-        SparringCoursePageFragment sparringCoursePageFragment =new SparringCoursePageFragment();
-        LiveCoursePageFragment liveCoursePageFragment =new LiveCoursePageFragment();
-        VideoCoursePageFragment videoCoursePageFragment =new VideoCoursePageFragment();
-        SheetMusicPageFragment musicPageFragment =new SheetMusicPageFragment();
+        MineStyleFragment mineStyleFragment = new MineStyleFragment();
+        SparringCoursePageFragment sparringCoursePageFragment = new SparringCoursePageFragment();
+        LiveCoursePageFragment liveCoursePageFragment = new LiveCoursePageFragment();
+        VideoCoursePageFragment videoCoursePageFragment = new VideoCoursePageFragment();
+        SheetMusicPageFragment musicPageFragment = new SheetMusicPageFragment();
         fragments.add(mineStyleFragment);
         fragments.add(sparringCoursePageFragment);
         fragments.add(liveCoursePageFragment);
@@ -102,6 +113,12 @@ public class HomePageActivity extends BaseMVPActivity<ActivityHomePageLayoutBind
     }
 
     @Override
+    protected void onResume() {
+        super.onResume();
+        presenter.getTeacherUserInfo();
+    }
+
+    @Override
     public void onClick(View v) {
         int id = v.getId();
         if (id == R.id.iv_back) {
@@ -112,11 +129,67 @@ public class HomePageActivity extends BaseMVPActivity<ActivityHomePageLayoutBind
 
     private TabLayout.Tab createTab(TabLayout.Tab tab, String text) {
         tab.setCustomView(R.layout.view_homepage_tab_layout);
-        View customView =tab.getCustomView();
+        View customView = tab.getCustomView();
         if (customView != null) {
             TextView tv_text = customView.findViewById(R.id.tv_text);
             tv_text.setText(text);
         }
         return tab;
     }
+
+    /**
+     * 获取老师信息成功
+     *
+     * @param info
+     */
+    @Override
+    public void getTeacherInfoSuccess(TeacherUserInfo info) {
+        if (isFinishing() || isDestroyed()) {
+            return;
+        }
+        //星级
+        viewBinding.ratingBar.setRating(info.starGrade);
+        //粉丝数
+        viewBinding.tvFansNum.setText(info.fansNum);
+        //已上课时数
+        viewBinding.tvCourseNumCompleted.setText(info.expTime);
+        //头像
+        GlideUtils.INSTANCE.loadImage(this, info.heardUrl, viewBinding.ivAvatar, R.drawable.icon_teacher_default_head);
+        //昵称
+        viewBinding.tvNickname.setText(info.username);
+        if (TextUtils.equals(info.entryStatus, TeacherInfoConstants.ENTRY_STATUS_PASS)) {
+            //入驻审核通过
+            viewBinding.ivTeacherEntryTag.setVisibility(View.VISIBLE);
+        } else {
+            //未通过或者未申请
+            viewBinding.ivTeacherEntryTag.setVisibility(View.GONE);
+        }
+
+        //音乐人认证状态
+        if (TextUtils.equals(info.musicianAuthStatus, TeacherInfoConstants.MUSICIAN_STATUS_PASS)) {
+            viewBinding.ivTeacherMusicPersonTag.setVisibility(View.VISIBLE);
+        } else {
+            viewBinding.ivTeacherMusicPersonTag.setVisibility(View.GONE);
+        }
+        //subjectName
+        try {
+            viewBinding.llSubjectContainer.removeAllViews();
+            String[] subjectNames = UiUtils.splitSubjectName(info.subjectName);
+            for (int i = 0; i < subjectNames.length; i++) {
+                createSubjectView(subjectNames[i]);
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    private void createSubjectView(String text) {
+        TextView textView = (TextView) LayoutInflater.from(this).inflate(com.cooleshow.base.R.layout.view_subject_item_layout, viewBinding.llSubjectContainer, false);
+        textView.setText(text);
+        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
+        if (viewBinding.llSubjectContainer.getChildCount() >= 1) {
+            params.setMargins(SizeUtils.dp2px(4), 0, 0, 0);
+        }
+        viewBinding.llSubjectContainer.addView(textView, params);
+    }
 }

+ 5 - 3
teacher/src/main/java/com/cooleshow/teacher/ui/homepage/LiveCoursePageFragment.java

@@ -3,15 +3,17 @@ package com.cooleshow.teacher.ui.homepage;
 import android.view.View;
 
 import com.cooleshow.base.ui.fragment.BaseMVPFragment;
+import com.cooleshow.teacher.contract.LiveCoursePageContract;
 import com.cooleshow.teacher.contract.MineStyleContract;
 import com.cooleshow.teacher.databinding.FragmentLiveCoursePageLayoutBinding;
 import com.cooleshow.teacher.databinding.FragmentSparringCoursePageLayoutBinding;
+import com.cooleshow.teacher.presenter.homePage.LiveCoursePagePresenter;
 import com.cooleshow.teacher.presenter.homePage.MineStylePresenter;
 
 /**
  * Author by pq, Date on 2022/5/9.
  */
-public class LiveCoursePageFragment extends BaseMVPFragment<FragmentLiveCoursePageLayoutBinding, MineStylePresenter> implements MineStyleContract.MineStylePageView {
+public class LiveCoursePageFragment extends BaseMVPFragment<FragmentLiveCoursePageLayoutBinding, LiveCoursePagePresenter> implements LiveCoursePageContract.LiveCoursePageView {
 
     @Override
     protected void initView(View rootView) {
@@ -29,8 +31,8 @@ public class LiveCoursePageFragment extends BaseMVPFragment<FragmentLiveCoursePa
     }
 
     @Override
-    protected MineStylePresenter createPresenter() {
-        return new MineStylePresenter();
+    protected LiveCoursePagePresenter createPresenter() {
+        return new LiveCoursePagePresenter();
     }
 
 }

+ 41 - 2
teacher/src/main/java/com/cooleshow/teacher/ui/homepage/MineStyleFragment.java

@@ -3,23 +3,46 @@ package com.cooleshow.teacher.ui.homepage;
 import android.view.View;
 
 import com.cooleshow.base.ui.fragment.BaseMVPFragment;
+import com.cooleshow.base.utils.SizeUtils;
+import com.cooleshow.teacher.R;
+import com.cooleshow.teacher.adapter.MineStyleFansGroupListAdapter;
+import com.cooleshow.teacher.adapter.MineStyleVideoListAdapter;
+import com.cooleshow.teacher.bean.TeacherSelfStyleInfoBean;
 import com.cooleshow.teacher.contract.MineStyleContract;
 import com.cooleshow.teacher.databinding.FragmentMineStyleLayoutBinding;
 import com.cooleshow.teacher.presenter.homePage.MineStylePresenter;
+import com.cooleshow.teacher.widgets.MineStyleVideoListItemDecoration;
+
+import androidx.recyclerview.widget.GridLayoutManager;
+import androidx.recyclerview.widget.LinearLayoutManager;
 
 /**
  * Author by pq, Date on 2022/5/9.
  */
 public class MineStyleFragment extends BaseMVPFragment<FragmentMineStyleLayoutBinding, MineStylePresenter> implements MineStyleContract.MineStylePageView {
 
+    private MineStyleFansGroupListAdapter mFansGroupListAdapter;
+    private MineStyleVideoListAdapter mStyleVideoListAdapter;
+
     @Override
     protected void initView(View rootView) {
-
+        mViewBinding.recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
+        mStyleVideoListAdapter = new MineStyleVideoListAdapter(R.layout.item_mine_style_video_layout);
+        MineStyleVideoListItemDecoration itemDecoration = new MineStyleVideoListItemDecoration(SizeUtils.dp2px(11), 0, 0, 0, SizeUtils.dp2px(5));
+        GridLayoutManager gridLayoutManager =new GridLayoutManager(getContext(),2);
+        mViewBinding.recyclerView.setLayoutManager(gridLayoutManager);
+        mViewBinding.recyclerView.addItemDecoration(itemDecoration);
+        mViewBinding.recyclerView.setAdapter(mStyleVideoListAdapter);
+        mFansGroupListAdapter = new MineStyleFansGroupListAdapter(R.layout.item_mine_style_fans_group_layout);
+        mViewBinding.recyclerViewFans.setLayoutManager(new LinearLayoutManager(getContext()));
+        mViewBinding.recyclerViewFans.setAdapter(mFansGroupListAdapter);
+        mViewBinding.recyclerView.setNestedScrollingEnabled(false);
+        mViewBinding.recyclerViewFans.setNestedScrollingEnabled(false);
     }
 
     @Override
     protected void initData() {
-
+        presenter.getTeacherSelfStyle();
     }
 
     @Override
@@ -32,4 +55,20 @@ public class MineStyleFragment extends BaseMVPFragment<FragmentMineStyleLayoutBi
         return new MineStylePresenter();
     }
 
+    @Override
+    public void getSelfStyleSuccess(TeacherSelfStyleInfoBean styleInfoBean) {
+        if (isDetached()) {
+            return;
+        }
+        if (styleInfoBean == null) {
+            return;
+        }
+        //个人介绍
+        mViewBinding.tvSelfIntroduction.setText(styleInfoBean.introduction);
+        //视频信息
+        if (mStyleVideoListAdapter != null) {
+            mStyleVideoListAdapter.setNewInstance(styleInfoBean.styleVideo);
+        }
+
+    }
 }

+ 113 - 3
teacher/src/main/java/com/cooleshow/teacher/ui/homepage/SheetMusicPageFragment.java

@@ -2,16 +2,35 @@ package com.cooleshow.teacher.ui.homepage;
 
 import android.view.View;
 
+import com.chad.library.adapter.base.listener.OnLoadMoreListener;
+import com.cooleshow.base.constanst.Constants;
 import com.cooleshow.base.ui.fragment.BaseMVPFragment;
+import com.cooleshow.base.widgets.EmptyViewLayout;
+import com.cooleshow.teacher.R;
+import com.cooleshow.teacher.adapter.HomePageSheetMusicAdapter;
+import com.cooleshow.teacher.bean.HomePageSheetMusicListBean;
 import com.cooleshow.teacher.contract.MineStyleContract;
+import com.cooleshow.teacher.contract.SheetMusicPageContract;
 import com.cooleshow.teacher.databinding.FragmentSheetMusicPageLayoutBinding;
 import com.cooleshow.teacher.databinding.FragmentVideoCoursePageLayoutBinding;
 import com.cooleshow.teacher.presenter.homePage.MineStylePresenter;
+import com.cooleshow.teacher.presenter.homePage.SheetMusicPagePresenter;
+import com.scwang.smart.refresh.layout.api.RefreshLayout;
+import com.scwang.smart.refresh.layout.listener.OnRefreshListener;
+
+import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.LinearLayoutManager;
 
 /**
  * Author by pq, Date on 2022/5/9.
+ * 老师个人主页->曲谱列表
  */
-public class SheetMusicPageFragment extends BaseMVPFragment<FragmentSheetMusicPageLayoutBinding, MineStylePresenter> implements MineStyleContract.MineStylePageView {
+public class SheetMusicPageFragment extends BaseMVPFragment<FragmentSheetMusicPageLayoutBinding, SheetMusicPagePresenter> implements SheetMusicPageContract.SheetMusicPageView {
+
+    private HomePageSheetMusicAdapter mAdapter;
+    private int currentPage = 1;
+    private boolean hasNext = true;
+    private EmptyViewLayout mEmptyView;
 
     @Override
     protected void initView(View rootView) {
@@ -20,7 +39,36 @@ public class SheetMusicPageFragment extends BaseMVPFragment<FragmentSheetMusicPa
 
     @Override
     protected void initData() {
+        mAdapter = new HomePageSheetMusicAdapter(R.layout.item_home_page_sheet_music_layout);
+        mViewBinding.refreshLayout.setOnRefreshListener(new OnRefreshListener() {
+            @Override
+            public void onRefresh(@NonNull RefreshLayout refreshLayout) {
+                currentPage = 1;
+                queryList(true);
+            }
+        });
+
+        mAdapter.getLoadMoreModule().setOnLoadMoreListener(new OnLoadMoreListener() {
+            @Override
+            public void onLoadMore() {
+                //上拉加载
+                if (hasNext) {
+                    currentPage++;
+                    queryList(false);
+                } else {
+                    mAdapter.getLoadMoreModule().loadMoreEnd();
+                }
+            }
 
+
+        });
+        mViewBinding.recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
+        mViewBinding.recyclerView.setAdapter(mAdapter);
+        presenter.getSheetMusicList(true, currentPage);
+    }
+
+    private void queryList(boolean isShowLoading) {
+        presenter.getSheetMusicList(isShowLoading, currentPage);
     }
 
     @Override
@@ -29,8 +77,70 @@ public class SheetMusicPageFragment extends BaseMVPFragment<FragmentSheetMusicPa
     }
 
     @Override
-    protected MineStylePresenter createPresenter() {
-        return new MineStylePresenter();
+    protected SheetMusicPagePresenter createPresenter() {
+        return new SheetMusicPagePresenter();
+    }
+
+    @Override
+    public void getSheetMusicListSuccess(int page, HomePageSheetMusicListBean sheetMusicListBean) {
+        if (isDetached()) {
+            return;
+        }
+        if (sheetMusicListBean != null) {
+            if (page == 1) {
+                //第一页
+                mViewBinding.refreshLayout.finishRefresh();
+                if (mAdapter != null) {
+                    mAdapter.getData().clear();
+                    mAdapter.notifyDataSetChanged();
+                    if (sheetMusicListBean.rows != null && sheetMusicListBean.rows.size() > 0) {
+                        checkHasNext(sheetMusicListBean.rows.size());
+                        mAdapter.setNewInstance(sheetMusicListBean.rows);
+                    } else {
+                        showEmptyView();
+                    }
+                }
+            } else {
+                //加载更多
+                if (mAdapter != null) {
+                    if (sheetMusicListBean.rows != null && sheetMusicListBean.rows.size() > 0) {
+                        mAdapter.getLoadMoreModule().loadMoreComplete();
+                        checkHasNext(sheetMusicListBean.rows.size());
+                        mAdapter.addData(sheetMusicListBean.rows);
+                    } else {
+                        mAdapter.getLoadMoreModule().loadMoreEnd();
+                    }
+                }
+            }
+        }
     }
 
+    private void showEmptyView() {
+        if (mEmptyView == null) {
+            mEmptyView = new EmptyViewLayout(getContext());
+        }
+        mEmptyView.setContent(com.cooleshow.base.R.drawable.icon_empty_content, "暂无曲谱~");
+        mAdapter.setEmptyView(mEmptyView);
+    }
+
+
+    private void checkHasNext(int dataSize) {
+        hasNext = dataSize >= Constants.DEFAULT_DATA_SIZE;
+    }
+
+
+    @Override
+    public void getSheetMusicListError(int page) {
+        if (isDetached()) {
+            return;
+        }
+        if (page == 1) {
+            mViewBinding.refreshLayout.finishRefresh();
+        } else {
+            if (mAdapter != null) {
+                currentPage--;
+                mAdapter.getLoadMoreModule().loadMoreFail();
+            }
+        }
+    }
 }

+ 1 - 1
teacher/src/main/java/com/cooleshow/teacher/ui/homepage/SparringCoursePageFragment.java

@@ -11,7 +11,7 @@ import com.cooleshow.teacher.presenter.homePage.MineStylePresenter;
 /**
  * Author by pq, Date on 2022/5/9.
  */
-public class SparringCoursePageFragment extends BaseMVPFragment<FragmentSparringCoursePageLayoutBinding, MineStylePresenter> implements MineStyleContract.MineStylePageView {
+public class SparringCoursePageFragment extends BaseMVPFragment<FragmentSparringCoursePageLayoutBinding, MineStylePresenter>  {
 
     @Override
     protected void initView(View rootView) {

+ 1 - 1
teacher/src/main/java/com/cooleshow/teacher/ui/homepage/VideoCoursePageFragment.java

@@ -11,7 +11,7 @@ import com.cooleshow.teacher.presenter.homePage.MineStylePresenter;
 /**
  * Author by pq, Date on 2022/5/9.
  */
-public class VideoCoursePageFragment extends BaseMVPFragment<FragmentVideoCoursePageLayoutBinding, MineStylePresenter> implements MineStyleContract.MineStylePageView {
+public class VideoCoursePageFragment extends BaseMVPFragment<FragmentVideoCoursePageLayoutBinding, MineStylePresenter> {
 
     @Override
     protected void initView(View rootView) {

+ 41 - 0
teacher/src/main/java/com/cooleshow/teacher/widgets/MineStyleVideoListItemDecoration.java

@@ -0,0 +1,41 @@
+package com.cooleshow.teacher.widgets;
+
+import android.graphics.Rect;
+import android.view.View;
+
+import androidx.recyclerview.widget.RecyclerView;
+
+/**
+ * Author by pq, Date on 2021/3/18 0018.
+ */
+public class MineStyleVideoListItemDecoration extends RecyclerView.ItemDecoration {
+
+    private int top;
+    private int left;
+    private int bottom;
+    private int right;
+    private int center;
+
+    public MineStyleVideoListItemDecoration(int top, int left, int bottom, int right, int center) {
+        this.top = top;
+        this.left = left;
+        this.bottom = bottom;
+        this.right = right;
+        this.center = center;
+    }
+
+    @Override
+    public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
+        //每行都只有2个
+        int childLayoutPosition = parent.getChildLayoutPosition(view);
+        outRect.top = top;
+        outRect.bottom = bottom;
+        if (childLayoutPosition % 2 == 0) {
+            outRect.right = center;
+            outRect.left = left;
+        } else {
+            outRect.left = center;
+            outRect.right = right;
+        }
+    }
+}

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


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


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


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


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


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


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


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


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


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


+ 3 - 4
teacher/src/main/res/layout/activity_home_page_layout.xml

@@ -62,7 +62,6 @@
         android:layout_marginTop="6dp"
         android:layout_marginBottom="10dp"
         android:includeFontPadding="false"
-        android:text="游客12e32td"
         android:textColor="@color/color_1a1a1a"
         android:textSize="@dimen/sp_18"
         app:layout_constraintLeft_toRightOf="@+id/iv_avatar"
@@ -108,7 +107,7 @@
         android:layout_height="19dp"
         android:layout_marginTop="20dp"
         android:numStars="5"
-        android:rating="3"
+        android:rating="0"
         android:stepSize="1"
         app:layout_constraintLeft_toLeftOf="@+id/iv_avatar"
         app:layout_constraintTop_toBottomOf="@+id/iv_avatar" />
@@ -194,12 +193,12 @@
     </LinearLayout>
 
     <com.google.android.material.tabs.TabLayout
-        android:layout_marginStart="14dp"
-        android:layout_marginEnd="14dp"
         android:id="@+id/tab_layout"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
+        android:layout_marginStart="14dp"
         android:layout_marginTop="15dp"
+        android:layout_marginEnd="14dp"
         app:layout_constraintLeft_toLeftOf="parent"
         app:layout_constraintTop_toBottomOf="@+id/view_top_bg"
         app:tabBackground="@color/transparent"

+ 173 - 3
teacher/src/main/res/layout/fragment_mine_style_layout.xml

@@ -1,6 +1,176 @@
 <?xml version="1.0" encoding="utf-8"?>
-<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<androidx.core.widget.NestedScrollView 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:paddingTop="14dp"
     android:layout_width="match_parent"
-    android:layout_height="match_parent">
+    android:layout_height="match_parent"
+    android:overScrollMode="never"
+    android:scrollbars="none">
 
-</androidx.constraintlayout.widget.ConstraintLayout>
+    <androidx.constraintlayout.widget.ConstraintLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:paddingBottom="14dp"
+        android:paddingStart="14dp"
+        android:paddingEnd="14dp">
+
+        <View
+            android:id="@+id/view_top_bg"
+            android:layout_width="match_parent"
+            android:layout_height="0dp"
+            android:background="@drawable/bg_white_10dp"
+            app:layout_constraintBottom_toBottomOf="@+id/tv_self_introduction"
+            app:layout_constraintLeft_toLeftOf="parent"
+            app:layout_constraintRight_toRightOf="parent"
+            app:layout_constraintTop_toTopOf="parent" />
+
+        <ImageView
+            android:id="@+id/iv_self_introduction"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginStart="12dp"
+            android:layout_marginTop="16dp"
+            android:src="@drawable/icon_self_introduction"
+            app:layout_constraintLeft_toLeftOf="@+id/view_top_bg"
+            app:layout_constraintTop_toTopOf="@+id/view_top_bg" />
+
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:includeFontPadding="false"
+            android:paddingStart="2dp"
+            android:text="@string/self_introduction_str"
+            android:textColor="@color/color_333333"
+            android:textSize="@dimen/sp_16"
+            android:textStyle="bold"
+            app:layout_constraintBottom_toBottomOf="@+id/iv_self_introduction"
+            app:layout_constraintLeft_toRightOf="@+id/iv_self_introduction"
+            app:layout_constraintTop_toTopOf="@+id/iv_self_introduction" />
+
+        <TextView
+            android:id="@+id/tv_self_introduction"
+            android:layout_width="0dp"
+            android:layout_height="wrap_content"
+            android:paddingStart="12dp"
+            android:paddingTop="20dp"
+            android:paddingEnd="12dp"
+            android:paddingBottom="20dp"
+            android:textColor="@color/color_666666"
+            android:textSize="@dimen/sp_13"
+            app:layout_constraintLeft_toLeftOf="@+id/view_top_bg"
+            app:layout_constraintRight_toRightOf="@+id/view_top_bg"
+            app:layout_constraintTop_toBottomOf="@+id/iv_self_introduction"
+            tools:text="毕业于中央音乐学员长笛专业,师从央音长笛系曾获2016年锦绣杯长笛大赛冠军自2018年起研究长笛启蒙、考级到专业考试教育总结出一套适合各个阶段需要的教学方式" />
+
+        <View
+            android:id="@+id/view_video_bg"
+            android:layout_width="match_parent"
+            android:layout_height="0dp"
+            android:layout_marginTop="12dp"
+            android:background="@drawable/bg_white_10dp"
+            app:layout_constraintBottom_toBottomOf="@+id/view_video_bottom_line"
+            app:layout_constraintLeft_toLeftOf="parent"
+            app:layout_constraintRight_toRightOf="parent"
+            app:layout_constraintTop_toBottomOf="@+id/view_top_bg" />
+
+        <ImageView
+            android:id="@+id/iv_teacher_style"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginStart="12dp"
+            android:layout_marginTop="16dp"
+            android:src="@drawable/icon_teacher_style"
+            app:layout_constraintLeft_toLeftOf="@+id/view_video_bg"
+            app:layout_constraintTop_toTopOf="@+id/view_video_bg" />
+
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:includeFontPadding="false"
+            android:paddingStart="2dp"
+            android:text="老师风采"
+            android:textColor="@color/color_333333"
+            android:textSize="@dimen/sp_16"
+            android:textStyle="bold"
+            app:layout_constraintBottom_toBottomOf="@+id/iv_teacher_style"
+            app:layout_constraintLeft_toRightOf="@+id/iv_teacher_style"
+            app:layout_constraintTop_toTopOf="@+id/iv_teacher_style" />
+
+        <androidx.recyclerview.widget.RecyclerView
+            android:layout_marginStart="11dp"
+            android:layout_marginEnd="11dp"
+            android:id="@+id/recyclerView"
+            android:layout_width="0dp"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="6dp"
+            android:overScrollMode="never"
+            android:scrollbars="none"
+            app:layout_constraintLeft_toLeftOf="@+id/view_video_bg"
+            app:layout_constraintRight_toRightOf="@+id/view_video_bg"
+            app:layout_constraintTop_toBottomOf="@+id/iv_teacher_style" />
+
+        <View
+            android:id="@+id/view_video_bottom_line"
+            android:layout_width="1px"
+            android:layout_height="1px"
+            android:layout_marginTop="19dp"
+            app:layout_constraintLeft_toLeftOf="@+id/recyclerView"
+            app:layout_constraintTop_toBottomOf="@+id/recyclerView" />
+
+
+        <View
+            android:id="@+id/view_fans_group_bg"
+            android:layout_width="match_parent"
+            android:layout_height="0dp"
+            android:layout_marginTop="12dp"
+            android:background="@drawable/bg_white_10dp"
+            app:layout_constraintBottom_toBottomOf="@+id/view_fans_group_bottom_line"
+            app:layout_constraintLeft_toLeftOf="parent"
+            app:layout_constraintRight_toRightOf="parent"
+            app:layout_constraintTop_toBottomOf="@+id/view_video_bg" />
+
+        <ImageView
+            android:id="@+id/iv_fans_group"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginStart="12dp"
+            android:layout_marginTop="16dp"
+            android:src="@drawable/icon_fans_group"
+            app:layout_constraintLeft_toLeftOf="@+id/view_fans_group_bg"
+            app:layout_constraintTop_toTopOf="@+id/view_fans_group_bg" />
+
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:includeFontPadding="false"
+            android:paddingStart="2dp"
+            android:text="粉丝群"
+            android:textColor="@color/color_333333"
+            android:textSize="@dimen/sp_16"
+            android:textStyle="bold"
+            app:layout_constraintBottom_toBottomOf="@+id/iv_fans_group"
+            app:layout_constraintLeft_toRightOf="@+id/iv_fans_group"
+            app:layout_constraintTop_toTopOf="@+id/iv_fans_group" />
+
+        <androidx.recyclerview.widget.RecyclerView
+            android:id="@+id/recyclerView_fans"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:overScrollMode="never"
+            android:scrollbars="none"
+            app:layout_constraintLeft_toLeftOf="@+id/view_fans_group_bg"
+            app:layout_constraintRight_toRightOf="@+id/view_fans_group_bg"
+            app:layout_constraintTop_toBottomOf="@+id/iv_fans_group" />
+
+        <View
+            android:id="@+id/view_fans_group_bottom_line"
+            android:layout_width="1px"
+            android:layout_height="1px"
+            android:layout_marginTop="20dp"
+            app:layout_constraintLeft_toLeftOf="@+id/recyclerView_fans"
+            app:layout_constraintTop_toBottomOf="@+id/recyclerView_fans" />
+
+
+    </androidx.constraintlayout.widget.ConstraintLayout>
+</androidx.core.widget.NestedScrollView>

+ 54 - 7
teacher/src/main/res/layout/fragment_sheet_music_page_layout.xml

@@ -1,14 +1,61 @@
 <?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="match_parent"
-    xmlns:app="http://schemas.android.com/apk/res-auto">
-    <TextView
-        app:layout_constraintRight_toRightOf="parent"
+    android:paddingStart="14dp"
+    android:paddingTop="14dp"
+    android:paddingEnd="14dp">
+
+    <View
+        android:id="@+id/view_upload_bg"
+        android:layout_width="match_parent"
+        android:layout_height="40dp"
+        android:background="@drawable/bg_white_10dp_border_e5e5e5"
         app:layout_constraintLeft_toLeftOf="parent"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintTop_toTopOf="parent"
-        android:text="乐谱"
+        app:layout_constraintRight_toRightOf="parent"
+        app:layout_constraintTop_toTopOf="parent" />
+
+    <TextView
+        android:id="@+id/tv_upload_sheet_music"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:drawableRight="@drawable/icon_arrow_right"
+        android:drawablePadding="6dp"
+        android:text="上传乐谱"
+        android:textColor="@color/color_333333"
+        android:textSize="@dimen/sp_15"
+        app:layout_constraintBottom_toBottomOf="@+id/view_upload_bg"
+        app:layout_constraintLeft_toLeftOf="@+id/view_upload_bg"
+        app:layout_constraintRight_toRightOf="@+id/view_upload_bg"
+        app:layout_constraintTop_toTopOf="@+id/view_upload_bg" />
+
+    <ImageView
         android:layout_width="wrap_content"
-        android:layout_height="wrap_content"/>
+        android:layout_height="wrap_content"
+        android:layout_marginEnd="2dp"
+        android:src="@drawable/icon_upload_sheet_music"
+        app:layout_constraintBottom_toBottomOf="@+id/tv_upload_sheet_music"
+        app:layout_constraintRight_toLeftOf="@+id/tv_upload_sheet_music"
+        app:layout_constraintTop_toTopOf="@+id/tv_upload_sheet_music" />
+
+    <com.scwang.smart.refresh.layout.SmartRefreshLayout
+        android:id="@+id/refreshLayout"
+        android:layout_width="match_parent"
+        android:layout_height="0dp"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintTop_toBottomOf="@+id/view_upload_bg" >
+
+        <com.scwang.smart.refresh.header.ClassicsHeader
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content" />
+
+        <androidx.recyclerview.widget.RecyclerView
+            android:id="@+id/recyclerView"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:overScrollMode="never"
+            android:scrollbars="none"
+            />
+    </com.scwang.smart.refresh.layout.SmartRefreshLayout>
 </androidx.constraintlayout.widget.ConstraintLayout>

+ 99 - 0
teacher/src/main/res/layout/item_home_page_sheet_music_layout.xml

@@ -0,0 +1,99 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:layout_marginTop="12dp"
+    android:background="@drawable/bg_white_10dp"
+    android:paddingStart="11dp"
+    android:paddingEnd="11dp"
+    android:paddingBottom="10dp">
+
+    <ImageView
+        android:id="@+id/iv_img"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="10dp"
+        android:src="@drawable/icon_sheet_music_img"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintTop_toTopOf="parent" />
+
+    <TextView
+        android:id="@+id/tv_title"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginStart="14dp"
+        android:includeFontPadding="false"
+        android:textColor="@color/color_333333"
+        android:textSize="@dimen/sp_14"
+        android:textStyle="bold"
+        app:layout_constraintBottom_toTopOf="@+id/tv_author"
+        app:layout_constraintLeft_toRightOf="@+id/iv_img"
+        app:layout_constraintTop_toTopOf="@+id/iv_img"
+        app:layout_constraintVertical_chainStyle="packed"
+        tools:text="Exodus(出埃及记)" />
+
+    <TextView
+        android:id="@+id/tv_author"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:includeFontPadding="false"
+        android:textColor="@color/color_6a6a6a"
+        android:textSize="@dimen/sp_12"
+        app:layout_constraintBottom_toBottomOf="@+id/iv_img"
+        app:layout_constraintLeft_toLeftOf="@+id/tv_title"
+        app:layout_constraintTop_toBottomOf="@+id/tv_title"
+        tools:text="沃伊切赫·基拉尔" />
+
+    <View
+        android:id="@+id/view_line"
+        android:layout_width="match_parent"
+        android:layout_height="1dp"
+        android:layout_marginTop="10dp"
+        android:background="@color/color_f2f2f2"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintRight_toRightOf="parent"
+        app:layout_constraintTop_toBottomOf="@+id/iv_img" />
+
+    <ImageView
+        android:id="@+id/iv_enter"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:src="@drawable/icon_music_order"
+        app:layout_constraintBottom_toTopOf="@+id/view_line"
+        app:layout_constraintRight_toRightOf="parent"
+        app:layout_constraintTop_toTopOf="parent" />
+
+    <de.hdodenhof.circleimageview.CircleImageView
+        android:id="@+id/cir_avatar"
+        android:layout_width="20dp"
+        android:layout_height="20dp"
+        android:layout_marginStart="9dp"
+        android:layout_marginTop="8dp"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintTop_toBottomOf="@+id/view_line" />
+
+    <TextView
+        android:id="@+id/tv_nickname"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:includeFontPadding="false"
+        android:paddingStart="6dp"
+        android:textColor="@color/color_333333"
+        android:textSize="@dimen/sp_12"
+        app:layout_constraintBottom_toBottomOf="@+id/cir_avatar"
+        app:layout_constraintLeft_toRightOf="@+id/cir_avatar"
+        app:layout_constraintTop_toTopOf="@+id/cir_avatar"
+        tools:text="李崴星" />
+
+    <LinearLayout
+        android:id="@+id/ll_subject_container"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:orientation="horizontal"
+        android:paddingStart="8dp"
+        app:layout_constraintBottom_toBottomOf="@+id/cir_avatar"
+        app:layout_constraintLeft_toRightOf="@+id/tv_nickname"
+        app:layout_constraintTop_toTopOf="@+id/cir_avatar" />
+</androidx.constraintlayout.widget.ConstraintLayout>

+ 6 - 0
teacher/src/main/res/layout/item_mine_style_fans_group_layout.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content">
+
+</androidx.constraintlayout.widget.ConstraintLayout>

+ 17 - 0
teacher/src/main/res/layout/item_mine_style_video_layout.xml

@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<FrameLayout 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">
+
+    <com.cooleshow.base.widgets.QMUIRadiusImageView
+        android:id="@+id/iv_video_bg"
+        android:layout_width="match_parent"
+        android:layout_height="106dp"
+        app:qmui_corner_radius="10dp" />
+    <ImageView
+        android:layout_gravity="center"
+        android:src="@drawable/icon_play_video"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"/>
+</FrameLayout>

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

@@ -19,4 +19,5 @@
     <string name="mine_page_str">我的主页</string>
     <string name="un_cert_str">未认证</string>
     <string name="cert_completed_str">已认证</string>
+    <string name="self_introduction_str">个人介绍</string>
 </resources>