Bläddra i källkod

Optimize code,update readme.

张攀 5 år sedan
förälder
incheckning
f705bab68e

+ 82 - 43
README.md

@@ -2,43 +2,58 @@
 
 ## 效果预览
 
+**1.基础功能**
+
 | 嵌套RecyclerView | 自定义页面 | 嵌套PhotoView   |
 |--|--|--|
 | ![嵌套RecyclerView](https://github.com/zhpanvip/BannerViewPager/blob/master/image/preview1.gif) | ![自定义页面](https://github.com/zhpanvip/BannerViewPager/blob/master/image/preview2.gif) | ![嵌套PhotoView](https://github.com/zhpanvip/BannerViewPager/blob/master/image/preview3.gif)   |
+
+**2.自定义Indicator滑动样式**
+
+| NORMAL | SMOOTH |
+|--|--|
+| ![NORMAL](https://github.com/zhpanvip/BannerViewPager/blob/master/image/slide_normal.gif) |  ![SMOOTH](https://github.com/zhpanvip/BannerViewPager/blob/master/image/transform_smooth.gif) |
+
+**3.内置Transform样式**
+
+| 参数 | STACK | ROTATE | DEPTH | ACCORDION |
+|--|--|--|--|--|
+| 预览 | ![STACK](https://github.com/zhpanvip/BannerViewPager/blob/master/image/transform_stack.gif) | ![ROTATE_DOWN](https://github.com/zhpanvip/BannerViewPager/blob/master/image/transform_rotate.gif) | ![DEPTH](https://github.com/zhpanvip/BannerViewPager/blob/master/image/transform_depth.gif)  |![ACCORDION](https://github.com/zhpanvip/BannerViewPager/blob/master/image/transform_accordion.gif)  |
+
+
+
 ## 开放API
 
 | 方法名 | 方法描述 | 说明 |
 |--|--|--|
 | 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> setCanLoop(boolean canLoop) | 是否可以循环 | 默认值true|
+| BannerViewPager<T, VH> setAutoPlay(boolean autoPlay) | 是否开启自动轮播 | 默认值true|
+| BannerViewPager<T, VH> setRoundCorner(@DimenRes int radius) | 设置圆角 |默认无圆角 需要SDK_INT>=LOLLIPOP(API 21)  |
+| BannerViewPager<T, VH> setRoundCorner(float radiusDp) | 设置圆角 | 单位dp,默认无圆角 需要SDK_INT>=LOLLIPOP(API 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> setIndicatorSlideMode  | 设置Indicator滑动模式 | V2.2.2新增,可选(NORMAL、SMOOTH),默认值SMOOTH  |
+| BannerViewPager<T, VH> setIndicatorRadius(float radiusDp) | 设置指示器圆点半径 | 单位dp 默认值4dp|
+| BannerViewPager<T, VH> setIndicatorRadius(@DimenRes int radiusRes) | 设置指示器圆点半径| DimenRes资源 默认值4dp|
+| BannerViewPager<T, VH> setIndicatorRadius(float normalRadius, float checkRadius) | 设置指示器圆点半径 |单位dp normalRadius:未选中时半径  checkedRadius:选中时的半径 |
+|BannerViewPager<T, VH> setIndicatorRadius(@DimenRes int normalRadius, @DimenRes int checkRadius)  |设置指示器圆点半径  |  normalRadius:未选中时半径  checkedRadius:选中时的半径 |
 | 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)  |
-| void startLoop() |开启自动轮播  |  |
+| BannerViewPager<T, VH> setHolderCreator(HolderCreator<VH> holderCreator) |设置HolderCreator  |必须设置HolderCreator,否则会抛出NullPointerException|
+| BannerViewPager<T, VH> setPageTransformer(ViewPager.PageTransformer transformer) |设置transformer  |V2.1.2新增  |
+| BannerViewPager<T, VH> setPageTransformerStyle(TransformerStyle style) |内置transformer样式  |V2.1.2新增 可选参数(DEPTH, ROTATE_DOWN, STACK, ACCORDION)  |
+| void startLoop() |开启自动轮播 | 初始化BannerViewPager时不必调用该方法,设置setAutoPlay后会调用startLoop() |
 | void stopLoop() | 停止自动轮播 |  |
 | void create(List<T> list) |初始化并构造BannerViewPager  |必须调用,否则前面设置的参数无效  |
 
-Transform内置样式
-
-| 参数 | STACK | ROTATE_DOWN | DEPTH | ACCORDION |
-|--|--|--|--|--|
-| 预览 | ![STACK](https://github.com/zhpanvip/BannerViewPager/blob/master/image/stack.gif) | ![ROTATE_DOWN](https://github.com/zhpanvip/BannerViewPager/blob/master/image/rotate_down.gif) | ![DEPTH](https://github.com/zhpanvip/BannerViewPager/blob/master/image/depth.gif)  |![ACCORDION](https://github.com/zhpanvip/BannerViewPager/blob/master/image/accordion.gif)  |
-
 
 ## 如何使用
 
-   **gradle中添加依赖**
+  **1.gradle中添加依赖**
    
 latestVersion is: [ ![latestVersion](https://api.bintray.com/packages/zhpanvip/CircleViewPager/bannerview/images/download.svg) ](https://bintray.com/zhpanvip/CircleViewPager/bannerview/_latestVersion)
 
@@ -52,7 +67,7 @@ implementation 'com.zhpan.library:bannerview:latestVersion'
 implementation 'com.zhpan.library:bannerview:2.1.4'
 ```
 
-  **在xml文件中添加如下代码:**
+  **2.在xml文件中添加如下代码:**
 
 ```
     <com.zhpan.bannerview.BannerViewPager
@@ -62,7 +77,31 @@ implementation 'com.zhpan.library:bannerview:2.1.4'
             android:layout_height="160dp" />
 ```
 
- **BannerViewPager参数配置**
+**3.自定义ViewHolder**
+
+```
+public class NetViewHolder implements ViewHolder<BannerData> {
+    private ImageView mImageView;
+    private TextView mTextView;
+
+    @Override
+    public View createView(ViewGroup viewGroup, Context context, int position) {
+        View view = LayoutInflater.from(context).inflate(R.layout.item_net, viewGroup, false);
+        mImageView = view.findViewById(R.id.banner_image);
+        mTextView = view.findViewById(R.id.tv_describe);
+        return view;
+    }
+
+    @Override
+    public void onBind(Context context, BannerData data, int position, int size) {
+        ImageLoaderOptions options = new ImageLoaderOptions.Builder().into(mImageView).load(data.getImagePath()).placeHolder(R.drawable.placeholder).build();
+        ImageLoaderManager.getInstance().loadImage(options);
+        mTextView.setText(data.getTitle());
+    }
+}
+```
+
+ **4.BannerViewPager参数配置**
 
 ```
     private BannerViewPager<BannerData, NetViewHolder> mBannerViewPager;
@@ -84,35 +123,33 @@ implementation 'com.zhpan.library:bannerview:2.1.4'
         }
 ```
 
-**自定义ViewHolder** 
-  
-```
-public class NetViewHolder implements ViewHolder<BannerData> {
-    private ImageView mImageView;
-    private TextView mTextView;
+**5.开启与停止轮播**
 
-    @Override
-    public View createView(ViewGroup viewGroup, Context context, int position) {
-        View view = LayoutInflater.from(context).inflate(R.layout.item_net, viewGroup, false);
-        mImageView = view.findViewById(R.id.banner_image);
-        mTextView = view.findViewById(R.id.tv_describe);
-        return view;
-    }
+如果开启了自动轮播功能,请务必在onDestroy中停止轮播,以免出现内存泄漏。
 
-    @Override
-    public void onBind(Context context, BannerData data, int position, int size) {
-        ImageLoaderOptions options = new ImageLoaderOptions.Builder().into(mImageView).load(data.getImagePath()).placeHolder(R.drawable.placeholder).build();
-        ImageLoaderManager.getInstance().loadImage(options);
-        mTextView.setText(data.getTitle());
-    }
-}
-```
-**如果开启自动轮播,请在onDestroy()中停止图片轮播,以免内存泄漏**
 ```
 	@Override
     protected void onDestroy() {
-    	mViewpager.stopLoop();
         super.onDestroy();
+        if (mBannerViewPager != null)
+    		mViewpager.stopLoop();
+    }
+```
+为了节省性能也可以在onPause中停止轮播,在onResume中开启轮播:
+
+```
+    @Override
+    protected void onPause() {
+        super.onPause();
+        if (mBannerViewPager != null)
+            mBannerViewPager.stopLoop();
+    }
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+        if (mBannerViewPager != null)
+            mBannerViewPager.startLoop();
     }
 ```
 
@@ -128,9 +165,11 @@ public class NetViewHolder implements ViewHolder<BannerData> {
 
 ~~(5)增加IndicatorView的滑动样式~~(2.2.2)
 
-(6)ViewPager更换为ViewPager2 (3.0.0)
+ (6)增添更多Indicator滑动模式(2.3.+)
+
+ (7)ViewPager更换为ViewPager2 (3.0.0)
 
-(7)如有问题欢迎提issue,该库会持续更新优化。
+ (8)如有问题欢迎提issue,该库会持续更新优化。
 
 
 [详情请点击此处](http://blog.csdn.net/qq_20521573/article/details/52037929)

+ 14 - 0
app/src/main/java/com/example/zhpan/circleviewpager/activity/NetworkBannerActivity.java

@@ -114,6 +114,20 @@ public class NetworkBannerActivity extends RxAppCompatActivity {
         return view;
     }
 
+    @Override
+    protected void onPause() {
+        super.onPause();
+        if (mBannerViewPager != null)
+            mBannerViewPager.stopLoop();
+    }
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+        if (mBannerViewPager != null)
+            mBannerViewPager.startLoop();
+    }
+
     @Override
     protected void onDestroy() {
         super.onDestroy();

+ 1 - 1
app/src/main/java/com/example/zhpan/circleviewpager/activity/PageTransformerActivity.java

@@ -41,7 +41,7 @@ public class PageTransformerActivity extends AppCompatActivity {
                 mViewpager.setPageTransformerStyle(TransformerStyle.STACK);
                 break;
             case R.id.menu1:
-                mViewpager.setPageTransformerStyle(TransformerStyle.ROTATE_DOWN);
+                mViewpager.setPageTransformerStyle(TransformerStyle.ROTATE);
                 break;
             case R.id.menu2:
                 mViewpager.setPageTransformerStyle(TransformerStyle.DEPTH);

+ 1 - 1
bannerview/src/main/java/com/zhpan/bannerview/enums/TransformerStyle.java

@@ -1,5 +1,5 @@
 package com.zhpan.bannerview.enums;
 
 public enum TransformerStyle {
-    DEPTH, ROTATE_DOWN, STACK, ACCORDION,
+    DEPTH, ROTATE, STACK, ACCORDION,
 }

+ 1 - 1
bannerview/src/main/java/com/zhpan/bannerview/transform/PageTransformerFactory.java

@@ -12,7 +12,7 @@ public class PageTransformerFactory {
             case DEPTH:
                 transformer = new DepthPageTransformer();
                 break;
-            case ROTATE_DOWN:
+            case ROTATE:
                 transformer=new RotateUpTransformer();
                 break;
             case STACK:

BIN
image/accordion.gif


BIN
image/depth.gif


BIN
image/preview2.gif


BIN
image/rotate_down.gif


BIN
image/slide_normal.gif


BIN
image/slide_smooth.gif


BIN
image/stack.gif


BIN
image/transform_accordion.gif


BIN
image/transform_depth.gif


BIN
image/transform_rotate.gif


BIN
image/transform_stack.gif