Android

Android-分享一个仿魅族Banner的开源库(MZBann

2022-08-11  本文已影响0人  阿博聊编程
图片来源网络,入侵必删

可能会有部分小伙伴没有见过魅族Banner的效果,我展示一下效果,让小伙伴们看看。

开源库效果

这样的一个效果,我们可以通过MZBannerView开源库快速直接实现。

MZBannerView

这是一个快速实现Banner的开源库,主要有以下功能:

导入项目

build.gradle项目加入:

allprojects {
   repositories {
      jcenter()
      maven { url "https://jitpack.io" }
   }
}

appbuild.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();//开始轮播
    }
上一篇 下一篇

猜你喜欢

热点阅读