From the code here, I have a ViewPager that sets an adapter. Is there any way to disable the scrolling animation so that it just "jumps" to the new page when I swipe? I'm not looking to disable the whole scrolling function in onTouchEvent
and onInterceptTouchEvent
, just the sliding animation.
mSectionsPagerAdapter = new SectionsPagerAdapter(getFragmentManager());
// Set up the ViewPager with the sections adapter.
mViewPager = (CustomViewPager) findViewById(R.id.pager);
mViewPager.setAdapter(mSectionsPagerAdapter);
I do not know if there is a clean solution. But you can use a trick and undo the standard page transformer with another transformer. The NoPageTransformer
would look like this:
private static class NoPageTransformer implements ViewPager.PageTransformer {
public void transformPage(View view, float position) {
if (position < 0) {
view.setScrollX((int)((float)(view.getWidth()) * position));
} else if (position > 0) {
view.setScrollX(-(int) ((float) (view.getWidth()) * -position));
} else {
view.setScrollX(0);
}
}
}
To add it to your ViewPager, call:
mViewPager.setPageTransformer(false, new NoPageTransformer());
Will work in SDK version 16 and above.
Kotlin:
viewpager.setPageTransformer(false, FadePageTransformer())
inner class FadePageTransformer : ViewPager.PageTransformer {
override fun transformPage(view: View, position: Float) {
view.translationX = view.width * -position
if (position <= -1.0f || position >= 1.0f) {
view.alpha = 0.0f
view.setVisibility(View.GONE);
} else if (position == 0.0f) {
view.alpha = 1.0f
view.setVisibility(View.VISIBLE);
} else {
// position is between -1.0F & 0.0F OR 0.0F & 1.0F
view.alpha = 1.0f - Math.abs(position)
view.setVisibility(View.GONE);
}
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With