浏览代码

增加学生端新首页UI,增加部分按钮点击事件

Pq 2 年之前
父节点
当前提交
4ba7137d2d

+ 45 - 0
student/src/main/java/com/cooleshow/student/adapter/HomeHotNewsAdapter.java

@@ -0,0 +1,45 @@
+package com.cooleshow.student.adapter;
+
+import android.view.View;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import com.chad.library.adapter.base.BaseQuickAdapter;
+import com.chad.library.adapter.base.viewholder.BaseViewHolder;
+import com.cooleshow.base.utils.GlideUtils;
+import com.cooleshow.student.R;
+import com.cooleshow.student.bean.AppHomeBean;
+
+import java.util.List;
+
+/**
+ * 创建日期:2022/5/27 10:37
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public class HomeHotNewsAdapter extends BaseQuickAdapter<AppHomeBean.ItemBean, BaseViewHolder> {
+
+    public HomeHotNewsAdapter() {
+        super(R.layout.item_home_hot_news);
+    }
+
+
+    @Override
+    protected void convert(BaseViewHolder helper, AppHomeBean.ItemBean item) {
+        ImageView im_pic = helper.getView(R.id.im_pic);
+        GlideUtils.INSTANCE.loadImage(getContext(), item.coverImage, im_pic);
+        //名称
+        TextView tv_content = helper.getView(R.id.tv_content);
+        tv_content.setText(item.title);
+        //日期
+        TextView tv_date = helper.getView(R.id.tv_date);
+        tv_date.setText(item.createTime);
+        //描述
+        helper.setText(R.id.tv_des, item.content);
+        int position = helper.getLayoutPosition();
+        View lineView = helper.getView(R.id.view_line);
+        lineView.setVisibility(position == 0 ? View.GONE : View.VISIBLE);
+    }
+
+}

+ 1 - 0
student/src/main/java/com/cooleshow/student/adapter/HomeWonderfulInfoAdapter.java

@@ -17,6 +17,7 @@ import java.util.List;
  * @author Ryan
  * 类说明:
  */
+@Deprecated
 public class HomeWonderfulInfoAdapter extends BaseQuickAdapter<AppHomeBean.ItemBean, BaseViewHolder> {
 
     public HomeWonderfulInfoAdapter(List<AppHomeBean.ItemBean> data) {

+ 70 - 0
student/src/main/java/com/cooleshow/student/ui/main/HotNewsFragment.java

@@ -0,0 +1,70 @@
+package com.cooleshow.student.ui.main;
+
+import android.util.Log;
+import android.view.View;
+
+import com.alibaba.android.arouter.launcher.ARouter;
+import com.chad.library.adapter.base.BaseQuickAdapter;
+import com.chad.library.adapter.base.listener.OnItemClickListener;
+import com.cooleshow.base.common.WebConstants;
+import com.cooleshow.base.router.RouterPath;
+import com.cooleshow.base.ui.fragment.BaseFragment;
+import com.cooleshow.student.adapter.HomeHotNewsAdapter;
+import com.cooleshow.student.bean.AppHomeBean;
+import com.cooleshow.student.databinding.FragmentHomeHotNewsLayoutBinding;
+
+import java.util.List;
+
+import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.LinearLayoutManager;
+
+/**
+ * Author by pq, Date on 2022/8/31.
+ */
+public class HotNewsFragment extends BaseFragment<FragmentHomeHotNewsLayoutBinding> {
+
+    private HomeHotNewsAdapter mHomeHotNewsAdapter;
+    private List<AppHomeBean.ItemBean> datas;
+
+    @Override
+    protected FragmentHomeHotNewsLayoutBinding getLayoutView() {
+        return FragmentHomeHotNewsLayoutBinding.inflate(getLayoutInflater());
+    }
+
+    @Override
+    protected void initView(View rootView) {
+        mHomeHotNewsAdapter = getAdapter();
+        mViewBinding.recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
+        mViewBinding.recyclerView.setAdapter(mHomeHotNewsAdapter);
+        mHomeHotNewsAdapter.setOnItemClickListener(new OnItemClickListener() {
+            @Override
+            public void onItemClick(@NonNull BaseQuickAdapter<?, ?> adapter, @NonNull View view, int position) {
+                if (position < mHomeHotNewsAdapter.getData().size()) {
+                    AppHomeBean.ItemBean item = mHomeHotNewsAdapter.getData().get(position);
+                    ARouter.getInstance()
+                            .build(RouterPath.WebCenter.ACTIVITY_HTML)
+                            .withString(WebConstants.WEB_URL, WebConstants.STUDENT_SPECIAL_DETAIL + item.id)
+                            .navigation();
+                }
+            }
+        });
+    }
+
+    @Override
+    protected void initData() {
+
+    }
+
+    public void setData(List<AppHomeBean.ItemBean> itemBeans) {
+        if (getAdapter() != null) {
+            mHomeHotNewsAdapter.setNewInstance(itemBeans);
+        }
+    }
+
+    private HomeHotNewsAdapter getAdapter() {
+        if (mHomeHotNewsAdapter == null) {
+            mHomeHotNewsAdapter = new HomeHotNewsAdapter();
+        }
+        return mHomeHotNewsAdapter;
+    }
+}

+ 70 - 6
student/src/main/java/com/cooleshow/student/ui/main/NewHomeFragment.java

@@ -15,6 +15,7 @@ import com.cooleshow.base.utils.SizeUtils;
 import com.cooleshow.base.utils.TimeUtils;
 import com.cooleshow.base.utils.UiUtils;
 import com.cooleshow.base.utils.Utils;
+import com.cooleshow.base.utils.helper.WebStartHelper;
 import com.cooleshow.base.widgets.CommonItemDecoration;
 import com.cooleshow.student.R;
 import com.cooleshow.student.adapter.HomeBottomPageAdapter;
@@ -44,7 +45,9 @@ import com.cooleshow.student.widgets.HomeHotMusicSheetItemDecoration;
 import com.scwang.smart.refresh.layout.SmartRefreshLayout;
 import com.youth.banner.Banner;
 import com.youth.banner.adapter.BannerImageAdapter;
+import com.youth.banner.config.IndicatorConfig;
 import com.youth.banner.holder.BannerImageHolder;
+import com.youth.banner.indicator.RectangleIndicator;
 import com.youth.banner.listener.OnBannerListener;
 
 import java.util.ArrayList;
@@ -80,6 +83,7 @@ public class NewHomeFragment extends BaseMVPFragment<FragmentNewHomeLayoutBindin
     private HomeRecommendTalentAdapter mRecommendTalentAdapter;
     private NewHomeVideoCourseAdapter mHomeVideoCourseAdapter;
     private TalentStyleFragment mTalentStyleFragment;
+    private HotNewsFragment mHotNewsFragment;
 
     @Override
     protected FragmentNewHomeLayoutBinding getLayoutView() {
@@ -101,6 +105,10 @@ public class NewHomeFragment extends BaseMVPFragment<FragmentNewHomeLayoutBindin
         mViewBinding.ivScan.setOnClickListener(this);
         mViewBinding.imMessage.setOnClickListener(this);
         mViewBinding.flCourseEnter.setOnClickListener(this);
+        mViewBinding.tvRecommendTeacherMore.setOnClickListener(this);
+        mViewBinding.tvHotAlbumMore.setOnClickListener(this);
+        mViewBinding.tvHotTrackMore.setOnClickListener(this);
+        mViewBinding.tvVideoCourseMore.setOnClickListener(this);
     }
 
     @Override
@@ -148,10 +156,11 @@ public class NewHomeFragment extends BaseMVPFragment<FragmentNewHomeLayoutBindin
         HomeBottomPageAdapter homeBottomPageAdapter = new HomeBottomPageAdapter(this);
         ArrayList<Fragment> bottomFragments = new ArrayList<>();
         mTalentStyleFragment = new TalentStyleFragment();
-        Fragment fragment =new Fragment();
+        mHotNewsFragment = new HotNewsFragment();
         bottomFragments.add(mTalentStyleFragment);
-        bottomFragments.add(fragment);
+        bottomFragments.add(mHotNewsFragment);
         homeBottomPageAdapter.setFragments(bottomFragments);
+        mViewBinding.viewPagerBottom.setOffscreenPageLimit(bottomFragments.size());
         mViewBinding.viewPagerBottom.setAdapter(homeBottomPageAdapter);
 
 
@@ -169,10 +178,10 @@ public class NewHomeFragment extends BaseMVPFragment<FragmentNewHomeLayoutBindin
             }
         };
         banner.setAdapter(mBannerImageAdapter, true).addBannerLifecycleObserver(this)//添加生命周期观察者
-                .setIntercept(true) //是否要拦截事件
                 .isAutoLoop(true)
-                .removeIndicator()
-//                .setIndicator(new CircleIndicator(getContext())) //圆形指示器 还支持条形指示器等
+                .setIndicatorGravity(IndicatorConfig.Direction.RIGHT)
+//                .removeIndicator()
+                .setIndicator(new RectangleIndicator(getContext())) //圆形指示器 还支持条形指示器等
                 .setOnBannerListener(new OnBannerListener() {
                     @Override
                     public void OnBannerClick(Object data, int position) {
@@ -203,6 +212,7 @@ public class NewHomeFragment extends BaseMVPFragment<FragmentNewHomeLayoutBindin
             presenter.appHome();
             presenter.userAccountPage();
             presenter.getHotMusicSheetList();
+            presenter.getTalentStyle();
         });
 
         mHomeVideoCourseAdapter.setOnItemClickListener((adapter, view, position) -> {
@@ -301,6 +311,14 @@ public class NewHomeFragment extends BaseMVPFragment<FragmentNewHomeLayoutBindin
         bindBanner(appHomeBean.banner);
         //后台配置menu
         initMenu(appHomeBean.appMenu);
+        //热门资讯
+        bindHotNews(appHomeBean.information);
+    }
+
+    private void bindHotNews(List<AppHomeBean.ItemBean> information) {
+        if (mHotNewsFragment != null) {
+            mHotNewsFragment.setData(information);
+        }
     }
 
     /**
@@ -467,7 +485,22 @@ public class NewHomeFragment extends BaseMVPFragment<FragmentNewHomeLayoutBindin
 
     @Override
     public void queryCountOfUnreadSuccess(List<CountOfUnreadBean> data) {
-
+        if (isDetached()) {
+            return;
+        }
+        if (null == data || data.size() == 0) {
+            mViewBinding.viewUnreadMessage.setVisibility(View.GONE);
+            return;
+        }
+        int totalCount = 0;
+        for (CountOfUnreadBean datum : data) {
+            totalCount += datum.value;
+        }
+        if (totalCount > 0) {
+            mViewBinding.viewUnreadMessage.setVisibility(View.VISIBLE);
+        } else {
+            mViewBinding.viewUnreadMessage.setVisibility(View.GONE);
+        }
     }
 
     @Override
@@ -550,6 +583,37 @@ public class NewHomeFragment extends BaseMVPFragment<FragmentNewHomeLayoutBindin
                     .navigation();
             return;
         }
+
+        if (id == R.id.tv_recommend_teacher_more) {
+            //老师风采
+            ARouter.getInstance()
+                    .build(RouterPath.WebCenter.ACTIVITY_HTML)
+                    .withString(WebConstants.WEB_URL, WebConstants.STUDENT_TEACHER_ELEGANT)
+                    .navigation();
+            return;
+        }
+        if (id == R.id.tv_hot_album_more) {
+            //热门专辑
+            ARouter.getInstance()
+                    .build(RouterPath.WebCenter.ACTIVITY_HTML)
+                    .withString(WebConstants.WEB_URL, WebConstants.STUDENT_MUSIC_ALBUM)
+                    .navigation();
+            return;
+        }
+        if (id == R.id.tv_hot_track_more) {
+            //热门曲目更多
+            WebStartHelper.startHotMusicSheetList();
+            return;
+        }
+
+        if (id == R.id.tv_video_course_more) {
+            //视频课更多
+            ARouter.getInstance()
+                    .build(RouterPath.WebCenter.ACTIVITY_HTML)
+                    .withString(WebConstants.WEB_URL, WebConstants.STUDENT_VIDEO_CLASS)
+                    .navigation();
+            return;
+        }
     }
 
     /**

+ 18 - 0
student/src/main/java/com/cooleshow/student/ui/main/TalentStyleFragment.java

@@ -2,6 +2,11 @@ package com.cooleshow.student.ui.main;
 
 import android.view.View;
 
+import com.alibaba.android.arouter.launcher.ARouter;
+import com.chad.library.adapter.base.BaseQuickAdapter;
+import com.chad.library.adapter.base.listener.OnItemClickListener;
+import com.cooleshow.base.common.WebConstants;
+import com.cooleshow.base.router.RouterPath;
 import com.cooleshow.base.ui.fragment.BaseFragment;
 import com.cooleshow.student.adapter.HomeTalentStyleAdapter;
 import com.cooleshow.student.bean.HomeStyleBean;
@@ -10,6 +15,7 @@ import com.cooleshow.student.databinding.FragmentHomeTalentLayoutBinding;
 import java.util.ArrayList;
 import java.util.List;
 
+import androidx.annotation.NonNull;
 import androidx.recyclerview.widget.RecyclerView;
 import androidx.recyclerview.widget.StaggeredGridLayoutManager;
 
@@ -36,6 +42,18 @@ public class TalentStyleFragment extends BaseFragment<FragmentHomeTalentLayoutBi
         recyclerView.setLayoutManager(staggeredGridLayoutManager);
         mTalentStyleAdapter = new HomeTalentStyleAdapter();
         recyclerView.setAdapter(mTalentStyleAdapter);
+        mTalentStyleAdapter.setOnItemClickListener(new OnItemClickListener() {
+            @Override
+            public void onItemClick(@NonNull BaseQuickAdapter<?, ?> adapter, @NonNull View view, int position) {
+                if (position < mTalentStyleAdapter.getData().size()) {
+                    HomeStyleBean.RowsBean item = mTalentStyleAdapter.getData().get(position);
+                    ARouter.getInstance()
+                            .build(RouterPath.WebCenter.ACTIVITY_HTML)
+                            .withString(WebConstants.WEB_URL, WebConstants.STUDENT_TEACHER_HOME + item.userId)
+                            .navigation();
+                }
+            }
+        });
     }
 
     public void setData(List<HomeStyleBean.RowsBean> data) {

+ 15 - 0
student/src/main/res/layout/fragment_home_hot_news_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="match_parent">
+
+    <androidx.recyclerview.widget.RecyclerView
+        android:id="@+id/recyclerView"
+        android:background="@drawable/bg_white_10dp"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginStart="14dp"
+        android:layout_marginEnd="14dp"
+        android:overScrollMode="never"
+        android:scrollbars="none" />
+</FrameLayout>

+ 21 - 3
student/src/main/res/layout/fragment_new_home_layout.xml

@@ -96,6 +96,18 @@
         app:layout_constraintRight_toRightOf="parent"
         app:layout_constraintTop_toTopOf="@+id/iv_logo" />
 
+    <View
+        android:id="@+id/view_unread_message"
+        android:layout_width="@dimen/dp_7"
+        android:layout_height="@dimen/dp_7"
+        android:layout_marginTop="5dp"
+        android:layout_marginRight="5dp"
+        android:background="@drawable/bg_red_ovil"
+        android:visibility="gone"
+        app:layout_constraintRight_toRightOf="@+id/im_message"
+        app:layout_constraintTop_toTopOf="@+id/im_message"
+        tools:visibility="visible" />
+
     <com.scwang.smart.refresh.layout.SmartRefreshLayout
         android:id="@+id/refreshLayout"
         android:layout_width="match_parent"
@@ -134,9 +146,15 @@
                     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:banner_indicator_gravity="right"
+                    app:banner_indicator_height="5dp"
+                    app:banner_indicator_marginBottom="8dp"
+                    app:banner_indicator_marginRight="12dp"
+                    app:banner_indicator_normal_color="@color/white"
+                    app:banner_indicator_normal_width="5dp"
+                    app:banner_indicator_selected_color="@color/white"
+                    app:banner_indicator_selected_width="12dp"
+                    app:banner_radius="10dp"
                     app:layout_constraintLeft_toLeftOf="parent"
                     app:layout_constraintTop_toTopOf="parent" />
 

+ 73 - 0
student/src/main/res/layout/item_home_hot_news.xml

@@ -0,0 +1,73 @@
+<?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:paddingBottom="20dp">
+
+    <com.cooleshow.base.widgets.QMUIRadiusImageView
+        android:id="@+id/im_pic"
+        android:layout_width="@dimen/dp_108"
+        android:layout_height="@dimen/dp_80"
+        android:layout_marginLeft="@dimen/dp_11"
+        android:layout_marginTop="20dp"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintTop_toTopOf="parent"
+        app:qmui_corner_radius="@dimen/dp_5" />
+
+    <TextView
+        android:id="@+id/tv_content"
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:layout_marginStart="13dp"
+        android:layout_marginTop="@dimen/dp_1"
+        android:layout_marginEnd="13dp"
+        android:ellipsize="end"
+        android:maxLines="2"
+        android:textColor="@color/color_333333"
+        android:textSize="@dimen/sp_14"
+        app:layout_constraintBottom_toTopOf="@+id/tv_des"
+        app:layout_constraintLeft_toRightOf="@+id/im_pic"
+        app:layout_constraintRight_toRightOf="parent"
+        app:layout_constraintTop_toTopOf="@+id/im_pic"
+        app:layout_constraintVertical_chainStyle="packed"
+        tools:text="多地真题盘点一起看多地真题盘点一起看多地真题盘点一起看多地真题盘点一起看多地真题盘点一起看多地真题盘点一起看多地真题盘点一起看多地真题盘点一起看多地真题盘点一起看多地真题盘点一起看多地真题盘点一起看多地真题盘点一起看多地真题盘点一起看多地真题盘点一起看!" />
+
+    <TextView
+        android:id="@+id/tv_des"
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="@dimen/dp_4"
+        android:layout_marginRight="@dimen/dp_14"
+        android:ellipsize="end"
+        android:maxLines="2"
+        android:textColor="@color/color_999999"
+        android:textSize="@dimen/sp_12"
+        app:layout_constraintBottom_toTopOf="@+id/tv_date"
+        app:layout_constraintLeft_toLeftOf="@+id/tv_content"
+        app:layout_constraintRight_toRightOf="parent"
+        app:layout_constraintTop_toBottomOf="@+id/tv_content"
+        tools:text="多地真题盘点一起看多地真题盘点一起看多地真题盘点一起看多地真题盘点一起看多地真题盘点一起看多地真题盘点一起看多地真题盘点一起看!" />
+
+    <TextView
+        android:id="@+id/tv_date"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="8dp"
+        android:textColor="@color/color_999999"
+        android:textSize="@dimen/sp_11"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintLeft_toLeftOf="@+id/tv_content"
+        app:layout_constraintTop_toBottomOf="@+id/tv_des"
+        tools:text="2月28日 19:30" />
+
+    <View
+        android:id="@+id/view_line"
+        android:layout_width="match_parent"
+        android:layout_height="0.5dp"
+        android:layout_marginStart="11dp"
+        android:layout_marginEnd="11dp"
+        android:background="@color/color_e8e8e8"
+        app:layout_constraintTop_toTopOf="parent" />
+</androidx.constraintlayout.widget.ConstraintLayout>