Create anim folder in res folder. Create file named in_up
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromXDelta="-100%" android:toXDelta="0%" android:fromYDelta="0%" android:toYDelta="0%" android:duration="700"/>
Create another file named out_down
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromXDelta="0%" android:toXDelta="0%" android:fromYDelta="-100%" android:toYDelta="0%" android:duration="700"/>
To detect swipe left and right you can use this code.
Create variables
private float y1,y2; static final int MIN_DISTANCE = 150;
And override onTouchEvent().
@Override public boolean onTouchEvent(MotionEvent event) { switch(event.getAction()) { case MotionEvent.ACTION_DOWN: y1 = event.getY(); break; case MotionEvent.ACTION_UP: y2 = event.getY(); float deltaY = y2 - y1; if (Math.abs(deltaY) > MIN_DISTANCE) { MyFragment myFragment = new MyFragment(); myFragment.show(this.getSupportFragmentManager(), "my fragment"); overridePendingTransition(R.anim.in_up, R.anim.out_down); } break; } return super.onTouchEvent(event); }
ViewPager, as "out-of-the-box" it has callbacks for scrolling, and is designed for flipping through Fragments ..ViewPager2(forget the oldViewPager) to achieve stable vertical paging. AndPageTransformerto put theOpenViews in between the fragments. Vertical paging with the oldViewPageris not working propery, because the privateslopeparameter is not well-set for different screen sizes (it's only good for hotizontal swipes). This is fixed withViewPager2(amongst other issues).