Skip to content

Repository files navigation

ScrollLoopViewPager

Android auto scroll loop viewpager

ScreenShot

AutoScrollLoopViewPager

Import

  • maven
<dependency>
<groupId>com.bobomee.android</groupId>
<artifactId>scrollloopviewpager</artifactId>
<version>2.1</version>
<type>aar</type>
</dependency>
  • gradle
compile 'com.bobomee.android:scrollloopviewpager:2.1'

Usage

  • Simple
privatevoidinitViewPager(Viewview) {
ViewPagerviewPager = ViewFindUtils.find(view, R.id.viewpager);
viewPager.setAdapter(newFragmentStateAdapter(getChildFragmentManager()));
finalBannerControllerbannerController = newBannerController(getActivity());
bannerController.viewPager(viewPager);
viewPager.setOnTouchListener(newView.OnTouchListener() {
@OverridepublicbooleanonTouch(Viewv, MotionEventevent) {
bannerController.dispatchTouchEvent(event);
returnfalse;
}
});
bannerController.startAutoScroll();
}
finalBannerConfigbannerConfig = BannerConfig.sConfig(getContext())
.autoScrollFactor(0.8f)
.swipeScrollFactor(1.2f)
.interval(800);
finalBannerControllerbannerController = newBannerController(bannerConfig);
bannerController.viewPager(viewPager);
finalBannerControllerlBannerController = newBannerScroll(lBannerConfig);//use custom configlBannerController.viewPager(lViewPager); // attach viewpagerlViewPager.setOnTouchListener(newView.OnTouchListener() {
@OverridepublicbooleanonTouch(Viewv, MotionEventevent) {
lBannerController.dispatchTouchEvent(event);// dispatchTouchEvent,stop scroll when touchreturnfalse;
}
});
  • Advance
viewPager.addOnPageChangeListener(newViewPager.SimpleOnPageChangeListener() {
@OverridepublicvoidonPageSelected(intposition) {
super.onPageSelected(position);
if (bannerController.isFirst() || bannerController.isLast()) {
bannerController.toggleDirection();
}
}
});

Extends

However, you can also customize Viewpager

publicclassInfiniteBannerextendsLoopViewPager {
privateBannerScrollmBannerScroll;
publicInfiniteBanner(Contextcontext) {
super(context);
init();
}
publicInfiniteBanner(Contextcontext, AttributeSetattrs) {
super(context, attrs);
init();
}
privatevoidinit() {
mBannerScroll = newBannerScroll(getContext());
mBannerScroll.viewPager(this);
mBannerScroll.startAutoScroll();
}
@OverridepublicbooleandispatchTouchEvent(MotionEventev) {
mBannerScroll.dispatchTouchEvent(ev);
returnsuper.dispatchTouchEvent(ev);
}
@OverrideprotectedvoidonDetachedFromWindow() {
mBannerScroll.onDetachedFromWindow();
super.onDetachedFromWindow();
}
}
ViewPagerviewPager = ViewFindUtils.find(view, viewpager);
FragmentStateAdapterfragmentStateAdapter = newFragmentStateAdapter(fragmentManager);
viewPager.setAdapter(fragmentStateAdapter);

Config Setting

  • interval(long) set auto scroll time in milliseconds, default is DEFAULT_INTERVAL.
  • direction(int) set auto scroll direction, default is RIGHT.
  • autoScrollFactor(double) set the factor by which the duration of sliding animation will change.
  • stopScrollWhenTouch(boolean) set whether stop auto scroll when touching, default is true.
  • You may need JakeWharton/ViewPagerIndicator to implement indicator.
  • Also you can see DrawableIndicator

Thanks

About

AutoScrollLoopViewPager, 无限轮播的Banner

Topics

Resources

Stars

46 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages