一个支持图片无限轮播的控件,内部采用ViewPager
进行实现,现暂时支持以下切换动画效果
-
淡入淡出:
Transformers.DEFAULT
-
先快后慢:
Transformers.DAMPING
-
窗口切换效果:
Transformers.FLIP
-
FLIPOG
ransformers.ROTATION_3D
-
垂直方向:
Transformers.DAMPING_VERTICAL
扩展:可以通过实现AbsTransformer
和 ViewPager.PageTransformer
接口实现自定义切换动画
VarietyTabLayout
的使用依赖 ViewPager
,所以也需要加上 ViewPager
的依赖
implementation 'com.ytempest:banner:1.0'
继承 AbsBannerBinder
实现Banner
的内容View
,绑定数据,同时可以选择创建一个Banner
的标题栏,可以不使用标题栏
public class BannerBinder extends AbsBannerBinder<BannerBean> {
@NonNull
@Override
protected View onCreateContentView(LayoutInflater inflater, ViewGroup container, BannerBean data, int position) {
return inflater.inflate(R.layout.item_banner_content, container, false);
}
@Nullable
@Override
protected View onCreateTitleView(LayoutInflater inflater, ViewGroup container) {
return inflater.inflate(R.layout.item_banner_title, container, false);
}
@Override
protected void onUpdateTitleView(@Nullable View view, BannerBean data, int position, int count) {
}
}
配置banner
mBanner = findViewById(R.id.view_main_banner);
// 设置数据绑定器
mBanner.setBannerBinder(new BannerBinder());
// 设置banner展示时间
mBanner.setPlayDuration(2000);
// 设置banner切换动画时间
mBanner.setScrollDuration(1000);
// 设置标题栏在banner的位置
mBanner.setBannerTitleGravity(Gravity.BOTTOM);
// 设置切换动画
mBanner.setScrollAnimation(Transformers.FLIP);
// 展示数据
List<BannerBean> list = new ArrayList<>();
// TODO list.add()
mBanner.display(list);
// 开启轮播
mBanner.startAutoPlay();
// 关闭轮播
mBanner.stopAutoPlay();