Android auto scroll loop viewpager
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'- 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();
}
}
});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);- see more: FiniteBanner
interval(long)set auto scroll time in milliseconds, default isDEFAULT_INTERVAL.direction(int)set auto scroll direction, default isRIGHT.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
