Bladeren bron

添加学生端首页金刚位indicator

Pq 2 jaren geleden
bovenliggende
commit
89c8feeea2

+ 5 - 0
BaseLibrary/src/main/res/drawable/shape_2dc7aa_3dp.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="3dp"/>
+</shape>

+ 5 - 0
BaseLibrary/src/main/res/drawable/shape_d8d8d8_3dp.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_d8d8d8"/>
+    <corners android:radius="3dp"/>
+</shape>

+ 17 - 11
student/src/main/java/com/cooleshow/student/ui/main/NewHomeFragment.java

@@ -5,6 +5,7 @@ import android.animation.ValueAnimator;
 import android.text.TextUtils;
 import android.util.Log;
 import android.view.View;
+import android.view.ViewGroup;
 import android.widget.ImageView;
 
 import com.alibaba.android.arouter.launcher.ARouter;
@@ -74,6 +75,7 @@ import java.util.Date;
 import java.util.List;
 
 import androidx.annotation.NonNull;
+import androidx.constraintlayout.widget.ConstraintLayout;
 import androidx.core.widget.NestedScrollView;
 import androidx.fragment.app.Fragment;
 import androidx.recyclerview.widget.GridLayoutManager;
@@ -109,6 +111,7 @@ public class NewHomeFragment extends BaseMVPFragment<FragmentNewHomeLayoutBindin
     private HotNewsFragment mHotNewsFragment;
     private ValueAnimator bottomTabValueAnimator;
     private boolean isCollapsed = false;//控制底部tab
+    private int indicatorWidth = 0;//金刚位indicator宽度
 
     private ViewPager2.OnPageChangeCallback onPageChangeCallback = new ViewPager2.OnPageChangeCallback() {
         @Override
@@ -132,6 +135,7 @@ public class NewHomeFragment extends BaseMVPFragment<FragmentNewHomeLayoutBindin
     protected void initView(View rootView) {
         Utils.setHeadView(mViewBinding.viewStatusBar, requireContext(), SizeUtils.dp2px(3.5f));
         banner = mViewBinding.banner;
+        indicatorWidth = SizeUtils.dp2px(18);
         refreshLayout = mViewBinding.refreshLayout;
         mViewBinding.bgAnnouncement.setOnClickListener(this);
         mViewBinding.bgAnnouncement2.setOnClickListener(this);
@@ -330,17 +334,7 @@ public class NewHomeFragment extends BaseMVPFragment<FragmentNewHomeLayoutBindin
         mViewBinding.viewpagerMenu.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
             @Override
             public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
-                position = position % fragments.size();// 需要对position的值进行重新赋值,否则会造成数组越界
-                // 更新小圆点的显示
-//                for (int i = 0; i < fragments.size(); i++) {
-//                    ImageView iv = (ImageView) llIndicator.getChildAt(i);
-//                    // 当前滑到的是那一页就让第几个小圆点处于选中状态
-//                    if (position == i) {
-//                        iv.setImageResource(R.drawable.bg_2dc7aa_indicator);
-//                    } else {
-//                        iv.setImageResource(R.drawable.bg_f2f2f2_indicator);
-//                    }
-//                }
+                mViewBinding.indicatorMainLine.setTranslationX(indicatorWidth * (position + positionOffset));
             }
 
             @Override
@@ -503,13 +497,25 @@ public class NewHomeFragment extends BaseMVPFragment<FragmentNewHomeLayoutBindin
         }
         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);
         mViewBinding.viewpagerMenu.setVisibility(View.VISIBLE);
         mMenuPagerAdapter.notifyDataSetChanged();
     }
 
+    private void initIndicator() {
+        ViewGroup.LayoutParams params = mViewBinding.rlIndicator.getLayoutParams();
+        params.width = fragments.size() * indicatorWidth;
+        mViewBinding.rlIndicator.setLayoutParams(params);
+        mViewBinding.indicatorMainLine.setTranslationX(0);
+    }
+
     @Override
     public void hotAlbumListSuccess(HotAlbumBean homeHotAlbumListBean) {
         if (isDetached() || homeHotAlbumListBean == null) {

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

@@ -245,6 +245,27 @@
                             app:layout_constraintLeft_toLeftOf="parent"
                             app:layout_constraintTop_toBottomOf="@+id/bg_announcement" />
 
+
+                        <FrameLayout
+                            android:visibility="gone"
+                            android:layout_marginTop="7dp"
+                            android:id="@+id/rl_indicator"
+                            android:layout_width="wrap_content"
+                            android:layout_height="3dp"
+                            android:layout_gravity="center_horizontal"
+                            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>
+
                         <View
                             app:layout_goneMarginTop="21dp"
                             android:id="@+id/view_line2"