|
@@ -1,14 +1,18 @@
|
|
|
-# 全新2.0.0版本发布,正式改名为BannerViewPager.
|
|
|
|
|
|
|
|
|
-
|
|
|
+## 全新2.0.0版本发布,正式改名为BannerViewPager.
|
|
|
+
|
|
|
+
|
|
|
+[外链图片转存失败(img-svwgo7K8-1563331094669)(https://github.com/zhpanvip/BannerViewPager/blob/v_2.0.0/image/ezgif-4-f4cd74cd939d.gif)]
|
|
|
+
|
|
|
+ - **1.gradle中添加依赖**
|
|
|
|
|
|
-1.gradle中添加依赖
|
|
|
```
|
|
|
implementation 'com.zhpan.library:bannerview:2.0.0'
|
|
|
```
|
|
|
|
|
|
-2.在xml文件中添加如下代码:
|
|
|
+ - **2.在xml文件中添加如下代码:**
|
|
|
+
|
|
|
```
|
|
|
<com.zhpan.bannerview.view.BannerViewPager
|
|
|
android:id="@+id/viewpager"
|
|
@@ -25,35 +29,38 @@ implementation 'com.zhpan.library:bannerview:2.0.0'
|
|
|
android:layout_height="150dp"
|
|
|
android:layout_margin="10dp" />
|
|
|
```
|
|
|
-3.BannerViewPager属性
|
|
|
-Banner支持圆角s
|
|
|
+
|
|
|
+ - **3.BannerViewPager开放API**
|
|
|
+
|
|
|
+开放接口
|
|
|
+| 方法名 | 方法描述 | 默认值 |
|
|
|
+|--|--|--|
|
|
|
+| startLoop() |开启自动轮播 | |
|
|
|
+| stopLoop() | 停止自动轮播 | |
|
|
|
+| setInterval(int interval) | 自动轮播事件间隔 |3000 |
|
|
|
+| setCanLoop(boolean canLoop) | 是否可以循环 | true|
|
|
|
+| setRoundCorner(@DimenRes int radius) | 设置圆角 | |
|
|
|
+| setRoundCorner(float radius) | 设置圆角 | |
|
|
|
+| isShowIndicator(boolean showIndicator) | 是否显示指示器|true |
|
|
|
+| setIndicatorGravity(int gravity) | 指示器位置(Start、Center、End) | Center |
|
|
|
+| setIndicatorRadius(float indicatorRadius) | 指示器圆点半径 | 4|
|
|
|
+|setCurrentItem(final int position) | 设置当前选中的页面| |
|
|
|
+| setCurrentItem(final int position, final boolean smoothScroll) | 设置当前选中的页面 | |
|
|
|
+| setData(List<T> list, HolderCreator<VH> holderCreator) |设置Banner数据 | |
|
|
|
+
|
|
|
+ - **4.Demo示例**
|
|
|
+
|
|
|
```
|
|
|
|
|
|
- 2.0.0新增Api
|
|
|
- // Banner支持圆角
|
|
|
mViewPager.setRoundCorner(R.dimen.banner_corner)
|
|
|
- // 新增页面滑动时间
|
|
|
mViewPager.setScrollDuration(1000)
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- // 是否显示指示器
|
|
|
- mViewpager.isShowIndicator(true);
|
|
|
- // 设置指示器位置
|
|
|
+ mViewpager.isShowIndicator(true);
|
|
|
mViewpager.setIndicatorGravity(CircleViewPager.IndicatorGravity.END);
|
|
|
- // 设置指示器圆点半径
|
|
|
mViewpager.setIndicatorRadius(6);
|
|
|
- // 设置指示器颜色
|
|
|
mViewPager.setIndicatorColor(Color.parseColor("#6C6D72"),
|
|
|
Color.parseColor("#FFFFFF"));
|
|
|
-
|
|
|
-
|
|
|
- // 设置图片切换时间间隔
|
|
|
mViewpager.setInterval(3000);
|
|
|
- // 设置是否无限循环
|
|
|
mViewpager.setCanLoop(true);
|
|
|
- // 设置是否自动轮播
|
|
|
mViewpager.setAutoPlay(true);
|
|
|
|
|
|
|
|
@@ -66,49 +73,50 @@ Banner支持圆角s
|
|
|
}
|
|
|
});
|
|
|
// 设置数据
|
|
|
- mViewpager.setData(mList, new HolderCreator<ViewHolder>() {
|
|
|
+ mViewpager.setData(mDataList, new HolderCreator<DataViewHolder>() {
|
|
|
@Override
|
|
|
- public ViewHolder createViewHolder() {
|
|
|
- return new MyViewHolder();
|
|
|
+ public DataViewHolder createViewHolder() {
|
|
|
+ return new DataViewHolder();
|
|
|
}
|
|
|
});
|
|
|
```
|
|
|
|
|
|
- 4.自定义ViewHolder
|
|
|
-
|
|
|
+**自定义ViewHolder**
|
|
|
|
|
|
-
|
|
|
```
|
|
|
-public class MyViewHolder implements ViewHolder<Object> {
|
|
|
- private ImageView mImageView;
|
|
|
+public class DataViewHolder implements ViewHolder<DataBean> {
|
|
|
+ private ImageView mImageView;
|
|
|
+ private TextView mTvDescribe;
|
|
|
|
|
|
- @Override
|
|
|
- public View createView(Context context) {
|
|
|
- // 返回页面布局文件
|
|
|
- View view = LayoutInflater.from(context).inflate(R.layout.banner_item, null);
|
|
|
- mImageView = (ImageView) view.findViewById(R.id.banner_image);
|
|
|
- return view;
|
|
|
- }
|
|
|
+ @Override
|
|
|
+ public View createView(ViewGroup viewGroup, Context context, int position) {
|
|
|
+ // 返回页面布局文件
|
|
|
+ View view = LayoutInflater.from(context).inflate(R.layout.item_view, viewGroup, false);
|
|
|
+ mImageView = view.findViewById(R.id.banner_image);
|
|
|
+ mTvDescribe = view.findViewById(R.id.tv_describe);
|
|
|
+ return view;
|
|
|
+ }
|
|
|
|
|
|
+ @Override
|
|
|
+ public void onBind(final Context context, DataBean data, final int position, final int size) {
|
|
|
+ final DataBean dataBean = data;
|
|
|
+ ImageLoaderUtil.loadImg(mImageView, dataBean.getUrl(), R.drawable.placeholder);
|
|
|
+ mTvDescribe.setText(dataBean.getDescribe());
|
|
|
+ mImageView.setOnClickListener(new View.OnClickListener() {
|
|
|
@Override
|
|
|
- public void onBind(Context context, int position, Object data) {
|
|
|
- // 数据绑定
|
|
|
- if (data instanceof Integer)
|
|
|
- mImageView.setImageResource((Integer) data);
|
|
|
- else if (data instanceof String) {
|
|
|
- ImageLoaderUtil.loadImg(mImageView, (String) data);
|
|
|
- }
|
|
|
+ public void onClick(View v) {
|
|
|
+ Toast.makeText(context, position + "点击了" + dataBean.getDescribe() + " 页面数" + size, Toast.LENGTH_SHORT).show();
|
|
|
}
|
|
|
- }
|
|
|
+ });
|
|
|
+ }
|
|
|
+}
|
|
|
```
|
|
|
-
|
|
|
-5.为防止内存泄露在onDestory()中停止图片轮播
|
|
|
+**为防止内存泄露在onDestory()中停止图片轮播**
|
|
|
```
|
|
|
@Override
|
|
|
protected void onDestroy() {
|
|
|
+ mViewpager.stopLoop();
|
|
|
super.onDestroy();
|
|
|
- mViewPager2.stopLoop();
|
|
|
- mViewpager.stopLoop();
|
|
|
}
|
|
|
```
|
|
|
|