支持图片无限轮播的BannerLayout,小圆点,提示栏,页码统统满足

github地址:BannerLayout

支持功能

  • 可自定义小圆点,title,提示栏位置,支持自定义selector选择器

  • 可自定义是否自动轮播,轮播时间

  • 支持List 、数组 两种数据格式

  • 支持点击事件以及轮播速度及viewPager滑动切换速度

  • 支持是否显示小圆点,title,或者整个提示栏

  • 支持加载时和加载失败时显示自定义图片

  • 支持选择暂停 恢复 轮播状态

  • 支持自定义提示栏(不建议使用)

  • 支持动画以及垂直滚动

使用效果

基础使用方法

项目中引用

    compile 'com.ydevelop:bannerlayout:1.0.4'

更新状态

1.0.4 : 新增页码展示View,修复滑动卡顿问题
...

如果是网络加载图片 记得添加

<uses-permission android:name="android.permission.INTERNET" />

简单使用方式

        bannerLayout
                .initListResources(initImageModel())//初始化数据
                .initTips(true, true, true)//设置tips
                .start(true, 2000)//轮播 轮播时间

调用start()的时候可以决定是否开启自动轮播,如果开启了自动轮播应该在合适的生命周期里选择暂停或者恢复轮播

startBanner(); //开启轮播
stopBanner(); //停止轮播
restoreBanner(); //恢复轮播

0.页码展示:

       bannerLayout
                .initListResources(initImageModel())
                .setPageNumViewMargin(10, 0, 0, 10)
                .setPageNumViewTextColor(R.color.colorAccent)
                .setPageNumViewBackgroundColor(R.color.colorWhite)
                .initPageNumView()
                .initTips(true, true, true)
                .start(true);

1.数组

数组使用也是在内部转化成List数据,所以点击事件以及自定义ImageLoaderManager传递的泛型均为BannerModel

    Object[] mImage = ;
    String[] mTitle = ;
    bannerLayout
            .initArrayResources(mImage, mTitle)
            .initTips();

2.List

    List<BannerModel> mDatas = new ArrayList<>();
    ...
    bannerLayout
            .initImageListResources(mDatas)
            .initTips()
            .start(true);   

3.点击事件

如果不传递泛型,返回的model就是当前Bean类,强转即可,建议传递泛型

        bannerLayout
         .initListResources(initImageModel())
         .setOnBannerClickListener(new OnBannerClickListener<ImageModel>() {
             @Override
             public void onBannerClick(int position, ImageModel model) {
               Toast.makeText(holder.getContext(), model.getTestText(), Toast.LENGTH_SHORT).show();
                    }
                });

4.提示栏及小圆点、title位置的改变

setTipsSite()               提示栏在布局中的位置,top,bottom,centered三种可选 
setDotsSite()               小圆点在提示栏的位置,left,centered,right三种可选 
setTitleSite()              title在提示栏的位置,left,centered,right三种可选 

xml:
        <com.bannerlayout.widget.BannerLayout
            ...
            app:tips_site="centered" />

5.使用自定义Bean类

简单的使用BannerModel就可以满足需求,如果点击要传递Id之类的参数,就自定义Model类

1.url和title和BannerModle的image,title.命名方式一样,那么直接继承BannerModel即可,其余的参数写在自定义Bean类.
2.url和BannerModle的image命名方式不同,就必须要自定义ImageLoaderManage,因为BannerLayout默认的是获取BannerModel里面的image
3.title和BannerModle的title命名方式不同,实现OnBannerTitleListener,返回title即可

自定义ImageLoaderManager请看第六条

自定义Bean类完整示例:
     bannerLayout
                .setImageLoaderManager(new ImageManager())
                .addOnBannerTitleListener(new OnBannerTitleListener() {
                    @Override
                    public String getTitle(int newPosition) {
                        return initBannerBean().get(newPosition).getThisTitle();
                    }
                })
                .initImageListResources(initBannerBean())
                .initTips(true, true, true);

6.使用自定义加载图片框架

BannerLayout内部引用Glide3.7.0,如果不想在你的项目中使用这个版本,请用exclude将它排除掉,再自行引入你使用的版本

默认使用Glide加载图片,如果不喜欢的继承 ImageLoaderManager 然后在代码中 setImageLoaderManager.

 bannerLayout
            .initImageListResources(mBanner)
            .setImageLoaderManage(new ImageLoader()) //自己定义加载图片的方式
            .initTips(true, true, false)
            .start(true);

public class ImageManager implements ImageLoaderManager<BannerBean> {

    @Override
    public void display(Context context, ImageView imageView, BannerBean model) {
        Picasso.with(context)
                .load(model.getImageUrl())
                .placeholder(R.mipmap.ic_launcher)
                .error(R.mipmap.ic_launcher)
                .into(imageView);
    }
}

7.切换动画以及速度

垂直滚动的动画

viewpager的垂直这里用的是动画,所以只要选择了垂直滚动,设置动画无效

动画内置的 ViewPagerTransforms,多谢作者

如果想自定义动画请继承 ABaseTransformer 或者 BannerTransformer 即可;

        bannerLayout
                .initImageListResources(list) //自定义model类
                .initTips()
                .setBannerTransformer(new FlipVerticalTransformer())  //切换动画效果
                .setBannerTransformerList(transformers) //开启随机动画,这里设置,那就没必要设置切换动画效果了,需要一个list动画集合
                .setDuration(3000) //切换速度
                .start();

如果只想使用内置的动画可以用 BannerAnimationType 进行选择

例:

       bannerLayout
                .initImageListResources(list) //自定义model类
                .initTips()
                .setBannerTransformer(BannerAnimationType.CUBE_IN)
                .start();

8.动画集合:

自定义动画集合

    List<BannerTransformer> transformers = new ArrayList<>();

    bannerLayout.setBannerTransformerList(transformers);

系统动画集合

     List<BannerAnimationType> enumTransformer = new ArrayList<>();

    bannerLayout.setBannerSystemTransformerList(enumTransformer);

9.自定义提示栏

自定义提示栏不建议使用,没有什么能快速设置的功能请尽量提lssues

    bannerLayout
            .initListResources(mDatas)
            .addOnBannerPageChangeListener(new BannerOnPage())
            .setTipsView(new PromptBarView(getBaseContext())) 
            .start(true);

 /**
 * 接管viewpager的onPage方法
 */
public class BannerOnPage implements OnBannerPageChangeListener {

    @Override
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

    }

    @Override
    public void onPageSelected(int position) {
    }

    @Override
    public void onPageScrollStateChanged(int state) {

    }
}

自定义参数详解

属性名说明属性值
delay_time轮播时间默认2s
start_rotation是否开启自动轮播true 开启,默认不开启
view_pager_touch_modeviewpager是否可以手动滑动true禁止滑动,false可以滑动,默认可以滑动
banner_durationviewPager切换速度默认800,越大越慢
banner_isVerticalviewPager垂直滚动默认不是垂直滚动,true开启
dots_visible是否显示小圆点默认显示
dots_selector小圆点状态选择器可参考自带的
dots_left_margin小圆点的marginLeft默认10
dots_right_margin小圆点的marginRight默认10
dots_width小圆点width默认15
dots_height小圆点height默认15
is_tips_background是否显示提示控件的背景true 显示,默认不显示
tips_backgroundBannerTips背景色默认半透明色
tips_widthBannerTips宽度填充屏幕
tips_heightBannerTips高度默认50
glide_error_imageglide加载错误占位符默认android自带图标
glide_place_imageglide加载中占位符默认android自带图标
title_visible是否显示title默认不显示
title_size字体大小默认12
title_color字体颜色默认黄色
title_width字体width默认自适应
title_height字体height默认自适应
title_left_margintitle marginLeft默认10
title_right_margintitle marginRight默认10
enabledRadius未选中小圆点Radius默认0.5f
normalRadius选中小圆点Radius默认0.5f
enabledColor未选中小圆点颜色默认蓝色
normalColor选中小圆点颜色默认白色
tips_sitetips在布局中位置默认底部,可选上中下
dots_site小圆点在布局中位置默认底部,可选左中右
title_sitetitle在布局中位置默认底部,可选左中右
page_num_view_radiuspageNumView shape radius默认25f
page_num_view_paddingToppageNumView padding Top默认5
page_num_view_paddingLeftpageNumView padding Left默认20
page_num_view_paddingRightpageNumView padding Right默认20
page_num_view_paddingBottompageNumView padding Bottom默认5
page_num_view_marginToppageNumView margin默认0
page_num_view_marginLeftpageNumView margin默认0
page_num_view_marginRightpageNumView margin默认0
page_num_view_marginBottompageNumView margin默认0
page_num_view_textColorpageNumView textColor默认白色
page_num_view_BackgroundColorpageNumView BackgroundColor默认半透明
page_num_view_textSizepageNumView textSize默认10
pageNumView_sitepageNumView 位置默认初始化之后在左上角










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值