我来给大家介绍一个rxjava+viewpager组成的CarouselView 自定义控件;它能实现以下功能

首先是实现引导页效果,只需加入轮播的数据,并设置底部切换图片即可,如果不想设置底部图片,默认-1代表的是设置默认的小圆点
welcomeCarouselview.setDotCarouselData(getList(),R.drawable.selector, R.drawable.select_no);
这里提供了滑动监听事件来监听滑动page;
welcomeCarouselview.setOnPageChangeListerer(new OnPageChangeListerer() {
@Override
public void onPageChange(int i) {
tvAction.setVisibility(i==2? View.VISIBLE:View.GONE);
}
});

这里实现的是我们最常见的轮播图,并且它可以实现如上几个方法和属性;除此之外rxjava就派上了用场。
直接上代码:
当页面Pause 时,可以暂停viewpager的滚动,增加app性能,减少不必要的负荷
@Override
protected void onPause() {
super.onPause();
if(actMainCv!=null){//当activity 不可见时,可以停止滚动,增加app性能,减少不必要的负荷
actMainCv.stopCarousel();
}
}
当页面onResume时,继续滚动
@Override
protected void onResume() {
super.onResume();
if(actMainCv!=null){//当activity 可见时,开启滚动
actMainCv.startCarousel();
}
}
也许有人会说,当界面销毁时候,没有对rxjava做处理,其实 我已经在CarouselView的onDetachedFromWindow() 方法中做了处理
/**
* 停止自动轮播
*/
public void stopCarousel() {
if (mDisposable !=null && !mDisposable.isDisposed()) {
mDisposable.dispose();
}
}
@Override
protected void onDetachedFromWindow() {
stopCarousel();
mDisposable=null;
if (mAdapter !=null) {
mAdapter.setOnItemClick(null);
}
super.onDetachedFromWindow();
}

有的时候,我们会看到需求,实现不同布局的滚动,并且可以禁止滑动,就可以
carouselView.setCarouselViewScroll(false);//true允许滑动、false禁止滑动
还有其它小属性就不介绍了,有兴趣的可以下载看看,有问题发我邮箱