美文网首页Android开发实战总结
android-banner项目的使用

android-banner项目的使用

作者: 啸林 | 来源:发表于2017-10-11 15:41 被阅读798次

    文章概述:

    本篇文章记录开源的Banner库:android-banner 的使用。android-banner实现了一般banner循环轮播的效果,一页只显示一张图片,也可以一页显示一张图和相邻两个图片的一部分,此项目仅仅是banner展示图片,没有多余的诸如指示器、页面切换动画等效果代码,详见效果图和案例代码。

    项目地址:https://github.com/cnlius/android-banner

    overview

    效果图效果图

    usage

    Gradle

    repositories {
        maven { url 'https://jitpack.io' }
    }
    
    dependencies {
        compile 'com.github.cnlius:android-banner:0.0.2'
    }
    

    ProGuard

    -keep class com.lw.banner.** {*;}
    

    Layout

    <com.lw.banner.Banner
        android:id="@+id/banner"
        android:layout_width="match_parent"
        android:layout_height="160dp" />
    

    xml中可设置的一些属性

    属性名称 属性值类型 作用
    delayTime integer 循环轮播时间间隔
    scrollDuration integer banner滚动过程持续时间
    isAutoPlay boolean 是否自动轮播
    scrollable boolean banner是否可以手动滑动
    pageMargin dimension banner页面之间的间隔
    pageLimit integer banner预加载页面数
    leftPageWidth dimension 当前页面左侧页面可以显示的宽度
    rightPageWidth dimension 当前页面右侧页面可以显示的宽度
    emptyImage reference banner为空时的占位图片资源引用

    案例:xml中设置循环轮播时间间隔

    <com.lw.banner.Banner
        android:id="@+id/banner"
        android:layout_width="match_parent"
        android:layout_height="160dp"
        app:delayTime="1000"/>
    

    Code

    List<String> urls=getUrls();
    banner.setImages(urls)
            .setImageLoader(new GlideImageLoader())
            .init();       
    

    代码中可以配置的一些属性:

    banner.setImages(Arrays.asList(imgRes)) //设置图片资源
            //.setImageLoader(new FrescoImageLoader()) // 设置fresco图片加载器
            .setImageLoader(new GlideImageLoader()) //设置Glide图片加载器
            //.setPageTransformer(true, new PageScaleYTransformer()) //页面切换动画
            .setOnItemClickListener(new Banner.OnItemClickListener() {
                @Override
                public void callBack(int position) {
                    Toast.makeText(MainActivity.this, "position=" + position, Toast.LENGTH_SHORT).show();
                }
            }) //设置banner点击监听
            //.setScrollable(false) // 禁用banner手动滑动
            //.setDelayTime(1000) // 循环轮播时间间隔
            //.setPageLimit(4) // 设置预加载页面数量
            //.setPageMargin(20) // banner页面之间的间隔
            //.setRightPageWidth(50) // 当前页面右侧页面可以显示的宽度
            //.setLeftPageWidth(50) // 当前页面左侧页面可以显示的宽度
            //.setEmptyImageRes(R.mipmap.no_banner) // banner为空时占位图
            //.setEmptyImageScaleType(ImageView.ScaleType.FIT_CENTER) // 占位图的缩放类型,默认FIT_XY
            .isAutoPlay(true) // 设置自动循环轮播
            .init();
    // 拿到占位图ImageView对象
    ImageView emptyView = mBinding.banner2.getEmptyView();
    emptyView.setImageResource(R.mipmap.mn_01);
    // 拿到BannerViewPager对象
    BannerViewPager bannerViewPager = mBinding.banner2.getBannerViewPager();      
    

    生命周期中控制循环轮播的周期

    @Override
    protected void onStart() {
        super.onStart();
        //开始轮播
        banner.startAutoPlay();
    }
    @Override
    protected void onStop() {
        super.onStop();
        //结束轮播
        banner.stopAutoPlay();
    }
    

    参考

    https://github.com/youth5201314/banner

    相关文章

      网友评论

        本文标题:android-banner项目的使用

        本文链接:https://www.haomeiwen.com/subject/gquwyxtx.html