Pārlūkot izejas kodu

添加老师端我的主页模块

Pq 3 gadi atpakaļ
vecāks
revīzija
a01cffb9ad
25 mainītis faili ar 789 papildinājumiem un 7 dzēšanām
  1. 6 1
      BaseLibrary/src/main/java/com/cooleshow/base/router/RouterPath.kt
  2. 1 0
      BaseLibrary/src/main/res/values/colors.xml
  3. 8 4
      teacher/src/main/AndroidManifest.xml
  4. 39 0
      teacher/src/main/java/com/cooleshow/teacher/adapter/HomePagerAdapter.java
  5. 15 0
      teacher/src/main/java/com/cooleshow/teacher/contract/HomePageContract.java
  6. 15 0
      teacher/src/main/java/com/cooleshow/teacher/contract/MineStyleContract.java
  7. 42 0
      teacher/src/main/java/com/cooleshow/teacher/presenter/homePage/HomePagePresenter.java
  8. 42 0
      teacher/src/main/java/com/cooleshow/teacher/presenter/homePage/MineStylePresenter.java
  9. 122 0
      teacher/src/main/java/com/cooleshow/teacher/ui/homepage/HomePageActivity.java
  10. 36 0
      teacher/src/main/java/com/cooleshow/teacher/ui/homepage/LiveCoursePageFragment.java
  11. 35 0
      teacher/src/main/java/com/cooleshow/teacher/ui/homepage/MineStyleFragment.java
  12. 36 0
      teacher/src/main/java/com/cooleshow/teacher/ui/homepage/SheetMusicPageFragment.java
  13. 36 0
      teacher/src/main/java/com/cooleshow/teacher/ui/homepage/SparringCoursePageFragment.java
  14. 36 0
      teacher/src/main/java/com/cooleshow/teacher/ui/homepage/VideoCoursePageFragment.java
  15. 7 2
      teacher/src/main/java/com/cooleshow/teacher/ui/main/MineFragment.java
  16. BIN
      teacher/src/main/res/drawable-xhdpi/bg_home_page_header.png
  17. BIN
      teacher/src/main/res/drawable-xxhdpi/bg_home_page_header.png
  18. 8 0
      teacher/src/main/res/drawable/shape_home_page_header_bg.xml
  19. 228 0
      teacher/src/main/res/layout/activity_home_page_layout.xml
  20. 14 0
      teacher/src/main/res/layout/fragment_live_course_page_layout.xml
  21. 6 0
      teacher/src/main/res/layout/fragment_mine_style_layout.xml
  22. 14 0
      teacher/src/main/res/layout/fragment_sheet_music_page_layout.xml
  23. 14 0
      teacher/src/main/res/layout/fragment_sparring_course_page_layout.xml
  24. 14 0
      teacher/src/main/res/layout/fragment_video_course_page_layout.xml
  25. 15 0
      teacher/src/main/res/layout/view_homepage_tab_layout.xml

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

@@ -54,5 +54,10 @@ object RouterPath {
         }
     }
 
-
+    //个人信息模块
+    class MineCenter {
+        companion object {
+            const val HOME_PAGE = "/teacher/ui/homepage/HomePageActivity"
+        }
+    }
 }

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

@@ -57,4 +57,5 @@
     <color name="color_f85043">#F85043</color>
     <color name="color_f7f8f9">#F7F8F9</color>
     <color name="color_1ecdac">#1ECDAC</color>
+    <color name="color_a6ffffff">#A6ffffff</color>
 </resources>

+ 8 - 4
teacher/src/main/AndroidManifest.xml

@@ -40,20 +40,24 @@
             android:screenOrientation="portrait" />
         <activity
             android:name=".ui.comment.ReceivedCommentActivity"
-            android:windowSoftInputMode="adjustPan"
             android:configChanges="orientation|screenSize|keyboardHidden"
-            android:screenOrientation="portrait" />
+            android:screenOrientation="portrait"
+            android:windowSoftInputMode="adjustPan" />
         <activity
             android:name=".ui.comment.CourseCommentActivity"
-            android:windowSoftInputMode="adjustPan"
             android:configChanges="orientation|screenSize|keyboardHidden"
-            android:screenOrientation="portrait" />
+            android:screenOrientation="portrait"
+            android:windowSoftInputMode="adjustPan" />
 
         <activity
             android:name=".ui.comment.CourseCommentDetailActivity"
             android:configChanges="orientation|screenSize|keyboardHidden"
             android:screenOrientation="portrait" />
 
+        <activity
+            android:name=".ui.homepage.HomePageActivity"
+            android:configChanges="orientation|screenSize|keyboardHidden"
+            android:screenOrientation="portrait" />
     </application>
 
 </manifest>

+ 39 - 0
teacher/src/main/java/com/cooleshow/teacher/adapter/HomePagerAdapter.java

@@ -0,0 +1,39 @@
+package com.cooleshow.teacher.adapter;
+
+import java.util.ArrayList;
+
+import androidx.annotation.NonNull;
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentActivity;
+import androidx.viewpager2.adapter.FragmentStateAdapter;
+
+/**
+ * Author by pq, Date on 2022/5/6.
+ */
+public class HomePagerAdapter extends FragmentStateAdapter {
+    private ArrayList<Fragment> mFragments;
+
+    public HomePagerAdapter(@NonNull Fragment fragment) {
+        super(fragment);
+    }
+
+    public HomePagerAdapter(@NonNull FragmentActivity fragmentActivity) {
+        super(fragmentActivity);
+    }
+
+    public void setData(ArrayList<Fragment> fragments) {
+        this.mFragments = fragments;
+        notifyDataSetChanged();
+    }
+
+    @NonNull
+    @Override
+    public Fragment createFragment(int position) {
+        return mFragments.get(position);
+    }
+
+    @Override
+    public int getItemCount() {
+        return mFragments != null ? mFragments.size() : 0;
+    }
+}

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

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

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

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

+ 42 - 0
teacher/src/main/java/com/cooleshow/teacher/presenter/homePage/HomePagePresenter.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.TeacherUserInfo;
+import com.cooleshow.teacher.contract.HomePageContract;
+import com.cooleshow.teacher.contract.MineContract;
+import com.cooleshow.usercenter.bean.UserInfo;
+
+/**
+ * Author by pq, Date on 2022/4/20.
+ */
+public class HomePagePresenter extends BasePresenter<HomePageContract.HomePageView> implements HomePageContract.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 getTeacherUserInfo() {
+        addSubscribe(create(APIService.class).getTeacherUserInfo(), new BaseObserver<TeacherUserInfo>(getView()) {
+            @Override
+            protected void onSuccess(TeacherUserInfo data) {
+//                if (getView() != null) {
+//                    getView().getTeacherInfoSuccess(data);
+//                }
+            }
+        });
+    }
+}

+ 42 - 0
teacher/src/main/java/com/cooleshow/teacher/presenter/homePage/MineStylePresenter.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.TeacherUserInfo;
+import com.cooleshow.teacher.contract.HomePageContract;
+import com.cooleshow.teacher.contract.MineStyleContract;
+import com.cooleshow.usercenter.bean.UserInfo;
+
+/**
+ * Author by pq, Date on 2022/4/20.
+ */
+public class MineStylePresenter extends BasePresenter<MineStyleContract.MineStylePageView> implements MineStyleContract.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 getTeacherUserInfo() {
+        addSubscribe(create(APIService.class).getTeacherUserInfo(), new BaseObserver<TeacherUserInfo>(getView()) {
+            @Override
+            protected void onSuccess(TeacherUserInfo data) {
+//                if (getView() != null) {
+//                    getView().getTeacherInfoSuccess(data);
+//                }
+            }
+        });
+    }
+}

+ 122 - 0
teacher/src/main/java/com/cooleshow/teacher/ui/homepage/HomePageActivity.java

@@ -0,0 +1,122 @@
+package com.cooleshow.teacher.ui.homepage;
+
+import android.graphics.Typeface;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+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.LogUtils;
+import com.cooleshow.base.utils.Utils;
+import com.cooleshow.teacher.R;
+import com.cooleshow.teacher.adapter.HomePagerAdapter;
+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 java.util.ArrayList;
+
+import androidx.annotation.NonNull;
+import androidx.fragment.app.Fragment;
+
+/**
+ * Author by pq, Date on 2022/5/9.
+ * 个人主页
+ */
+@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[]{"个人风采", "陪练课","直播课","视频课","乐谱"};
+    private ArrayList<Fragment> fragments = new ArrayList<>();
+    @Override
+    protected void initView() {
+        Utils.setHeadView(viewBinding.viewStatusBar,this, 0);
+        viewBinding.ivBack.setOnClickListener(this);
+    }
+
+    @Override
+    public void initData() {
+        super.initData();
+        TabLayoutMediator tabLayoutMediator = new TabLayoutMediator(viewBinding.tabLayout, viewBinding.viewPager, new TabLayoutMediator.TabConfigurationStrategy() {
+            @Override
+            public void onConfigureTab(@NonNull TabLayout.Tab tab, int position) {
+                createTab(tab, titles[position]);
+            }
+        });
+        viewBinding.tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
+            @Override
+            public void onTabSelected(TabLayout.Tab tab) {
+                if (tab != null && tab.getCustomView() != null) {
+                    View customView = tab.getCustomView();
+                    TextView tv_text = customView.findViewById(R.id.tv_text);
+                    tv_text.setTextColor(getResources().getColor(com.cooleshow.base.R.color.color_333333));
+                    tv_text.setTypeface(Typeface.defaultFromStyle(Typeface.BOLD));
+                    tv_text.setTextSize(17);
+                }
+            }
+
+            @Override
+            public void onTabUnselected(TabLayout.Tab tab) {
+                if (tab != null && tab.getCustomView() != null) {
+                    View customView = tab.getCustomView();
+                    TextView tv_text = customView.findViewById(R.id.tv_text);
+                    tv_text.setTextColor(getResources().getColor(com.cooleshow.base.R.color.color_666666));
+                    tv_text.setTypeface(Typeface.defaultFromStyle(Typeface.NORMAL));
+                    tv_text.setTextSize(15);
+                }
+            }
+
+            @Override
+            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();
+        fragments.add(mineStyleFragment);
+        fragments.add(sparringCoursePageFragment);
+        fragments.add(liveCoursePageFragment);
+        fragments.add(videoCoursePageFragment);
+        fragments.add(musicPageFragment);
+        HomePagerAdapter homePagerAdapter = new HomePagerAdapter(this);
+        homePagerAdapter.setData(fragments);
+        viewBinding.viewPager.setAdapter(homePagerAdapter);
+        tabLayoutMediator.attach();
+    }
+
+    @Override
+    protected ActivityHomePageLayoutBinding getLayoutView() {
+        return ActivityHomePageLayoutBinding.inflate(getLayoutInflater());
+    }
+
+    @Override
+    protected HomePagePresenter createPresenter() {
+        return new HomePagePresenter();
+    }
+
+    @Override
+    public void onClick(View v) {
+        int id = v.getId();
+        if (id == R.id.iv_back) {
+            finish();
+            return;
+        }
+    }
+
+    private TabLayout.Tab createTab(TabLayout.Tab tab, String text) {
+        tab.setCustomView(R.layout.view_homepage_tab_layout);
+        View customView =tab.getCustomView();
+        if (customView != null) {
+            TextView tv_text = customView.findViewById(R.id.tv_text);
+            tv_text.setText(text);
+        }
+        return tab;
+    }
+}

+ 36 - 0
teacher/src/main/java/com/cooleshow/teacher/ui/homepage/LiveCoursePageFragment.java

@@ -0,0 +1,36 @@
+package com.cooleshow.teacher.ui.homepage;
+
+import android.view.View;
+
+import com.cooleshow.base.ui.fragment.BaseMVPFragment;
+import com.cooleshow.teacher.contract.MineStyleContract;
+import com.cooleshow.teacher.databinding.FragmentLiveCoursePageLayoutBinding;
+import com.cooleshow.teacher.databinding.FragmentSparringCoursePageLayoutBinding;
+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 {
+
+    @Override
+    protected void initView(View rootView) {
+
+    }
+
+    @Override
+    protected void initData() {
+
+    }
+
+    @Override
+    protected FragmentLiveCoursePageLayoutBinding getLayoutView() {
+        return FragmentLiveCoursePageLayoutBinding.inflate(getLayoutInflater());
+    }
+
+    @Override
+    protected MineStylePresenter createPresenter() {
+        return new MineStylePresenter();
+    }
+
+}

+ 35 - 0
teacher/src/main/java/com/cooleshow/teacher/ui/homepage/MineStyleFragment.java

@@ -0,0 +1,35 @@
+package com.cooleshow.teacher.ui.homepage;
+
+import android.view.View;
+
+import com.cooleshow.base.ui.fragment.BaseMVPFragment;
+import com.cooleshow.teacher.contract.MineStyleContract;
+import com.cooleshow.teacher.databinding.FragmentMineStyleLayoutBinding;
+import com.cooleshow.teacher.presenter.homePage.MineStylePresenter;
+
+/**
+ * Author by pq, Date on 2022/5/9.
+ */
+public class MineStyleFragment extends BaseMVPFragment<FragmentMineStyleLayoutBinding, MineStylePresenter> implements MineStyleContract.MineStylePageView {
+
+    @Override
+    protected void initView(View rootView) {
+
+    }
+
+    @Override
+    protected void initData() {
+
+    }
+
+    @Override
+    protected FragmentMineStyleLayoutBinding getLayoutView() {
+        return FragmentMineStyleLayoutBinding.inflate(getLayoutInflater());
+    }
+
+    @Override
+    protected MineStylePresenter createPresenter() {
+        return new MineStylePresenter();
+    }
+
+}

+ 36 - 0
teacher/src/main/java/com/cooleshow/teacher/ui/homepage/SheetMusicPageFragment.java

@@ -0,0 +1,36 @@
+package com.cooleshow.teacher.ui.homepage;
+
+import android.view.View;
+
+import com.cooleshow.base.ui.fragment.BaseMVPFragment;
+import com.cooleshow.teacher.contract.MineStyleContract;
+import com.cooleshow.teacher.databinding.FragmentSheetMusicPageLayoutBinding;
+import com.cooleshow.teacher.databinding.FragmentVideoCoursePageLayoutBinding;
+import com.cooleshow.teacher.presenter.homePage.MineStylePresenter;
+
+/**
+ * Author by pq, Date on 2022/5/9.
+ */
+public class SheetMusicPageFragment extends BaseMVPFragment<FragmentSheetMusicPageLayoutBinding, MineStylePresenter> implements MineStyleContract.MineStylePageView {
+
+    @Override
+    protected void initView(View rootView) {
+
+    }
+
+    @Override
+    protected void initData() {
+
+    }
+
+    @Override
+    protected FragmentSheetMusicPageLayoutBinding getLayoutView() {
+        return FragmentSheetMusicPageLayoutBinding.inflate(getLayoutInflater());
+    }
+
+    @Override
+    protected MineStylePresenter createPresenter() {
+        return new MineStylePresenter();
+    }
+
+}

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

@@ -0,0 +1,36 @@
+package com.cooleshow.teacher.ui.homepage;
+
+import android.view.View;
+
+import com.cooleshow.base.ui.fragment.BaseMVPFragment;
+import com.cooleshow.teacher.contract.MineStyleContract;
+import com.cooleshow.teacher.databinding.FragmentMineStyleLayoutBinding;
+import com.cooleshow.teacher.databinding.FragmentSparringCoursePageLayoutBinding;
+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 {
+
+    @Override
+    protected void initView(View rootView) {
+
+    }
+
+    @Override
+    protected void initData() {
+
+    }
+
+    @Override
+    protected FragmentSparringCoursePageLayoutBinding getLayoutView() {
+        return FragmentSparringCoursePageLayoutBinding.inflate(getLayoutInflater());
+    }
+
+    @Override
+    protected MineStylePresenter createPresenter() {
+        return new MineStylePresenter();
+    }
+
+}

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

@@ -0,0 +1,36 @@
+package com.cooleshow.teacher.ui.homepage;
+
+import android.view.View;
+
+import com.cooleshow.base.ui.fragment.BaseMVPFragment;
+import com.cooleshow.teacher.contract.MineStyleContract;
+import com.cooleshow.teacher.databinding.FragmentLiveCoursePageLayoutBinding;
+import com.cooleshow.teacher.databinding.FragmentVideoCoursePageLayoutBinding;
+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 {
+
+    @Override
+    protected void initView(View rootView) {
+
+    }
+
+    @Override
+    protected void initData() {
+
+    }
+
+    @Override
+    protected FragmentVideoCoursePageLayoutBinding getLayoutView() {
+        return FragmentVideoCoursePageLayoutBinding.inflate(getLayoutInflater());
+    }
+
+    @Override
+    protected MineStylePresenter createPresenter() {
+        return new MineStylePresenter();
+    }
+
+}

+ 7 - 2
teacher/src/main/java/com/cooleshow/teacher/ui/main/MineFragment.java

@@ -27,6 +27,8 @@ public class MineFragment extends BaseMVPFragment<FragmentMineLayoutBinding, Min
         Utils.setHeadView(mViewBinding.viewStatusBar, requireContext(), 0);
         mViewBinding.ivCertificationStatus.setOnClickListener(this);
         mViewBinding.ivUnCertificationTip.setOnClickListener(this);
+        mViewBinding.ivMinePage.setOnClickListener(this);
+        mViewBinding.tvMinePage.setOnClickListener(this);
     }
 
     @Override
@@ -96,10 +98,13 @@ public class MineFragment extends BaseMVPFragment<FragmentMineLayoutBinding, Min
             ARouter.getInstance().build(RouterPath.WebCenter.ACTIVITY_HTML)
                     .withString(WebConstants.WEB_URL, WebConstants.TEACHER_CERT)
                     .navigation();
-        }
-        if (id == R.id.iv_un_certification_tip) {
+        } else if (id == R.id.iv_un_certification_tip) {
             //关闭认证提示
             mViewBinding.ivUnCertificationTip.setVisibility(View.GONE);
+        } else if (id == R.id.tv_mine_page || id == R.id.iv_mine_page) {
+            //个人主页
+            ARouter.getInstance().build(RouterPath.MineCenter.HOME_PAGE)
+                    .navigation();
         }
     }
 }

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


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


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

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <corners android:radius="10dp" />
+    <gradient
+        android:angle="-90"
+        android:endColor="@color/white"
+        android:startColor="@color/color_a6ffffff" />
+</shape>

+ 228 - 0
teacher/src/main/res/layout/activity_home_page_layout.xml

@@ -0,0 +1,228 @@
+<?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:id="@+id/iv_header_bg"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:adjustViewBounds="true"
+        android:scaleType="fitXY"
+        android:src="@drawable/bg_home_page_header"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintTop_toTopOf="parent" />
+
+    <View
+        android:id="@+id/view_status_bar"
+        android:layout_width="match_parent"
+        android:layout_height="1px"
+        app:layout_constraintTop_toTopOf="parent" />
+
+    <ImageView
+        android:id="@+id/iv_back"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginStart="12dp"
+        android:layout_marginTop="15dp"
+        android:padding="10dp"
+        android:src="@drawable/icon_back_arrow_white"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintTop_toBottomOf="@+id/view_status_bar" />
+
+
+    <View
+        android:id="@+id/view_top_bg"
+        android:layout_width="match_parent"
+        android:layout_height="127dp"
+        android:layout_marginStart="14dp"
+        android:layout_marginTop="51dp"
+        android:layout_marginEnd="14dp"
+        android:background="@drawable/shape_home_page_header_bg"
+        app:layout_constraintTop_toBottomOf="@+id/iv_back" />
+
+    <de.hdodenhof.circleimageview.CircleImageView
+        android:id="@+id/iv_avatar"
+        android:layout_width="58dp"
+        android:layout_height="58dp"
+        android:layout_marginStart="11dp"
+        android:layout_marginTop="14dp"
+        android:src="@drawable/icon_teacher_default_head"
+        app:layout_constraintLeft_toLeftOf="@+id/view_top_bg"
+        app:layout_constraintTop_toTopOf="@+id/view_top_bg" />
+
+
+    <TextView
+        android:id="@+id/tv_nickname"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginStart="10dp"
+        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"
+        app:layout_constraintTop_toTopOf="@+id/iv_avatar"
+        app:layout_constraintVertical_chainStyle="packed"
+        tools:text="游客12e32td" />
+
+    <ImageView
+        android:id="@+id/iv_teacher_entry_tag"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginStart="6dp"
+        android:src="@drawable/icon_teahcer_entry_tag"
+        android:visibility="gone"
+        app:layout_constraintBottom_toBottomOf="@+id/tv_nickname"
+        app:layout_constraintLeft_toRightOf="@+id/tv_nickname"
+        app:layout_constraintTop_toTopOf="@+id/tv_nickname" />
+
+    <ImageView
+        android:id="@+id/iv_teacher_music_person_tag"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginStart="3dp"
+        android:src="@drawable/icon_teacher_music_person_tag"
+        android:visibility="gone"
+        app:layout_constraintBottom_toBottomOf="@+id/iv_teacher_entry_tag"
+        app:layout_constraintLeft_toRightOf="@+id/iv_teacher_entry_tag"
+        app:layout_constraintTop_toTopOf="@+id/iv_teacher_entry_tag" />
+
+    <LinearLayout
+        android:id="@+id/ll_subject_container"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="8dp"
+        android:orientation="horizontal"
+        app:layout_constraintLeft_toLeftOf="@+id/tv_nickname"
+        app:layout_constraintTop_toBottomOf="@+id/tv_nickname" />
+
+    <RatingBar
+        android:id="@+id/rating_bar"
+        style="@style/HomeRatingBar"
+        android:layout_width="wrap_content"
+        android:layout_height="19dp"
+        android:layout_marginTop="20dp"
+        android:numStars="5"
+        android:rating="3"
+        android:stepSize="1"
+        app:layout_constraintLeft_toLeftOf="@+id/iv_avatar"
+        app:layout_constraintTop_toBottomOf="@+id/iv_avatar" />
+
+    <LinearLayout
+        android:id="@+id/ll_fans"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginEnd="12dp"
+        android:gravity="center_vertical"
+        android:orientation="horizontal"
+        app:layout_constraintBottom_toBottomOf="@+id/ll_course_num_completed"
+        app:layout_constraintRight_toLeftOf="@+id/ll_course_num_completed"
+        app:layout_constraintTop_toTopOf="@+id/ll_course_num_completed">
+
+
+        <TextView
+            android:id="@+id/tv_fans_title"
+            android:layout_width="wrap_content"
+            android:layout_height="28dp"
+            android:gravity="center"
+            android:includeFontPadding="false"
+            android:text="粉丝"
+            android:textColor="@color/color_333333"
+            android:textSize="@dimen/sp_14" />
+
+        <TextView
+            android:id="@+id/tv_fans_num"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:includeFontPadding="false"
+            android:paddingStart="3dp"
+            android:text="0"
+            android:textColor="@color/color_333333"
+            android:textSize="@dimen/sp_17"
+            android:textStyle="bold"
+            tools:text="1181" />
+    </LinearLayout>
+
+    <View
+        android:layout_width="1dp"
+        android:layout_height="12dp"
+        android:background="@color/color_d3d3d3"
+        app:layout_constraintBottom_toBottomOf="@+id/ll_course_num_completed"
+        app:layout_constraintLeft_toRightOf="@+id/ll_fans"
+        app:layout_constraintRight_toLeftOf="@+id/ll_course_num_completed"
+        app:layout_constraintTop_toTopOf="@+id/ll_course_num_completed" />
+
+    <LinearLayout
+        android:id="@+id/ll_course_num_completed"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginStart="12dp"
+        android:layout_marginEnd="10dp"
+        android:gravity="center_vertical"
+        android:orientation="horizontal"
+        app:layout_constraintBottom_toBottomOf="@+id/rating_bar"
+        app:layout_constraintRight_toRightOf="@+id/view_top_bg"
+        app:layout_constraintTop_toTopOf="@+id/rating_bar">
+
+
+        <TextView
+            android:id="@+id/tv_course_num_completed_title"
+            android:layout_width="wrap_content"
+            android:layout_height="28dp"
+            android:gravity="center"
+            android:includeFontPadding="false"
+            android:text="已上课时"
+            android:textColor="@color/color_333333"
+            android:textSize="@dimen/sp_14" />
+
+        <TextView
+            android:id="@+id/tv_course_num_completed"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:includeFontPadding="false"
+            android:paddingStart="3dp"
+            android:text="0"
+            android:textColor="@color/color_333333"
+            android:textSize="@dimen/sp_17"
+            android:textStyle="bold"
+            tools:text="1111118" />
+    </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_marginTop="15dp"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintTop_toBottomOf="@+id/view_top_bg"
+        app:tabBackground="@color/transparent"
+        app:tabGravity="fill"
+        app:tabIndicator="@drawable/custom_indicator_drawable"
+        app:tabIndicatorColor="@color/colorAccent"
+        app:tabIndicatorFullWidth="false"
+        app:tabIndicatorHeight="4dp"
+        app:tabMaxWidth="0dp"
+        app:tabMode="scrollable"
+        app:tabPaddingEnd="0dp"
+        app:tabPaddingStart="0dp"
+        app:tabRippleColor="@color/transparent"
+        app:tabSelectedTextColor="@color/color_333333"
+        app:tabTextColor="@color/color_666666" />
+
+    <androidx.viewpager2.widget.ViewPager2
+        android:id="@+id/view_pager"
+        android:layout_width="match_parent"
+        android:layout_height="0dp"
+        android:overScrollMode="never"
+        android:scrollbars="none"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintTop_toBottomOf="@+id/tab_layout" />
+
+</androidx.constraintlayout.widget.ConstraintLayout>

+ 14 - 0
teacher/src/main/res/layout/fragment_live_course_page_layout.xml

@@ -0,0 +1,14 @@
+<?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="match_parent"
+    xmlns:app="http://schemas.android.com/apk/res-auto">
+    <TextView
+        app:layout_constraintRight_toRightOf="parent"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintTop_toTopOf="parent"
+        android:text="直播课"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"/>
+</androidx.constraintlayout.widget.ConstraintLayout>

+ 6 - 0
teacher/src/main/res/layout/fragment_mine_style_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="match_parent">
+
+</androidx.constraintlayout.widget.ConstraintLayout>

+ 14 - 0
teacher/src/main/res/layout/fragment_sheet_music_page_layout.xml

@@ -0,0 +1,14 @@
+<?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="match_parent"
+    xmlns:app="http://schemas.android.com/apk/res-auto">
+    <TextView
+        app:layout_constraintRight_toRightOf="parent"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintTop_toTopOf="parent"
+        android:text="乐谱"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"/>
+</androidx.constraintlayout.widget.ConstraintLayout>

+ 14 - 0
teacher/src/main/res/layout/fragment_sparring_course_page_layout.xml

@@ -0,0 +1,14 @@
+<?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="match_parent"
+    xmlns:app="http://schemas.android.com/apk/res-auto">
+    <TextView
+        app:layout_constraintRight_toRightOf="parent"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintTop_toTopOf="parent"
+        android:text="陪练课"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"/>
+</androidx.constraintlayout.widget.ConstraintLayout>

+ 14 - 0
teacher/src/main/res/layout/fragment_video_course_page_layout.xml

@@ -0,0 +1,14 @@
+<?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="match_parent"
+    xmlns:app="http://schemas.android.com/apk/res-auto">
+    <TextView
+        app:layout_constraintRight_toRightOf="parent"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintTop_toTopOf="parent"
+        android:text="视频课"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"/>
+</androidx.constraintlayout.widget.ConstraintLayout>

+ 15 - 0
teacher/src/main/res/layout/view_homepage_tab_layout.xml

@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<FrameLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content">
+    <TextView
+        android:minWidth="64dp"
+        android:gravity="center"
+        android:includeFontPadding="false"
+        android:textSize="@dimen/sp_15"
+        android:textColor="@color/color_666666"
+        android:id="@+id/tv_text"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"/>
+</FrameLayout>