Browse Source

增加学生端新首页UI

Pq 2 years ago
parent
commit
5c162f7b26

+ 36 - 0
BaseLibrary/src/main/java/com/cooleshow/base/utils/UiUtils.java

@@ -1,6 +1,9 @@
 package com.cooleshow.base.utils;
 
+import android.app.Activity;
 import android.content.Context;
+import android.graphics.Point;
+import android.graphics.Rect;
 import android.graphics.drawable.Drawable;
 import android.os.Handler;
 import android.os.Looper;
@@ -16,6 +19,7 @@ import android.view.View;
 import android.view.ViewGroup;
 
 import com.cooleshow.base.R;
+import com.cooleshow.base.common.BaseApplication;
 import com.cooleshow.base.widgets.span.QMUIAlignMiddleImageSpan;
 
 import java.math.BigDecimal;
@@ -279,4 +283,36 @@ public class UiUtils {
         }
         return price;
     }
+
+    public static boolean getLocalVisibleRect(Activity activity, View view, int offsetY) {
+
+        Point p = new Point();
+
+        activity.getWindowManager().getDefaultDisplay().getSize(p);
+
+        int screenWidth = p.x;
+
+        int screenHeight = p.y;
+
+        Rect rect = new Rect(0, 0, screenWidth, screenHeight);//得到屏幕矩阵
+
+        int[] location = new int[2];
+
+        location[1] = location[1] + SizeUtils.dp2px(offsetY);
+
+        view.getLocationInWindow(location);
+
+        view.setTag(location[1]);//存储y方向的位置
+
+        if (view.getLocalVisibleRect(rect)) {
+
+            return true;
+
+        } else {
+
+            return false;
+
+        }
+
+    }
 }

+ 5 - 0
BaseLibrary/src/main/res/drawable/shape_2dc7aa_6dp.xml

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

+ 5 - 0
BaseLibrary/src/main/res/drawable/shape_bottom_18dp_white.xml

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

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

@@ -119,6 +119,7 @@
     <color name="color_d8fff8">#D8FFF8</color>
     <color name="color_40000000">#40000000</color>
     <color name="color_fff1e7">#fff1e7</color>
+    <color name="color_f6f6f6">#F6F6F6</color>
 
     <color name="color_25292e">#25292E</color>
     <color name="color_F8F8F8">#F8F8F8</color>
@@ -144,5 +145,7 @@
     <color name="color_4877ff">#4877FF</color>
     <color name="color_ff4902">#ff4902</color>
     <color name="color_fb5e32">#FB5E32</color>
+    <color name="color_cccccc">#CCCCCC</color>
+    <color name="color_fef9f4">#fef9f4</color>
 
 </resources>

+ 82 - 3
student/src/main/java/com/cooleshow/student/ui/main/NewHomeFragment.java

@@ -1,8 +1,14 @@
 package com.cooleshow.student.ui.main;
 
+import android.text.TextUtils;
 import android.view.View;
 
+import com.alibaba.android.arouter.launcher.ARouter;
+import com.bumptech.glide.Glide;
+import com.cooleshow.base.common.WebConstants;
+import com.cooleshow.base.router.RouterPath;
 import com.cooleshow.base.ui.fragment.BaseMVPFragment;
+import com.cooleshow.base.utils.UiUtils;
 import com.cooleshow.student.bean.AppHomeBean;
 import com.cooleshow.student.bean.CountOfUnreadBean;
 import com.cooleshow.student.bean.HelpCenterContentBean;
@@ -13,14 +19,23 @@ import com.cooleshow.student.bean.StudentUserInfo;
 import com.cooleshow.student.contract.HomeContract;
 import com.cooleshow.student.databinding.FragmentNewHomeLayoutBinding;
 import com.cooleshow.student.presenter.main.HomePresenter;
+import com.youth.banner.Banner;
+import com.youth.banner.adapter.BannerImageAdapter;
+import com.youth.banner.holder.BannerImageHolder;
+import com.youth.banner.listener.OnBannerListener;
 
+import java.util.ArrayList;
 import java.util.List;
 
+import androidx.core.widget.NestedScrollView;
+
 /**
  * Author by pq, Date on 2022/8/29.
  */
-public class NewHomeFragment extends BaseMVPFragment<FragmentNewHomeLayoutBinding, HomePresenter> implements HomeContract.HomeView{
-
+public class NewHomeFragment extends BaseMVPFragment<FragmentNewHomeLayoutBinding, HomePresenter> implements HomeContract.HomeView {
+    private Banner banner;
+    private ArrayList<AppHomeBean.ItemBean> itemBeans = new ArrayList<>();
+    private BannerImageAdapter mBannerImageAdapter;
 
     @Override
     protected FragmentNewHomeLayoutBinding getLayoutView() {
@@ -34,17 +49,81 @@ public class NewHomeFragment extends BaseMVPFragment<FragmentNewHomeLayoutBindin
 
     @Override
     protected void initView(View rootView) {
-
+        banner = mViewBinding.banner;
     }
 
     @Override
     protected void initData() {
+        initListener();
+        mBannerImageAdapter = new BannerImageAdapter<AppHomeBean.ItemBean>(itemBeans) {
+            @Override
+            public void onBindView(BannerImageHolder holder, AppHomeBean.ItemBean data, int position, int size) {
+                Glide.with(holder.imageView)
+                        .load(data.coverImage)
+                        .thumbnail(Glide.with(holder.itemView).load(com.cooleshow.base.R.drawable.bg_video_placeholder))//加载成功前显示一个loading的加载
+//                        .apply(RequestOptions.bitmapTransform(new RoundedCorners(30)))  //设置图片圆角
+                        .into(holder.imageView);
+
+            }
+        };
+        banner.setAdapter(mBannerImageAdapter, true).addBannerLifecycleObserver(this)//添加生命周期观察者
+                .setIntercept(true) //是否要拦截事件
+                .isAutoLoop(true)
+                .removeIndicator()
+//                .setIndicator(new CircleIndicator(getContext())) //圆形指示器 还支持条形指示器等
+                .setOnBannerListener(new OnBannerListener() {
+                    @Override
+                    public void OnBannerClick(Object data, int position) {
+                        AppHomeBean.ItemBean item = (AppHomeBean.ItemBean) data;
+                        if (!TextUtils.isEmpty(item.linkUrl)) {
+                            ARouter.getInstance()
+                                    .build(RouterPath.WebCenter.ACTIVITY_HTML)
+                                    .withString(WebConstants.WEB_URL, item.linkUrl)
+                                    .navigation();
+                        }
+                    }
+                });
+    }
 
+    private void initListener() {
+        mViewBinding.scrollLayout.setOnScrollChangeListener((NestedScrollView.OnScrollChangeListener) (v, scrollX, scrollY, oldScrollX, oldScrollY) -> {
+            boolean localVisibleRect = UiUtils.getLocalVisibleRect(getActivity(), banner, 10);
+            //banner可见的时候就自动循环,否则就停止,解决问题:在scrollview到最底部时候,由于banner自动到第一个时候就往上顶一段距离
+            if (localVisibleRect) {
+                if (null != banner) {
+                    banner.isAutoLoop(true);
+                }
+            } else {
+                if (null != banner) {
+                    banner.isAutoLoop(false);
+                }
+            }
+        });
     }
 
     @Override
     public void appHomeSuccess(AppHomeBean appHomeBean) {
+        bindBanner(appHomeBean.banner);
+    }
 
+    /**
+     * 处理banner数据
+     *
+     * @param bannerList
+     */
+    private void bindBanner(List<AppHomeBean.ItemBean> bannerList) {
+        if (mBannerImageAdapter == null) {
+            return;
+        }
+        if (bannerList != null && bannerList.size() > 0) {
+            banner.setVisibility(View.VISIBLE);
+            itemBeans.clear();
+            itemBeans.addAll(bannerList);
+            mBannerImageAdapter.notifyDataSetChanged();
+        } else {
+            itemBeans.clear();
+            banner.setVisibility(View.GONE);
+        }
     }
 
     @Override

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


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


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


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


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


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


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


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


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


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


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


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


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


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


+ 5 - 0
student/src/main/res/drawable/shape_f6f6f6_17dp.xml

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

+ 659 - 0
student/src/main/res/layout/fragment_new_home_layout.xml

@@ -1,6 +1,665 @@
 <?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">
 
+    <View
+        android:id="@+id/view_top_bg"
+        android:layout_width="match_parent"
+        android:layout_height="0dp"
+        android:background="@color/white"
+        app:layout_constraintBottom_toBottomOf="@+id/top_logo_help_line"
+        app:layout_constraintTop_toTopOf="parent" />
+
+    <View
+        android:id="@+id/view_status_bar"
+        android:layout_width="match_parent"
+        android:layout_height="1px"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintRight_toRightOf="parent"
+        app:layout_constraintTop_toTopOf="parent" />
+
+    <ImageView
+        android:id="@+id/iv_logo"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginStart="14dp"
+        android:src="@drawable/icon_home_top_logo"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintTop_toBottomOf="@+id/view_status_bar" />
+
+    <View
+        android:id="@+id/top_logo_help_line"
+        android:layout_width="1px"
+        android:layout_height="1px"
+        android:layout_marginTop="10dp"
+        android:orientation="horizontal"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintTop_toBottomOf="@+id/iv_logo" />
+
+    <View
+        android:id="@+id/view_search_bg"
+        android:layout_width="0dp"
+        android:layout_height="30dp"
+        android:layout_marginStart="17dp"
+        android:layout_marginEnd="17dp"
+        android:background="@drawable/shape_f6f6f6_17dp"
+        app:layout_constraintBottom_toBottomOf="@+id/iv_logo"
+        app:layout_constraintLeft_toRightOf="@+id/iv_logo"
+        app:layout_constraintRight_toLeftOf="@+id/iv_scan"
+        app:layout_constraintTop_toTopOf="@+id/iv_logo" />
+
+    <ImageView
+        android:id="@+id/iv_search_icon"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginStart="17dp"
+        android:src="@drawable/icon_home_search"
+        app:layout_constraintBottom_toBottomOf="@+id/view_search_bg"
+        app:layout_constraintLeft_toLeftOf="@+id/view_search_bg"
+        app:layout_constraintTop_toTopOf="@+id/view_search_bg" />
+
+
+    <TextView
+        android:id="@+id/tv_search_tip"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:paddingStart="16dp"
+        android:text="搜索你喜欢的内容"
+        android:textColor="@color/color_cccccc"
+        android:textSize="@dimen/sp_12"
+        app:layout_constraintBottom_toBottomOf="@+id/iv_search_icon"
+        app:layout_constraintLeft_toRightOf="@+id/iv_search_icon"
+        app:layout_constraintTop_toTopOf="@+id/iv_search_icon" />
+
+    <ImageView
+        android:id="@+id/iv_scan"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:padding="8dp"
+        android:src="@drawable/icon_scan"
+        android:visibility="visible"
+        app:layout_constraintBottom_toBottomOf="@+id/iv_logo"
+        app:layout_constraintRight_toLeftOf="@+id/im_message"
+        app:layout_constraintTop_toTopOf="@+id/iv_logo" />
+
+    <ImageView
+        android:id="@+id/im_message"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginRight="@dimen/dp_14"
+        android:padding="8dp"
+        android:src="@drawable/icon_top_message"
+        app:layout_constraintBottom_toBottomOf="@+id/iv_logo"
+        app:layout_constraintRight_toRightOf="parent"
+        app:layout_constraintTop_toTopOf="@+id/iv_logo" />
+
+    <androidx.core.widget.NestedScrollView
+        android:id="@+id/scroll_layout"
+        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/view_top_bg">
+
+        <androidx.constraintlayout.widget.ConstraintLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content">
+
+            <View
+                android:id="@+id/view_bg_header"
+                android:layout_width="match_parent"
+                android:layout_height="0dp"
+                android:background="@drawable/shape_bottom_18dp_white"
+                app:layout_constraintBottom_toBottomOf="@+id/view_line2"
+                app:layout_constraintLeft_toLeftOf="parent"
+                app:layout_constraintTop_toTopOf="parent" />
+
+            <com.youth.banner.Banner
+                android:id="@+id/banner"
+                android:layout_width="match_parent"
+                android:layout_height="@dimen/dp_132"
+                android:layout_marginLeft="@dimen/dp_14"
+                android:layout_marginTop="@dimen/dp_10"
+                android:layout_marginRight="@dimen/dp_14"
+                android:descendantFocusability="blocksDescendants"
+                app:banner_indicator_normal_color="@color/transparent"
+                app:banner_indicator_selected_color="@color/transparent"
+                app:banner_radius="12dp"
+                app:layout_constraintLeft_toLeftOf="parent"
+                app:layout_constraintTop_toTopOf="parent" />
+
+
+            <androidx.cardview.widget.CardView
+                android:id="@+id/bg_announcement"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginStart="14dp"
+                android:layout_marginTop="@dimen/dp_12"
+                android:layout_marginEnd="14dp"
+                android:visibility="visible"
+                app:cardBackgroundColor="@color/color_fef9f4"
+                app:cardCornerRadius="10dp"
+                app:cardElevation="0dp"
+                app:layout_constraintLeft_toLeftOf="parent"
+                app:layout_constraintTop_toBottomOf="@+id/banner">
+
+                <androidx.constraintlayout.widget.ConstraintLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:orientation="horizontal">
+
+                    <ImageView
+                        android:id="@+id/iv_bell"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginLeft="6dp"
+                        android:src="@drawable/icon_home_bell"
+                        app:layout_constraintBottom_toBottomOf="parent"
+                        app:layout_constraintLeft_toLeftOf="parent"
+                        app:layout_constraintTop_toTopOf="parent" />
+
+                    <TextView
+                        android:id="@+id/tv_notice_content"
+                        android:layout_width="wrap_content"
+                        android:layout_height="44dp"
+                        android:layout_marginStart="7dp"
+                        android:gravity="center"
+                        android:includeFontPadding="false"
+                        android:textColor="@color/color_1a1a1a"
+                        android:textSize="@dimen/sp_14"
+                        app:layout_constraintBottom_toBottomOf="parent"
+                        app:layout_constraintLeft_toRightOf="@+id/iv_bell"
+                        app:layout_constraintTop_toTopOf="parent"
+                        tools:text="网络教室升级公告" />
+
+                    <ImageView
+                        android:id="@+id/im_notice_list"
+                        android:layout_width="@dimen/dp_38"
+                        android:layout_height="@dimen/dp_38"
+                        android:layout_marginRight="@dimen/dp_1"
+                        android:padding="@dimen/dp_10"
+                        android:src="@drawable/icon_arrow_right_bg_tran"
+                        app:layout_constraintBottom_toBottomOf="parent"
+                        app:layout_constraintRight_toRightOf="parent"
+                        app:layout_constraintTop_toTopOf="parent" />
+                </androidx.constraintlayout.widget.ConstraintLayout>
+            </androidx.cardview.widget.CardView>
+
+            <androidx.viewpager.widget.ViewPager
+                android:id="@+id/viewpager_menu"
+                android:layout_width="match_parent"
+                android:layout_height="@dimen/dp_93"
+                android:layout_marginTop="@dimen/dp_8"
+                android:layout_marginBottom="@dimen/dp_2"
+                app:layout_constraintLeft_toLeftOf="parent"
+                app:layout_constraintTop_toBottomOf="@+id/bg_announcement" />
+
+            <View
+                android:id="@+id/view_line2"
+                android:layout_width="1px"
+                android:layout_height="1px"
+                android:layout_marginTop="21dp"
+                app:layout_constraintLeft_toLeftOf="parent"
+                app:layout_constraintTop_toBottomOf="@+id/viewpager_menu" />
+
+
+            <androidx.cardview.widget.CardView
+                android:id="@+id/bg_announcement2"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginStart="14dp"
+                android:layout_marginTop="@dimen/dp_12"
+                android:layout_marginEnd="14dp"
+                android:visibility="gone"
+                app:cardBackgroundColor="@color/color_fef9f4"
+                app:cardCornerRadius="10dp"
+                app:cardElevation="0dp"
+                app:layout_constraintLeft_toLeftOf="parent"
+                app:layout_constraintTop_toBottomOf="@+id/view_bg_header">
+
+                <androidx.constraintlayout.widget.ConstraintLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:orientation="horizontal">
+
+                    <ImageView
+                        android:id="@+id/iv_bell2"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginLeft="6dp"
+                        android:src="@drawable/icon_home_bell"
+                        app:layout_constraintBottom_toBottomOf="parent"
+                        app:layout_constraintLeft_toLeftOf="parent"
+                        app:layout_constraintTop_toTopOf="parent" />
+
+                    <TextView
+                        android:id="@+id/tv_notice_content2"
+                        android:layout_width="wrap_content"
+                        android:layout_height="44dp"
+                        android:layout_marginStart="7dp"
+                        android:gravity="center"
+                        android:includeFontPadding="false"
+                        android:textColor="@color/color_1a1a1a"
+                        android:textSize="@dimen/sp_14"
+                        app:layout_constraintBottom_toBottomOf="parent"
+                        app:layout_constraintLeft_toRightOf="@+id/iv_bell2"
+                        app:layout_constraintTop_toTopOf="parent"
+                        tools:text="网络教室升级公告" />
+
+                    <ImageView
+                        android:id="@+id/im_notice_list2"
+                        android:layout_width="@dimen/dp_38"
+                        android:layout_height="@dimen/dp_38"
+                        android:layout_marginRight="@dimen/dp_1"
+                        android:padding="@dimen/dp_10"
+                        android:src="@drawable/icon_calendar_next_month"
+                        app:layout_constraintBottom_toBottomOf="parent"
+                        app:layout_constraintRight_toRightOf="parent"
+                        app:layout_constraintTop_toTopOf="parent" />
+                </androidx.constraintlayout.widget.ConstraintLayout>
+            </androidx.cardview.widget.CardView>
+
+
+            <androidx.cardview.widget.CardView
+                android:id="@+id/fl_course_enter"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginStart="14dp"
+                android:layout_marginTop="24dp"
+                android:layout_marginEnd="14dp"
+                android:visibility="gone"
+                app:cardBackgroundColor="@color/white"
+                app:cardCornerRadius="10dp"
+                app:cardElevation="0dp"
+                app:cardPreventCornerOverlap="true"
+                app:cardUseCompatPadding="false"
+                app:layout_constraintTop_toBottomOf="@+id/bg_announcement2">
+
+                <androidx.constraintlayout.widget.ConstraintLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="70dp">
+
+                    <TextView
+                        android:id="@+id/tv_live_title"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginStart="128dp"
+                        android:includeFontPadding="false"
+                        android:text="您有新课程即将开始"
+                        android:textColor="@color/color_1a1a1a"
+                        android:textSize="@dimen/sp_16"
+                        app:layout_constraintBottom_toTopOf="@+id/alarm_icon"
+                        app:layout_constraintLeft_toLeftOf="parent"
+                        app:layout_constraintTop_toTopOf="parent"
+                        app:layout_constraintVertical_chainStyle="packed" />
+
+                    <ImageView
+                        android:id="@+id/alarm_icon"
+                        android:layout_width="@dimen/dp_15"
+                        android:layout_height="@dimen/dp_15"
+                        android:layout_marginTop="10dp"
+                        android:src="@drawable/small_alarm_clock"
+                        app:layout_constraintBottom_toBottomOf="parent"
+                        app:layout_constraintLeft_toLeftOf="@+id/tv_live_title"
+                        app:layout_constraintTop_toBottomOf="@+id/tv_live_title" />
+
+
+                    <TextView
+                        android:id="@+id/tv_live_time"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginTop="@dimen/dp_1"
+                        android:layout_marginBottom="@dimen/dp_5"
+                        android:paddingStart="5dp"
+                        android:textColor="@color/color_FF806F"
+                        android:textSize="@dimen/sp_13"
+                        app:layout_constraintBottom_toBottomOf="@+id/alarm_icon"
+                        app:layout_constraintLeft_toRightOf="@+id/alarm_icon"
+                        app:layout_constraintTop_toTopOf="@+id/alarm_icon"
+                        tools:text="今日 16:30-17:05" />
+
+
+                    <ImageView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginEnd="11dp"
+                        android:src="@drawable/icon_arrow_right_bg_tran"
+                        app:layout_constraintBottom_toBottomOf="parent"
+                        app:layout_constraintRight_toRightOf="parent"
+                        app:layout_constraintTop_toTopOf="parent" />
+
+
+                </androidx.constraintlayout.widget.ConstraintLayout>
+            </androidx.cardview.widget.CardView>
+
+            <com.airbnb.lottie.LottieAnimationView
+                android:id="@+id/iv_course_enter_anim"
+                android:layout_width="128dp"
+                android:layout_height="91dp"
+                android:visibility="gone"
+                app:layout_constraintBottom_toBottomOf="@+id/fl_course_enter"
+                app:layout_constraintLeft_toLeftOf="@+id/fl_course_enter"
+                app:lottie_autoPlay="true"
+                app:lottie_loop="true" />
+
+
+            <androidx.constraintlayout.widget.ConstraintLayout
+                android:id="@+id/cl_hot_album"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="@dimen/dp_18"
+                android:visibility="visible"
+                app:layout_constraintTop_toBottomOf="@+id/fl_course_enter">
+
+                <View
+                    android:id="@+id/tv_hot_album_line"
+                    android:layout_width="4dp"
+                    android:layout_height="17dp"
+                    android:layout_marginStart="14dp"
+                    android:background="@drawable/shape_course_title_tag_bg"
+                    app:layout_constraintBottom_toBottomOf="@+id/tv_hot_album"
+                    app:layout_constraintLeft_toLeftOf="parent"
+                    app:layout_constraintTop_toTopOf="@+id/tv_hot_album" />
+
+                <TextView
+                    android:id="@+id/tv_hot_album"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginLeft="@dimen/dp_6"
+                    android:gravity="center"
+                    android:text="热门专辑"
+                    android:textColor="@color/color_333333"
+                    android:textSize="@dimen/sp_18"
+                    android:textStyle="bold"
+                    app:layout_constraintLeft_toRightOf="@+id/tv_hot_album_line"
+                    app:layout_constraintTop_toTopOf="parent" />
+
+                <TextView
+                    android:id="@+id/tv_hot_album_more"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginRight="@dimen/dp_14"
+                    android:background="@drawable/shape_f2f2f2_9dp"
+                    android:drawableEnd="@drawable/icon_next_right"
+                    android:drawablePadding="1dp"
+                    android:gravity="center"
+                    android:paddingStart="7dp"
+                    android:paddingTop="2dp"
+                    android:paddingEnd="3dp"
+                    android:paddingBottom="2dp"
+                    android:text="更多"
+                    android:textColor="@color/color_999999"
+                    android:textSize="@dimen/sp_12"
+                    app:layout_constraintBottom_toBottomOf="@+id/tv_hot_album"
+                    app:layout_constraintRight_toRightOf="parent"
+                    app:layout_constraintTop_toTopOf="@+id/tv_hot_album" />
+
+                <androidx.recyclerview.widget.RecyclerView
+                    android:id="@+id/rv_hot_album"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="12dp"
+                    android:overScrollMode="never"
+                    android:paddingLeft="@dimen/dp_14"
+                    android:scrollbars="none"
+                    app:layout_constraintTop_toBottomOf="@+id/tv_hot_album" />
+
+            </androidx.constraintlayout.widget.ConstraintLayout>
+
+
+            <androidx.constraintlayout.widget.ConstraintLayout
+                android:id="@+id/cl_hot_track"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="@dimen/dp_18"
+                android:visibility="visible"
+                app:layout_constraintTop_toBottomOf="@+id/cl_hot_album">
+
+                <View
+                    android:id="@+id/tv_hot_track_line"
+                    android:layout_width="4dp"
+                    android:layout_height="17dp"
+                    android:layout_marginStart="14dp"
+                    android:background="@drawable/shape_course_title_tag_bg"
+                    app:layout_constraintBottom_toBottomOf="@+id/tv_hot_track"
+                    app:layout_constraintLeft_toLeftOf="parent"
+                    app:layout_constraintTop_toTopOf="@+id/tv_hot_track" />
+
+                <TextView
+                    android:id="@+id/tv_hot_track"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginLeft="@dimen/dp_6"
+                    android:gravity="center"
+                    android:text="热门曲目"
+                    android:textColor="@color/color_333333"
+                    android:textSize="@dimen/sp_18"
+                    android:textStyle="bold"
+                    app:layout_constraintLeft_toRightOf="@+id/tv_hot_track_line"
+                    app:layout_constraintTop_toTopOf="parent" />
+
+                <TextView
+                    android:id="@+id/tv_hot_track_more"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginRight="@dimen/dp_14"
+                    android:background="@drawable/shape_f2f2f2_9dp"
+                    android:drawableEnd="@drawable/icon_next_right"
+                    android:drawablePadding="1dp"
+                    android:gravity="center"
+                    android:paddingStart="7dp"
+                    android:paddingTop="2dp"
+                    android:paddingEnd="3dp"
+                    android:paddingBottom="2dp"
+                    android:text="更多"
+                    android:textColor="@color/color_999999"
+                    android:textSize="@dimen/sp_12"
+                    app:layout_constraintBottom_toBottomOf="@+id/tv_hot_track"
+                    app:layout_constraintRight_toRightOf="parent"
+                    app:layout_constraintTop_toTopOf="@+id/tv_hot_track" />
+
+                <androidx.recyclerview.widget.RecyclerView
+                    android:id="@+id/rv_hot_track"
+                    android:layout_width="match_parent"
+                    android:layout_height="239dp"
+                    android:layout_marginTop="12dp"
+                    android:overScrollMode="never"
+                    android:paddingLeft="@dimen/dp_14"
+                    android:scrollbars="none"
+                    app:layout_constraintTop_toBottomOf="@+id/tv_hot_track" />
+
+            </androidx.constraintlayout.widget.ConstraintLayout>
+
+
+            <View
+                android:id="@+id/tv_recommend_teacher_line"
+                android:layout_width="4dp"
+                android:layout_height="17dp"
+                android:layout_marginStart="14dp"
+                android:background="@drawable/shape_course_title_tag_bg"
+                app:layout_constraintBottom_toBottomOf="@+id/tv_recommend_teacher_title"
+                app:layout_constraintLeft_toLeftOf="parent"
+                app:layout_constraintTop_toTopOf="@+id/tv_recommend_teacher_title" />
+
+            <TextView
+                android:id="@+id/tv_recommend_teacher_title"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="@dimen/dp_6"
+                android:layout_marginTop="30dp"
+                android:gravity="center"
+                android:text="推荐达人"
+                android:textColor="@color/color_333333"
+                android:textSize="@dimen/sp_18"
+                android:textStyle="bold"
+                app:layout_constraintLeft_toRightOf="@+id/tv_recommend_teacher_line"
+                app:layout_constraintTop_toBottomOf="@+id/cl_hot_track" />
+
+            <TextView
+                android:id="@+id/tv_recommend_teacher_more"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginRight="@dimen/dp_14"
+                android:background="@drawable/shape_f2f2f2_9dp"
+                android:drawableEnd="@drawable/icon_next_right"
+                android:drawablePadding="1dp"
+                android:gravity="center"
+                android:paddingStart="7dp"
+                android:paddingTop="2dp"
+                android:paddingEnd="3dp"
+                android:paddingBottom="2dp"
+                android:text="更多"
+                android:textColor="@color/color_999999"
+                android:textSize="@dimen/sp_12"
+                app:layout_constraintBottom_toBottomOf="@+id/tv_recommend_teacher_title"
+                app:layout_constraintRight_toRightOf="parent"
+                app:layout_constraintTop_toTopOf="@+id/tv_recommend_teacher_title" />
+
+
+            <androidx.recyclerview.widget.RecyclerView
+                android:id="@+id/recyclerview_recommend_talent"
+                android:layout_width="match_parent"
+                android:layout_height="146dp"
+                android:layout_marginTop="12dp"
+                android:overScrollMode="never"
+                android:paddingLeft="@dimen/dp_14"
+                android:scrollbars="none"
+                app:layout_constraintTop_toBottomOf="@+id/tv_recommend_teacher_title" />
+
+            <androidx.constraintlayout.widget.ConstraintLayout
+                android:id="@+id/cl_video_course"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="@dimen/dp_30"
+                android:visibility="visible"
+                app:layout_constraintLeft_toLeftOf="parent"
+                app:layout_constraintTop_toBottomOf="@+id/recyclerview_recommend_talent">
+
+                <View
+                    android:id="@+id/tv_video_course_line"
+                    android:layout_width="4dp"
+                    android:layout_height="17dp"
+                    android:layout_marginStart="14dp"
+                    android:background="@drawable/shape_course_title_tag_bg"
+                    app:layout_constraintBottom_toBottomOf="@+id/tv_video_course_title"
+                    app:layout_constraintLeft_toLeftOf="parent"
+                    app:layout_constraintTop_toTopOf="@+id/tv_video_course_title" />
+
+                <TextView
+                    android:id="@+id/tv_video_course_title"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginLeft="@dimen/dp_6"
+                    android:gravity="center"
+                    android:text="精品视频课"
+                    android:textColor="@color/color_333333"
+                    android:textSize="@dimen/sp_16"
+                    android:textStyle="bold"
+                    app:layout_constraintLeft_toRightOf="@+id/tv_video_course_line"
+                    app:layout_constraintTop_toTopOf="parent" />
+
+                <TextView
+                    android:id="@+id/tv_video_course_more"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginRight="@dimen/dp_20"
+                    android:background="@drawable/shape_f2f2f2_9dp"
+                    android:drawableEnd="@drawable/icon_next_right"
+                    android:drawablePadding="1dp"
+                    android:gravity="center"
+                    android:paddingStart="7dp"
+                    android:paddingTop="2dp"
+                    android:paddingEnd="3dp"
+                    android:paddingBottom="2dp"
+                    android:text="更多"
+                    android:textColor="@color/color_999999"
+                    android:textSize="@dimen/sp_12"
+                    app:layout_constraintBottom_toBottomOf="@+id/tv_video_course_title"
+                    app:layout_constraintRight_toRightOf="parent"
+                    app:layout_constraintTop_toTopOf="@+id/tv_video_course_title" />
+
+
+                <androidx.recyclerview.widget.RecyclerView
+                    android:id="@+id/rv_video_course"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:overScrollMode="never"
+                    android:paddingTop="@dimen/dp_7"
+                    android:scrollbars="none"
+                    app:layout_constraintTop_toBottomOf="@+id/tv_video_course_title" />
+
+            </androidx.constraintlayout.widget.ConstraintLayout>
+
+            <androidx.constraintlayout.widget.ConstraintLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="30dp"
+                app:layout_constraintLeft_toLeftOf="parent"
+                app:layout_constraintTop_toBottomOf="@+id/cl_video_course">
+
+                <View
+                    android:id="@+id/view_talent_style_news"
+                    android:layout_width="63dp"
+                    android:layout_height="12dp"
+                    android:layout_marginTop="13dp"
+                    android:background="@drawable/shape_2dc7aa_6dp"
+                    app:layout_constraintLeft_toLeftOf="@+id/tv_talent_style_title"
+                    app:layout_constraintRight_toRightOf="@+id/tv_talent_style_title"
+                    app:layout_constraintTop_toTopOf="@+id/tv_talent_style_title" />
+
+                <TextView
+                    android:id="@+id/tv_talent_style_title"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginStart="24dp"
+                    android:includeFontPadding="false"
+                    android:text="达人风采"
+                    android:textColor="@color/color_333333"
+                    android:textSize="@dimen/sp_18"
+                    android:textStyle="bold"
+                    app:layout_constraintLeft_toLeftOf="parent"
+                    app:layout_constraintTop_toTopOf="parent" />
+
+
+                <View
+                    android:id="@+id/view_tab_hot_news"
+                    android:layout_width="63dp"
+                    android:layout_height="12dp"
+                    android:layout_marginTop="13dp"
+                    android:background="@drawable/shape_2dc7aa_6dp"
+                    android:visibility="gone"
+                    app:layout_constraintLeft_toLeftOf="@+id/tv_hot_news_title"
+                    app:layout_constraintRight_toRightOf="@+id/tv_hot_news_title"
+                    app:layout_constraintTop_toTopOf="@+id/tv_hot_news_title" />
+
+                <TextView
+                    android:id="@+id/tv_hot_news_title"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginStart="36dp"
+                    android:includeFontPadding="false"
+                    android:text="热门资讯"
+                    android:textColor="@color/color_999999"
+                    android:textSize="@dimen/sp_18"
+                    android:textStyle="bold"
+                    app:layout_constraintBottom_toBottomOf="@+id/tv_talent_style_title"
+                    app:layout_constraintLeft_toRightOf="@+id/tv_talent_style_title"
+                    app:layout_constraintTop_toTopOf="@+id/tv_talent_style_title" />
+
+                <androidx.viewpager2.widget.ViewPager2
+                    android:id="@+id/view_pager_bottom"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="18dp"
+                    android:overScrollMode="never"
+                    android:scrollbars="none"
+                    app:layout_constraintLeft_toLeftOf="parent"
+                    app:layout_constraintTop_toBottomOf="@+id/tv_talent_style_title" />
+            </androidx.constraintlayout.widget.ConstraintLayout>
+        </androidx.constraintlayout.widget.ConstraintLayout>
+    </androidx.core.widget.NestedScrollView>
 </androidx.constraintlayout.widget.ConstraintLayout>