Browse Source

setOffScreenPageLimit supported.

zhpanvip 5 years ago
parent
commit
d571f5baf3

+ 9 - 2
bannerview/src/main/java/com/zhpan/bannerview/BannerViewPager.java

@@ -135,7 +135,7 @@ public class BannerViewPager<T, VH extends ViewHolder> extends RelativeLayout im
         int size = mBannerPagerAdapter.getListSize();
         currentPosition = BannerUtils.getRealPosition(isCanLoop(), position, size);
         if (size > 0 && isCanLoop() && position == 0 || position == MAX_VALUE - 1) {
-            setCurrentItem(currentPosition,false);
+            setCurrentItem(currentPosition, false);
         }
         if (mOnPageChangeListener != null)
             mOnPageChangeListener.onPageSelected(currentPosition);
@@ -259,6 +259,7 @@ public class BannerViewPager<T, VH extends ViewHolder> extends RelativeLayout im
         mViewPager.setScrollDuration(bannerOptions.getScrollDuration());
         mViewPager.disableTouchScroll(bannerOptions.isDisableTouchScroll());
         mViewPager.setFirstLayout(true);
+        mViewPager.setOffscreenPageLimit(mBannerManager.bannerOptions().getOffScreenPageLimit());
         initPageStyle();
         startLoop();
     }
@@ -302,7 +303,8 @@ public class BannerViewPager<T, VH extends ViewHolder> extends RelativeLayout im
         params.rightMargin = params.leftMargin;
         mViewPager.setOverlapStyle(overlap);
         mViewPager.setPageMargin(overlap ? -bannerOptions.getPageMargin() : bannerOptions.getPageMargin());
-        mViewPager.setOffscreenPageLimit(2);
+        int offScreenPageLimit = bannerOptions.getOffScreenPageLimit();
+        mViewPager.setOffscreenPageLimit(offScreenPageLimit > 2 ? offScreenPageLimit : 2);
         setPageTransformer(new ScaleInTransformer(scale));
     }
 
@@ -728,6 +730,11 @@ public class BannerViewPager<T, VH extends ViewHolder> extends RelativeLayout im
         return mViewPager;
     }
 
+    public BannerViewPager<T, VH> setOffScreenPageLimit(int offScreenPageLimit) {
+        mBannerManager.bannerOptions().setOffScreenPageLimit(offScreenPageLimit);
+        return this;
+    }
+
 
     public BannerViewPager<T, VH> setIndicatorMargin(int left, int top, int right, int bottom) {
         mBannerManager.bannerOptions().setIndicatorMargin(left, top, right, bottom);

+ 1 - 1
bannerview/src/main/java/com/zhpan/bannerview/adapter/BannerPagerAdapter.java

@@ -28,7 +28,7 @@ public class BannerPagerAdapter<T, VH extends ViewHolder> extends PagerAdapter {
 
     private PageClickListener mPageClickListener;
 
-    public static final int MAX_VALUE = 200;
+    public static final int MAX_VALUE = 500;
 
     public BannerPagerAdapter(List<T> list, HolderCreator<VH> holderCreator) {
         mList = new ArrayList<>();

+ 10 - 0
bannerview/src/main/java/com/zhpan/bannerview/manager/BannerOptions.java

@@ -19,6 +19,8 @@ public class BannerOptions {
 
     public static final int DEFAULT_SCROLL_DURATION = 500;
 
+    private int offScreenPageLimit;
+
     private int interval;
 
     private int currentPosition;
@@ -234,6 +236,14 @@ public class BannerOptions {
         mIndicatorOptions.setSlideProgress(0);
     }
 
+    public int getOffScreenPageLimit() {
+        return offScreenPageLimit;
+    }
+
+    public void setOffScreenPageLimit(int offScreenPageLimit) {
+        this.offScreenPageLimit = offScreenPageLimit;
+    }
+
     public static class IndicatorMargin {
 
         private int left, right, top, bottom;