Browse Source

Optimize BannerViewPager,update readme

张攀 5 years ago
parent
commit
d95804abaf
4 changed files with 44 additions and 37 deletions
  1. 18 17
      README.md
  2. 2 2
      bannerview/build.gradle
  3. 21 15
      bannerview/src/main/java/com/zhpan/bannerview/BannerViewPager.java
  4. 3 3
      build.gradle

+ 18 - 17
README.md

@@ -9,24 +9,25 @@
 
 | 方法名 | 方法描述 | 说明 |
 |--|--|--|
-| startLoop() |开启自动轮播  |  |
-| stopLoop() | 停止自动轮播 |  |
-| setInterval(int interval) | 自动轮播事件间隔 |单位毫秒,默认值3000  |
-| setCanLoop(boolean canLoop) | 是否可以循环 |  默认值true|
-| setRoundCorner(@DimenRes int radius) | 设置圆角 |默认无圆角 需要SDK_INT>=LOLLIPOP(21)  |
-| setRoundCorner(float radiusDp) | 设置圆角 | 单位dp,默认无圆角 需要SDK_INT>=LOLLIPOP(21)|
-| showIndicator(boolean showIndicator) |  是否显示指示器|默认值true  |
-| setIndicatorGravity(int gravity) | 指示器位置(0 Center、1 Start、2 End) |默认值0 Center |
-| setIndicatorColor(int normalColor,int checkedColor) | 指示器圆点颜色 |normalColor:未选中时颜色默认"#000000", checkedColor:选中时颜色 默认"#FFFFFF" |
-| setIndicatorRadius(float radiusDp) | 指示器圆点半径 | 单位dp 默认值4dp|
-| setIndicatorRadius(@DimenRes int radiusRes) | 指示器圆点半径| DimenRes资源 默认值4dp|
-| setCurrentItem(final int position)  |  切换到第position个页面|  |
-| setCurrentItem(final int position, final boolean smoothScroll) | 平滑切换到第position个页面 |  |
-| setData(List<T> list) |设置Banner数据  |  |
-| setHolderCreator(HolderCreator<VH> holderCreator) |设置HolderCreator  |必须设置HolderCreator,否则会抛出RuntimeException  |
+| BannerViewPager<T, VH> setInterval(int interval) | 自动轮播事件间隔 |单位毫秒,默认值3000  |
+| BannerViewPager<T, VH> setCanLoop(boolean canLoop) | 是否可以循环 |  默认值true|
+| BannerViewPager<T, VH> setRoundCorner(@DimenRes int radius) | 设置圆角 |默认无圆角 需要SDK_INT>=LOLLIPOP(21)  |
+| BannerViewPager<T, VH> setRoundCorner(float radiusDp) | 设置圆角 | 单位dp,默认无圆角 需要SDK_INT>=LOLLIPOP(21)|
+| BannerViewPager<T, VH> showIndicator(boolean showIndicator) |  是否显示指示器|默认值true  |
+| BannerViewPager<T, VH> setIndicatorGravity(int gravity) | 指示器位置 |可选值(Center、Start、End)默认值Center |
+| BannerViewPager<T, VH> setIndicatorColor(int normalColor,int checkedColor) | 指示器圆点颜色 |normalColor:未选中时颜色默认"#000000", checkedColor:选中时颜色 默认"#FFFFFF" |
+| BannerViewPager<T, VH> setIndicatorRadius(float radiusDp) | 指示器圆点半径 | 单位dp 默认值4dp|
+| BannerViewPager<T, VH> setIndicatorRadius(@DimenRes int radiusRes) | 指示器圆点半径| DimenRes资源 默认值4dp|
+| BannerViewPager<T, VH> setIndicatorMargin(float indicatorMarginDp) | 指示器圆点间距| 单位dp  默认值圆点直径|
+| BannerViewPager<T, VH> setIndicatorMargin(@DimenRes int marginRes) | 指示器圆点间距| DimenRes 默认值圆点直径|
+| BannerViewPager<T, VH> setCurrentItem(final int position)  |  切换到第position个页面|  |
+| BannerViewPager<T, VH> setCurrentItem(final int position, final boolean smoothScroll) | 平滑切换到第position个页面 |  |
+| BannerViewPager<T, VH> setHolderCreator(HolderCreator<VH> holderCreator) |设置HolderCreator  |必须设置HolderCreator,否则会抛出RuntimeException  |
 | BannerViewPager<T, VH> setPageTransformer(ViewPager.PageTransformer transformer) |设置transformer  |2.1.2新增  |
 | BannerViewPager<T, VH> setPageTransformerStyle(TransformerStyle style) |内置transformer样式  |2.1.2新增 可选参数(DEPTH, ROTATE_DOWN, STACK, ACCORDION)  |
-| create() |初始化并构造BannerViewPager  |必须调用,否则前面设置的参数无效  |
+| void startLoop() |开启自动轮播  |  |
+| void stopLoop() | 停止自动轮播 |  |
+| void create(List<T> list) |初始化并构造BannerViewPager  |必须调用,否则前面设置的参数无效  |
 
 Transform内置样式
 
@@ -37,9 +38,9 @@ Transform内置样式
 | DEPTH | ![DEPTH](https://github.com/zhpanvip/BannerViewPager/blob/master/image/depth.gif) |
 | ACCORDION | ![ACCORDION](https://github.com/zhpanvip/BannerViewPager/blob/master/image/accordion.gif) |
 ## 如何使用
- [ ![Download](https://api.bintray.com/packages/zhpanvip/CircleViewPager/bannerview/images/download.svg) ](https://bintray.com/zhpanvip/CircleViewPager/bannerview/_latestVersion)
 
    **gradle中添加依赖**
+latestVersion is: [ ![latestVersion](https://api.bintray.com/packages/zhpanvip/CircleViewPager/bannerview/images/download.svg) ](https://bintray.com/zhpanvip/CircleViewPager/bannerview/_latestVersion)
 
 ```
 implementation 'com.zhpan.library:bannerview:latestVersion'

+ 2 - 2
bannerview/build.gradle

@@ -37,7 +37,7 @@ dependencies {
     implementation 'androidx.appcompat:appcompat:1.0.2'
 }
 
-version = "2.1.2"
+version = "2.2.0"
 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,一般填你唯一的包名
@@ -99,7 +99,7 @@ bintray {
     configurations = ['archives']
     pkg {
         repo = "CircleViewPager"  //发布到Bintray的那个仓库里,默认账户有四个库,我们这里上传到maven库
-        name = "bannerviewX"  //发布到Bintray上的项目名字
+        name = "bannerview"  //发布到Bintray上的项目名字
         websiteUrl = siteUrl
         vcsUrl = gitUrl
         licenses = ["Apache-2.0"]

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

@@ -138,6 +138,9 @@ public class BannerViewPager<T, VH extends ViewHolder> extends FrameLayout imple
         initScroller();
     }
 
+    /**
+     * 替换ViewPager默认的Scroller
+     */
     private void initScroller() {
         try {
             mScroller = new BannerScroller(mViewPager.getContext());
@@ -150,19 +153,23 @@ public class BannerViewPager<T, VH extends ViewHolder> extends FrameLayout imple
         }
     }
 
-    // 根据mList数据集构造mListAdd
+    /**
+     * 初始化书记及ViewPager
+     */
     private void initData() {
         if (mList.size() > 0) {
             initIndicator();
             if (isCanLoop) {
                 currentPosition = 1;
             }
-            setViewPager();
+            setupViewPager();
         }
     }
 
 
-    // 设置触摸事件,当滑动或者触摸时停止自动轮播
+    /**
+     * 设置触摸事件,当滑动或者触摸时停止自动轮播
+     */
     @SuppressLint("ClickableViewAccessibility")
     private void setTouchListener() {
         mViewPager.setOnTouchListener((v, event) -> {
@@ -184,9 +191,11 @@ public class BannerViewPager<T, VH extends ViewHolder> extends FrameLayout imple
         });
     }
 
-    // 设置轮播小圆点
+    /**
+     * 构造指示器
+     */
     private void initIndicator() {
-        if (mList.size() > 1) {
+        if (mList.size() > 1 && showIndicator) {
             mIndicatorView.setPageSize(mList.size()).setIndicatorRadius(indicatorRadius)
                     .setIndicatorMargin(indicatorMargin).setCheckedColor(indicatorCheckedColor)
                     .setNormalColor(indicatorNormalColor).invalidate();
@@ -207,7 +216,7 @@ public class BannerViewPager<T, VH extends ViewHolder> extends FrameLayout imple
     }
 
 
-    private void setViewPager() {
+    private void setupViewPager() {
         if (holderCreator != null) {
             BannerPagerAdapter<T, VH> bannerPagerAdapter =
                     new BannerPagerAdapter<>(mList, holderCreator);
@@ -225,7 +234,6 @@ public class BannerViewPager<T, VH extends ViewHolder> extends FrameLayout imple
             mViewPager.addOnPageChangeListener(this);
             startLoop();
             setTouchListener();
-            mIndicatorView.setVisibility(showIndicator ? VISIBLE : GONE);
         }
     }
 
@@ -235,7 +243,9 @@ public class BannerViewPager<T, VH extends ViewHolder> extends FrameLayout imple
 //            mOnPageChangedListener.onPageSelected(getRealPosition(position));
 //        }
         currentPosition = position;
-        mIndicatorView.pageSelect(getRealPosition(position));
+        if (showIndicator) {
+            mIndicatorView.pageSelect(getRealPosition(position));
+        }
     }
 
     @Override
@@ -290,16 +300,12 @@ public class BannerViewPager<T, VH extends ViewHolder> extends FrameLayout imple
         return isCanLoop ? (position < mList.size()) ? (++position) : mList.size() : position;
     }
 
-    public ViewPager getViewPager() {
-        return mViewPager;
-    }
-
     /**
      * 开启轮播
      */
     public void startLoop() {
-        if (!isLooping && isAutoPlay && mViewPager != null) {
-            mHandler.postDelayed(mRunnable, interval);// 每interval秒执行一次runnable.
+        if (!isLooping && isAutoPlay && mList.size() > 1) {
+            mHandler.postDelayed(mRunnable, interval);
             isLooping = true;
         }
     }
@@ -308,7 +314,7 @@ public class BannerViewPager<T, VH extends ViewHolder> extends FrameLayout imple
      * 停止轮播
      */
     public void stopLoop() {
-        if (isLooping && mViewPager != null) {
+        if (isLooping) {
             mHandler.removeCallbacks(mRunnable);
             isLooping = false;
         }

+ 3 - 3
build.gradle

@@ -3,9 +3,9 @@
 buildscript {
     repositories {
         jcenter()
-        maven {
-            url 'https://dl.bintray.com/zhpanvip/CircleViewPager/'
-        }
+//        maven {
+//            url 'https://dl.bintray.com/zhpanvip/CircleViewPager/'
+//        }
         google()
     }
     dependencies {