소스 검색

Fix bug #31 on JCenter

zhpanvip 5 년 전
부모
커밋
2efe9db3fa

+ 1 - 1
bannerview/build.gradle

@@ -37,7 +37,7 @@ dependencies {
     implementation 'com.android.support:appcompat-v7:27.1.1'
 }
 
-version = "2.4.3"
+version = "2.4.3.1"
 def siteUrl = 'https://github.com/zhpanvip/BannerViewPager'      // 项目的主页
 def gitUrl = 'https://github.com/zhpanvip/BannerViewPager.git'   // Git仓库的url
 group = "com.zhpan.library" // Maven Group ID for the artifact,一般填你唯一的包名

+ 15 - 33
bannerview/src/main/java/com/zhpan/bannerview/BannerViewPager.java

@@ -14,6 +14,7 @@ import android.support.v4.view.ViewPager;
 import android.util.AttributeSet;
 import android.view.MotionEvent;
 import android.view.View;
+import android.view.ViewGroup;
 import android.widget.RelativeLayout;
 
 import com.zhpan.bannerview.annotation.AIndicatorGravity;
@@ -267,8 +268,8 @@ public class BannerViewPager<T, VH extends ViewHolder> extends RelativeLayout im
     }
 
     private void initIndicatorGravity() {
-        LayoutParams layoutParams =
-                (LayoutParams) ((View) mIndicatorView).getLayoutParams();
+        RelativeLayout.LayoutParams layoutParams =
+                (RelativeLayout.LayoutParams) ((View) mIndicatorView).getLayoutParams();
         switch (indicatorGravity) {
             case CENTER:
                 layoutParams.addRule(RelativeLayout.CENTER_HORIZONTAL);
@@ -283,7 +284,7 @@ public class BannerViewPager<T, VH extends ViewHolder> extends RelativeLayout im
     }
 
     private void initIndicatorViewMargin() {
-        MarginLayoutParams layoutParams = (MarginLayoutParams) ((View) mIndicatorView).getLayoutParams();
+        ViewGroup.MarginLayoutParams layoutParams = (MarginLayoutParams) ((View) mIndicatorView).getLayoutParams();
         if (mIndicatorMargin == null) {
             int dp10 = BannerUtils.dp2px(10);
             layoutParams.setMargins(dp10, dp10, dp10, dp10);
@@ -298,11 +299,10 @@ public class BannerViewPager<T, VH extends ViewHolder> extends RelativeLayout im
             removeAllViews();
             BannerPagerAdapter<T, VH> bannerPagerAdapter =
                     new BannerPagerAdapter<>(mList, holderCreator);
-            bannerPagerAdapter.setPageStyle(mPageStyle);
             bannerPagerAdapter.setCanLoop(isCanLoop);
             bannerPagerAdapter.setPageClickListener(position -> {
                 if (mOnPageClickListener != null) {
-                    mOnPageClickListener.onPageClick(PositionUtils.getRealPosition(isCanLoop, position, mList.size(), mPageStyle));
+                    mOnPageClickListener.onPageClick(position);
                 }
             });
 
@@ -344,7 +344,7 @@ public class BannerViewPager<T, VH extends ViewHolder> extends RelativeLayout im
         mPageMargin = mPageMargin == 0 ? BannerUtils.dp2px(20) : mPageMargin;
         mRevealWidth = mRevealWidth == 0 ? BannerUtils.dp2px(20) : mRevealWidth;
         setClipChildren(false);
-        MarginLayoutParams params = (MarginLayoutParams) mViewPager.getLayoutParams();
+        ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) mViewPager.getLayoutParams();
         params.leftMargin = mPageMargin + mRevealWidth;
         params.rightMargin = mPageMargin + mRevealWidth;
         mViewPager.setOverlapStyle(overlap);
@@ -355,12 +355,12 @@ public class BannerViewPager<T, VH extends ViewHolder> extends RelativeLayout im
 
     @Override
     public void onPageSelected(int position) {
+        currentPosition = PositionUtils.getRealPosition(isCanLoop, position, mList.size());
         if (mOnPageChangeListener != null)
-            mOnPageChangeListener.onPageSelected(PositionUtils.getRealPosition(isCanLoop, position, mList.size()));
+            mOnPageChangeListener.onPageSelected(currentPosition);
         if (mIndicatorView != null) {
-            mIndicatorView.onPageSelected(PositionUtils.getRealPosition(isCanLoop, position, mList.size()));
+            mIndicatorView.onPageSelected(currentPosition);
         }
-        currentPosition = position;
     }
 
     @Override
@@ -371,24 +371,6 @@ public class BannerViewPager<T, VH extends ViewHolder> extends RelativeLayout im
         if (mOnPageChangeListener != null) {
             mOnPageChangeListener.onPageScrollStateChanged(state);
         }
-//        if (isCanLoop) {
-//            switch (state) {
-//                case ViewPager.SCROLL_STATE_IDLE:
-//                    if (currentPosition == 0) {
-//                        mViewPager.setCurrentItem(mList.size(), false);
-//                    } else if (currentPosition == mList.size() + 1) {
-//                        mViewPager.setCurrentItem(1, false);
-//                    }
-//                    break;
-//                case ViewPager.SCROLL_STATE_DRAGGING:
-//                    if (currentPosition == mList.size() + 1) {
-//                        mViewPager.setCurrentItem(1, false);
-//                    } else if (currentPosition == 0) {
-//                        mViewPager.setCurrentItem(mList.size(), false);
-//                    }
-//                    break;
-//            }
-//        }
     }
 
     @Override
@@ -630,8 +612,8 @@ public class BannerViewPager<T, VH extends ViewHolder> extends RelativeLayout im
      * 设置IndicatorView滑动模式,默认值{@link IndicatorSlideMode#NORMAL}
      *
      * @param slideMode Indicator滑动模式
-     * @see IndicatorSlideMode#NORMAL
-     * @see IndicatorSlideMode#SMOOTH
+     * @see com.zhpan.bannerview.constants.IndicatorSlideMode#NORMAL
+     * @see com.zhpan.bannerview.constants.IndicatorSlideMode#SMOOTH
      */
     public BannerViewPager<T, VH> setIndicatorSlideMode(@AIndicatorSlideMode int slideMode) {
         mIndicatorSlideMode = slideMode;
@@ -678,7 +660,7 @@ public class BannerViewPager<T, VH extends ViewHolder> extends RelativeLayout im
      * @return the currently selected page position.
      */
     public int getCurrentItem() {
-        return PositionUtils.getRealPosition(isCanLoop, currentPosition, mList.size(), mPageStyle);
+        return currentPosition;
     }
 
     /**
@@ -689,7 +671,7 @@ public class BannerViewPager<T, VH extends ViewHolder> extends RelativeLayout im
      * @param item Item index to select
      */
     public void setCurrentItem(int item) {
-        mViewPager.setCurrentItem(PositionUtils.toUnrealPosition(isCanLoop, item, mList.size(), mPageStyle));
+        mViewPager.setCurrentItem(isCanLoop ? MAX_VALUE / 2 - ((MAX_VALUE / 2) % mList.size()) + 1 + item : item);
     }
 
     /**
@@ -699,7 +681,7 @@ public class BannerViewPager<T, VH extends ViewHolder> extends RelativeLayout im
      * @param smoothScroll True to smoothly scroll to the new item, false to transition immediately
      */
     public void setCurrentItem(int item, boolean smoothScroll) {
-        mViewPager.setCurrentItem(PositionUtils.toUnrealPosition(isCanLoop, item, mList.size(), mPageStyle), smoothScroll);
+        mViewPager.setCurrentItem(isCanLoop ? MAX_VALUE / 2 - ((MAX_VALUE / 2) % mList.size()) + 1 + item : item, smoothScroll);
     }
 
     /**
@@ -789,4 +771,4 @@ public class BannerViewPager<T, VH extends ViewHolder> extends RelativeLayout im
         mOnPageChangeListener = onPageChangeListener;
         return this;
     }
-}
+}

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

@@ -29,8 +29,6 @@ public class BannerPagerAdapter<T, VH extends ViewHolder> extends PagerAdapter {
 
     private List<View> mViewList = new ArrayList<>();
 
-    private int mPageStyle;
-
     public static final int MAX_VALUE = Integer.MAX_VALUE;
 
     public BannerPagerAdapter(List<T> list, HolderCreator<VH> holderCreator) {
@@ -76,7 +74,7 @@ public class BannerPagerAdapter<T, VH extends ViewHolder> extends PagerAdapter {
     private View getView(final int position, ViewGroup container) {
         ViewHolder<T> holder = holderCreator.createViewHolder();
         if (holder == null) {
-            throw new RuntimeException("can not return a null holder");
+            throw new NullPointerException("can not return a null holder");
         }
         return createView(holder, position, container);
     }
@@ -95,7 +93,7 @@ public class BannerPagerAdapter<T, VH extends ViewHolder> extends PagerAdapter {
         if (view != null)
             view.setOnClickListener(v -> {
                 if (null != mPageClickListener)
-                    mPageClickListener.onPageClick(PositionUtils.toUnrealPosition(isCanLoop, position, mList.size(), mPageStyle));
+                    mPageClickListener.onPageClick(position);
             });
     }
 
@@ -117,9 +115,6 @@ public class BannerPagerAdapter<T, VH extends ViewHolder> extends PagerAdapter {
         isCanLoop = canLoop;
     }
 
-    public void setPageStyle(@APageStyle int pageStyle) {
-        mPageStyle = pageStyle;
-    }
 
     public interface PageClickListener {
         void onPageClick(int position);

+ 1 - 55
bannerview/src/main/java/com/zhpan/bannerview/utils/PositionUtils.java

@@ -1,62 +1,8 @@
 package com.zhpan.bannerview.utils;
 
-import com.zhpan.bannerview.constants.PageStyle;
-
 public class PositionUtils {
 
-    public static int toUnrealPosition(boolean isCanLoop, int position, int pageSize, int pageStyle) {
-        if (isCanLoop) {
-            if (pageStyle == PageStyle.NORMAL) {
-                return (position < pageSize) ? (++position) : pageSize;
-            } else {
-                return (position < pageSize) ? position + 2 : pageSize + 1;
-            }
-        } else {
-            return position;
-        }
-    }
-
     public static int getRealPosition(boolean isCanLoop, int position, int pageSize) {
-        int realPosition;
-        if (pageSize <= 0)
-            return 0;
-        if (isCanLoop) {
-            realPosition = (position - 1 + pageSize) % pageSize;
-        } else {
-            realPosition = (position + pageSize) % pageSize;
-        }
-        if (realPosition < 0)
-            realPosition += pageSize;
-        return realPosition;
+        return isCanLoop ? (position - 1 + pageSize) % pageSize : (position + pageSize) % pageSize;
     }
-
-    public static int getRealPosition(boolean isCanLoop, int position, int pageSize, int pageStyle) {
-        if (isCanLoop) {
-            if (pageStyle == PageStyle.NORMAL) {
-                if (position == 0) {
-                    return pageSize - 1;
-                } else if (position == pageSize + 1) {
-                    return 0;
-                } else {
-                    return --position;
-                }
-            } else {
-                if (position == 0) {
-                    return pageSize == 1 ? 0 : pageSize - 2;
-                } else if (position == 1) {
-                    return pageSize - 1;
-                } else if (position == pageSize + 3) {
-                    return 1;
-                } else if (position == pageSize + 2) {
-                    return 0;
-                } else {
-                    return position - 2;
-                }
-            }
-
-        } else {
-            return position;
-        }
-    }
-
 }