可能会有部分小伙伴没有见过魅族Banner
的效果,我展示一下效果,让小伙伴们看看。
这样的一个效果,我们可以通过MZBannerView
开源库快速直接实现。
MZBannerView
这是一个快速实现Banner
的开源库,主要有以下功能:
- 仿魅族BannerView 效果。
- 当普通Banner 使用。
- 当普通ViewPager 使用。
- 当普通ViewPager使用(有魅族Banner效果)
- 仿爱奇艺Banner效果。
导入项目
根build.gradle
项目加入:
allprojects {
repositories {
jcenter()
maven { url "https://jitpack.io" }
}
}
app
的build.gradle
加入:
implementation 'com.github.pinguo-zhouwei:MZBannerView:v2.0.2'
截止我博客,开源库的版本是2.0.2
。最新的版本请查看开源库wiki
自定义属性
属性名称 | 属性说明 | 取值 |
---|---|---|
open_mz_mode | 是否开启魅族模式 | true 为魅族Banner效果,false 则普通Banner效果 |
canLoop | 是否轮播 | true 轮播,false 则为普通ViewPager |
indicatorPaddingLeft | 设置指示器距离左侧的距离 | 单位为 dp 的值 |
indicatorPaddingRight | 设置指示器距离右侧的距离 | 单位为 dp 的值 |
indicatorAlign | 设置指示器的位置 | 有三个取值:left 左边,center 剧中显示,right 右侧显示 |
middle_page_cover | 设置中间Page是否覆盖(真正的魅族Banner效果) | true 覆盖,false 无覆盖效果 |
使用示例
1.XML示例:
<com.zhouwei.mzbanner.MZBannerView
android:id="@+id/banner"
android:layout_width="match_parent"
android:layout_height="200dp"
android:layout_marginTop="10dp"
app:open_mz_mode="true"
app:canLoop="true"
app:indicatorAlign="center"
app:indicatorPaddingLeft="10dp"
/>
2.activity中代码:
mMZBanner = (MZBannerView) view.findViewById(R.id.banner);
// 设置数据
mMZBanner.setPages(list, new MZHolderCreator<BannerViewHolder>() {
@Override
public BannerViewHolder createViewHolder() {
return new BannerViewHolder();
}
});
public static class BannerViewHolder implements MZViewHolder<Integer> {
private ImageView mImageView;
@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 void onBind(Context context, int position, Integer data) {
// 数据绑定
mImageView.setImageResource(data);
}
}
3.如果是当Banner使用,注意在onResume 中调用start()方法,在onPause中调用 pause() 方法。如果当普通ViewPager使用,则不需要。
@Override
public void onPause() {
super.onPause();
mMZBanner.pause();//暂停轮播
}
@Override
public void onResume() {
super.onResume();
mMZBanner.start();//开始轮播
}