Browse Source

update sample

张攀 5 years ago
parent
commit
668da9e55a

+ 19 - 31
README.md

@@ -36,10 +36,10 @@
 | void startLoop() |开启自动轮播 | 初始化BannerViewPager时不必调用该方法,设置setAutoPlay后会调用startLoop() |
 | void stopLoop() | 停止自动轮播 | 如果开启自动轮播,为避免内存泄漏需要在onStop()或onDestory中调用此方法 |
 | List\<T> getList() | 获取Banner中的集合数据 |  |
-| BannerViewPager<T, VH> setCanLoop(boolean canLoop) | 是否可以循环 | 默认值true|
+| BannerViewPager<T, VH> setCanLoop(boolean canLoop) | 是否开启循环 | 默认值true|
 | BannerViewPager<T, VH> setAutoPlay(boolean autoPlay) | 是否开启自动轮播 | 默认值true|
-| BannerViewPager<T, VH> setInterval(int interval) | 自动轮播事件间隔 |单位毫秒,默认值3000  |
-| BannerViewPager<T, VH> setScrollDuration(int scrollDuration) | 设置页面滚动时间 |  |
+| BannerViewPager<T, VH> setInterval(int interval) | 自动轮播时间间隔 |单位毫秒,默认值3000  |
+| BannerViewPager<T, VH> setScrollDuration(int scrollDuration) | 设置页面滚动时间 | 设置页面滚动时间 |单位毫秒,默认值800  |
 | BannerViewPager<T, VH> setRoundCorner(int radius) | 设置圆角 |默认无圆角 需要SDK_INT>=LOLLIPOP(API 21)  |
 | BannerViewPager<T, VH> setOnPageClickListener(OnPageClickListener onPageClickListener) | 设置页面点击事件 |  |
 | BannerViewPager<T, VH> setHolderCreator(HolderCreator\<VH> holderCreator) |设置HolderCreator  |必须设置HolderCreator,否则会抛出NullPointerException|
@@ -199,7 +199,7 @@ public class NetViewHolder implements ViewHolder<BannerData> {
             mBannerViewPager.startLoop();
     }
 ```
-## 6.高级功能---自定义IndicatorView
+## 7.高级功能---自定义IndicatorView
 
 **(1)自定义View并继承BaseIndicatorView**
 
@@ -208,13 +208,7 @@ public class DashIndicatorView extends BaseIndicatorView implements IIndicator {
     private Paint mPaint;
     private float sliderHeight;
 
-    public DashIndicatorView(Context context) {
-        this(context, null);
-    }
-
-    public DashIndicatorView(Context context, AttributeSet attrs) {
-        this(context, attrs, 0);
-    }
+   ...内部省略部分代码
 
     public DashIndicatorView(Context context, AttributeSet attrs, int defStyleAttr) {
         super(context, attrs, defStyleAttr);
@@ -224,11 +218,6 @@ public class DashIndicatorView extends BaseIndicatorView implements IIndicator {
         sliderHeight = normalIndicatorWidth / 2;
     }
 
-    @Override
-    protected void onSizeChanged(int w, int h, int oldw, int oldh) {
-        super.onSizeChanged(w, h, oldw, oldh);
-    }
-
     @Override
     protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
         super.onMeasure(widthMeasureSpec, heightMeasureSpec);
@@ -236,11 +225,6 @@ public class DashIndicatorView extends BaseIndicatorView implements IIndicator {
                 (int) (sliderHeight));
     }
 
-    @Override
-    protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
-        super.onLayout(changed, left, top, right, bottom);
-    }
-
     @Override
     protected void onDraw(Canvas canvas) {
         super.onDraw(canvas);
@@ -273,26 +257,30 @@ public class DashIndicatorView extends BaseIndicatorView implements IIndicator {
         canvas.drawRect(left, 0, left + checkedIndicatorWidth, sliderHeight, mPaint);
     }
 
-    public DashIndicatorView setSliderHeight(int sliderHeight) {
-        this.sliderHeight = sliderHeight;
-        return this;
-    }
 }
 ```
 **(2)BannerViewPager设置自定义Indicator**
 
 ```
- DashIndicatorView indicatorView = new DashIndicatorView(this);
-        indicatorView.setPageSize(list.size());
+ private void setUpViewPager() {
+        viewPager = findViewById(R.id.banner_view);
+        List<String> list = Arrays.asList(picUrls);
+        viewPager.setAutoPlay(false).setCanLoop(true)
+                .setRoundCorner(DpUtils.dp2px(5))
+                .setIndicatorView(setupIndicatorView(list.size()))
+                .setHolderCreator(SlideModeViewHolder::new).create(list);
+    }
+
+    private DashIndicatorView setupIndicatorView(int pageSize) {
+        DashIndicatorView indicatorView = new DashIndicatorView(this);
+        indicatorView.setPageSize(pageSize);
         indicatorView.setIndicatorWidth(DpUtils.dp2px(8), DpUtils.dp2px(8));
         indicatorView.setSliderHeight(DpUtils.dp2px(4));
         indicatorView.setIndicatorGap(DpUtils.dp2px(5));
         indicatorView.setCheckedColor(getResources().getColor(R.color.colorAccent));
         indicatorView.setNormalColor(getResources().getColor(R.color.colorPrimary));
-        viewPager.setAutoPlay(false).setCanLoop(true)
-                .setRoundCorner(DpUtils.dp2px(5))
-                .setIndicatorView(indicatorView)
-                .setHolderCreator(SlideModeViewHolder::new).create(list);
+        return indicatorView;
+    }
 ```
 
 # TODO 版本计划

+ 1 - 1
app/src/main/AndroidManifest.xml

@@ -17,7 +17,7 @@
         <activity android:name=".activity.PageTransformerActivity" />
         <activity android:name=".activity.NetworkBannerActivity" />
         <activity
-            android:name=".activity.CustomerBannerActivity"
+            android:name=".activity.CustomerBannerItemActivity"
             android:theme="@style/FullScreenTheme" />
         <activity
             android:name=".activity.BannerPhotoViewActivity"

+ 27 - 6
app/src/main/java/com/example/zhpan/circleviewpager/activity/CustomIndicatorActivity.java

@@ -18,24 +18,45 @@ public class CustomIndicatorActivity extends AppCompatActivity {
             "http://pic37.nipic.com/20140115/7430301_100825571157_2.jpg",
             "http://pic29.nipic.com/20130507/8952533_183922555000_2.jpg",
             "http://b-ssl.duitang.com/uploads/item/201706/10/20170610095055_G5LM8.jpeg"};
+    BannerViewPager<String, SlideModeViewHolder> viewPager;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_indicator_slide_mode);
         setTitle(getString(R.string.custom_indicator_view));
-        BannerViewPager<String, SlideModeViewHolder> viewPager = findViewById(R.id.banner_view);
+        setUpViewPager();
+    }
+
+    private void setUpViewPager() {
+        viewPager = findViewById(R.id.banner_view);
         List<String> list = Arrays.asList(picUrls);
+        viewPager.setAutoPlay(false).setCanLoop(true)
+                .setRoundCorner(DpUtils.dp2px(5))
+                .setIndicatorView(setupIndicatorView(list.size()))
+                .setHolderCreator(SlideModeViewHolder::new).create(list);
+    }
+
+    private DashIndicatorView setupIndicatorView(int pageSize) {
         DashIndicatorView indicatorView = new DashIndicatorView(this);
-        indicatorView.setPageSize(list.size());
+        indicatorView.setPageSize(pageSize);
         indicatorView.setIndicatorWidth(DpUtils.dp2px(8), DpUtils.dp2px(8));
         indicatorView.setSliderHeight(DpUtils.dp2px(4));
         indicatorView.setIndicatorGap(DpUtils.dp2px(5));
         indicatorView.setCheckedColor(getResources().getColor(R.color.colorAccent));
         indicatorView.setNormalColor(getResources().getColor(R.color.colorPrimary));
-        viewPager.setAutoPlay(false).setCanLoop(true)
-                .setRoundCorner(DpUtils.dp2px(5))
-                .setIndicatorView(indicatorView)
-                .setHolderCreator(SlideModeViewHolder::new).create(list);
+        return indicatorView;
+    }
+
+    @Override
+    protected void onStop() {
+        super.onStop();
+        viewPager.stopLoop();
+    }
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+        viewPager.startLoop();
     }
 }

+ 11 - 10
app/src/main/java/com/example/zhpan/circleviewpager/activity/CustomerBannerActivity.java → app/src/main/java/com/example/zhpan/circleviewpager/activity/CustomerBannerItemActivity.java

@@ -14,8 +14,7 @@ import com.zhpan.bannerview.BannerViewPager;
 import java.util.ArrayList;
 import java.util.List;
 
-public class CustomerBannerActivity extends AppCompatActivity {
-    private List<CustomBean> mList = new ArrayList<>();
+public class CustomerBannerItemActivity extends AppCompatActivity {
     private BannerViewPager<CustomBean, CustomPageViewHolder> mViewPager;
     private int[] imgRes = {R.drawable.guide0, R.drawable.guide1, R.drawable.guide2};
     private String[] des = {"在这里\n你可以听到周围人的心声", "在这里\nTA会在下一秒遇见你", "在这里\n不再错过可以改变你一生的人"};
@@ -24,8 +23,8 @@ public class CustomerBannerActivity extends AppCompatActivity {
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_customer_banner);
-        initData();
-        initViewPager();
+        getData();
+        setupViewPager();
     }
 
     @Override
@@ -34,27 +33,29 @@ public class CustomerBannerActivity extends AppCompatActivity {
         mViewPager.stopLoop();
     }
 
-    private void initViewPager() {
+    private void setupViewPager() {
         mViewPager = findViewById(R.id.viewpager);
         mViewPager.setAutoPlay(false)
                 .setCanLoop(false)
                 .showIndicator(false)
-                .setOnPageClickListener(position -> Toast.makeText(CustomerBannerActivity.this,
+                .setOnPageClickListener(position -> Toast.makeText(CustomerBannerItemActivity.this,
                         "点击页面" + (position + 1), Toast.LENGTH_SHORT).show())
                 .setHolderCreator(() -> {
                     CustomPageViewHolder customPageViewHolder = new CustomPageViewHolder();
-                    customPageViewHolder.setOnSubViewClickListener((view, position) -> Toast.makeText(CustomerBannerActivity.this,
+                    customPageViewHolder.setOnSubViewClickListener((view, position) -> Toast.makeText(CustomerBannerItemActivity.this,
                             "立即体验" + (position + 1), Toast.LENGTH_SHORT).show());
                     return customPageViewHolder;
-                }).create(mList);
+                }).create(getData());
     }
 
-    private void initData() {
+    private List<CustomBean> getData() {
+        List<CustomBean> list = new ArrayList<>();
         for (int i = 0; i < imgRes.length; i++) {
             CustomBean customBean = new CustomBean();
             customBean.setImageRes(imgRes[i]);
             customBean.setImageDescription(des[i]);
-            mList.add(customBean);
+            list.add(customBean);
         }
+        return list;
     }
 }

+ 0 - 19
app/src/main/java/com/example/zhpan/circleviewpager/activity/IndicatorStyleActivity.java

@@ -82,25 +82,6 @@ public class IndicatorStyleActivity extends AppCompatActivity {
                         Color.parseColor("#CCFF4C39")).create(mList);
     }
 
-    @Override
-    public boolean onCreateOptionsMenu(Menu menu) {
-        getMenuInflater().inflate(R.menu.indicator_slide_style_menu, menu);
-        return true;
-    }
-
-    @Override
-    public boolean onOptionsItemSelected(MenuItem item) {
-        switch (item.getItemId()) {
-            case R.id.menu0:
-                mViewPagerSmoothSlide.setIndicatorSlideMode(IndicatorSlideMode.NORMAL).create(mList);
-                break;
-            case R.id.menu1:
-                mViewPagerSmoothSlide.setIndicatorSlideMode(IndicatorSlideMode.SMOOTH).create(mList);
-                break;
-        }
-        return super.onOptionsItemSelected(item);
-    }
-
     @Override
     protected void onDestroy() {
         super.onDestroy();

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

@@ -37,7 +37,7 @@ public class MainActivity extends AppCompatActivity {
                 intent = new Intent(this, IndicatorStyleActivity.class);
                 break;
             default:
-                intent = new Intent(this, CustomerBannerActivity.class);
+                intent = new Intent(this, CustomerBannerItemActivity.class);
                 break;
         }
         startActivity(intent);

+ 2 - 8
app/src/main/java/com/example/zhpan/circleviewpager/activity/NetworkBannerActivity.java

@@ -120,8 +120,8 @@ public class NetworkBannerActivity extends RxAppCompatActivity {
     }
 
     @Override
-    protected void onPause() {
-        super.onPause();
+    protected void onStop() {
+        super.onStop();
         if (mBannerViewPager != null)
             mBannerViewPager.stopLoop();
     }
@@ -132,10 +132,4 @@ public class NetworkBannerActivity extends RxAppCompatActivity {
         if (mBannerViewPager != null)
             mBannerViewPager.startLoop();
     }
-
-    @Override
-    protected void onDestroy() {
-        super.onDestroy();
-        mBannerViewPager.stopLoop();
-    }
 }

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

@@ -17,14 +17,12 @@ public class PageTransformerActivity extends AppCompatActivity {
 
     private static final String TAG = "PageTransformerActivity";
     private BannerViewPager<Integer, TransformerViewHolder> mViewpager;
-    private ArrayList<Integer> mList = new ArrayList<>();
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_page_transformer);
         setTitle(R.string.title_transformer);
-        initData();
         initViewPager();
     }
 
@@ -60,21 +58,15 @@ public class PageTransformerActivity extends AppCompatActivity {
                 .setAutoPlay(false)
                 .setScrollDuration(1000)
                 .setHolderCreator(TransformerViewHolder::new)
-                .create(mList);
+                .create(getData());
     }
 
-
-    @Override
-    protected void onDestroy() {
-        super.onDestroy();
-        mViewpager.stopLoop();
-    }
-
-    private void initData() {
-        mList = new ArrayList<>();
+    private ArrayList<Integer> getData() {
+        ArrayList<Integer> list = new ArrayList<>();
         for (int i = 0; i <= 2; i++) {
             int drawable = getResources().getIdentifier("guide" + i, "drawable", getPackageName());
-            mList.add(drawable);
+            list.add(drawable);
         }
+        return list;
     }
 }

+ 1 - 1
bannerview/build.gradle

@@ -37,7 +37,7 @@ dependencies {
     implementation 'androidx.appcompat:appcompat:1.0.2'
 }
 
-version = "2.2.4"
+version = "2.3.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,一般填你唯一的包名