Ver código fonte

添加老师端首页金刚位indicator

Pq 2 anos atrás
pai
commit
a8a932a842

+ 27 - 21
student/src/main/java/com/cooleshow/student/ui/main/NewHomeFragment.java

@@ -483,30 +483,36 @@ public class NewHomeFragment extends BaseMVPFragment<FragmentNewHomeLayoutBindin
         if (mMenuPagerAdapter == null || mViewBinding.viewpagerMenu == null) {
             return;
         }
-        fragments.clear();
-        int count = menuList.size() / 5;
-        if (menuList.size() % 5 > 0) {
-            count++;
-        }
-        for (int i = 0; i < count; i++) {
-            List<AppHomeBean.ItemBean> dataList = new ArrayList<>();
-            for (int j = i * 5; j < menuList.size() && j < (i + 1) * 5; j++) {
-                dataList.add(menuList.get(j));
+        if (menuList != null && menuList.size() != 0) {
+            fragments.clear();
+            int count = menuList.size() / 5;
+            if (menuList.size() % 5 > 0) {
+                count++;
             }
-            fragments.add(HomeMenuFragment.newInstance(dataList));
-        }
-        if (fragments.size() == 0) {
+            for (int i = 0; i < count; i++) {
+                List<AppHomeBean.ItemBean> dataList = new ArrayList<>();
+                for (int j = i * 5; j < menuList.size() && j < (i + 1) * 5; j++) {
+                    dataList.add(menuList.get(j));
+                }
+                fragments.add(HomeMenuFragment.newInstance(dataList));
+            }
+            if (fragments.size() == 0) {
+                mViewBinding.viewpagerMenu.setVisibility(View.GONE);
+                mViewBinding.rlIndicator.setVisibility(View.GONE);
+                return;
+            } else {
+                mViewBinding.viewpagerMenu.setVisibility(View.VISIBLE);
+                mViewBinding.rlIndicator.setVisibility(View.VISIBLE);
+            }
+            initIndicator();
+            mMenuPagerAdapter.setFragments(fragments);
+            mMenuPagerAdapter.notifyDataSetChanged();
+        } else {
+            fragments.clear();
+            mMenuPagerAdapter.notifyDataSetChanged();
             mViewBinding.viewpagerMenu.setVisibility(View.GONE);
             mViewBinding.rlIndicator.setVisibility(View.GONE);
-            return;
-        }else{
-            mViewBinding.viewpagerMenu.setVisibility(View.VISIBLE);
-            mViewBinding.rlIndicator.setVisibility(View.VISIBLE);
-        }
-        initIndicator();
-        mMenuPagerAdapter.setFragments(fragments);
-        mViewBinding.viewpagerMenu.setVisibility(View.VISIBLE);
-        mMenuPagerAdapter.notifyDataSetChanged();
+        }
     }
 
     private void initIndicator() {

+ 48 - 9
teacher/src/main/java/com/cooleshow/teacher/ui/main/NewHomeFragment.java

@@ -4,6 +4,7 @@ import android.content.Intent;
 import android.text.TextUtils;
 import android.view.Gravity;
 import android.view.View;
+import android.view.ViewGroup;
 import android.widget.TextView;
 
 import com.alibaba.android.arouter.launcher.ARouter;
@@ -71,6 +72,7 @@ import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 import androidx.fragment.app.Fragment;
 import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.viewpager.widget.ViewPager;
 
 /**
  * Author by pq, Date on 2022/8/8.
@@ -98,11 +100,13 @@ public class NewHomeFragment extends BaseMVPFragment<FragmentNewHomeLayoutBindin
     private HomeHotMusicSheetAdapter mRecommendAdapter;
     private HomeHotMusicSheetAdapter mLatestAdapter;
     private String currentSubjectId = "";
+    private int indicatorWidth = 0;//金刚位indicator宽度
 
     @Override
     protected void initView(View rootView) {
         Utils.setHeadView(mViewBinding.viewStatusBar, requireContext(), 0);
         refreshLayout = mViewBinding.refreshLayout;
+        indicatorWidth = SizeUtils.dp2px(18);
     }
 
     @Override
@@ -218,6 +222,23 @@ public class NewHomeFragment extends BaseMVPFragment<FragmentNewHomeLayoutBindin
                 }
             }
         });
+
+        mViewBinding.viewpagerMenu.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
+            @Override
+            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
+                mViewBinding.indicatorMainLine.setTranslationX(indicatorWidth * (position + positionOffset));
+            }
+
+            @Override
+            public void onPageSelected(int position) {
+
+            }
+
+            @Override
+            public void onPageScrollStateChanged(int state) {
+
+            }
+        });
     }
 
     @Override
@@ -391,6 +412,20 @@ public class NewHomeFragment extends BaseMVPFragment<FragmentNewHomeLayoutBindin
             refreshLayout.finishRefresh();
         }
         bindBanner(homeMenuBean.banner);
+        initHomeMenu(homeMenuBean);
+
+        if (getActivity() instanceof MainActivity) {
+            MainActivity mainActivity = (MainActivity) getActivity();
+            if (homeMenuBean.suspension != null && homeMenuBean.suspension.size() > 0) {
+                HomeMenuBean.ItemBean itemBean = homeMenuBean.suspension.get(0);
+                mainActivity.showFloatView(itemBean.linkUrl, itemBean.coverImage);
+            } else {
+                mainActivity.hideFloatView();
+            }
+        }
+    }
+
+    private void initHomeMenu(HomeMenuBean homeMenuBean) {
         if (homeMenuBean != null && homeMenuBean.appMenu != null && homeMenuBean.appMenu.size() > 0) {
             mViewBinding.flTopMenu.setVisibility(View.VISIBLE);
             fragments.clear();
@@ -408,6 +443,13 @@ public class NewHomeFragment extends BaseMVPFragment<FragmentNewHomeLayoutBindin
                 }
                 fragments.add(HomeMenuFragment.newInstance(dataList));
             }
+            if (fragments.size() == 0) {
+                mViewBinding.flTopMenu.setVisibility(View.GONE);
+                return;
+            } else {
+                mViewBinding.flTopMenu.setVisibility(View.VISIBLE);
+            }
+            initIndicator();
             menuAdapter.setFragments(fragments);
             menuAdapter.notifyDataSetChanged();
         } else {
@@ -415,16 +457,13 @@ public class NewHomeFragment extends BaseMVPFragment<FragmentNewHomeLayoutBindin
             menuAdapter.notifyDataSetChanged();
             mViewBinding.flTopMenu.setVisibility(View.GONE);
         }
+    }
 
-        if (getActivity() instanceof MainActivity) {
-            MainActivity mainActivity = (MainActivity) getActivity();
-            if (homeMenuBean.suspension != null && homeMenuBean.suspension.size() > 0) {
-                HomeMenuBean.ItemBean itemBean = homeMenuBean.suspension.get(0);
-                mainActivity.showFloatView(itemBean.linkUrl, itemBean.coverImage);
-            } else {
-                mainActivity.hideFloatView();
-            }
-        }
+    private void initIndicator() {
+        ViewGroup.LayoutParams params = mViewBinding.rlIndicator.getLayoutParams();
+        params.width = fragments.size() * indicatorWidth;
+        mViewBinding.rlIndicator.setLayoutParams(params);
+        mViewBinding.indicatorMainLine.setTranslationX(0);
     }
 
     @Override

+ 20 - 0
teacher/src/main/res/layout/fragment_new_home_layout.xml

@@ -390,6 +390,26 @@
                         android:layout_height="@dimen/dp_90"
                         android:overScrollMode="never"
                         android:scrollbars="none" />
+
+                    <FrameLayout
+                        android:visibility="visible"
+                        android:layout_marginBottom="5dp"
+                        android:id="@+id/rl_indicator"
+                        android:layout_width="wrap_content"
+                        android:layout_height="3dp"
+                        android:layout_gravity="center_horizontal|bottom"
+                        android:background="@drawable/shape_d8d8d8_3dp"
+                        app:layout_constraintEnd_toEndOf="parent"
+                        app:layout_constraintStart_toStartOf="parent"
+                        app:layout_constraintTop_toBottomOf="@id/viewpager_menu">
+
+                        <View
+                            android:id="@+id/indicator_main_line"
+                            android:layout_width="18dp"
+                            android:layout_height="3dp"
+                            android:layout_centerVertical="true"
+                            android:background="@drawable/shape_2dc7aa_3dp" />
+                    </FrameLayout>
                 </androidx.cardview.widget.CardView>
 
                 <androidx.cardview.widget.CardView