Android SimpleOnPageChangeListener - determining the direction of movement

I have a class that extends SimpleOnPageChangeListener, and in my onPageScrollStateChanged method I want to determine if the user skipped forward or backward through the ViewPager. That is, whether they scrolled from left to right or from right to left.

I have done a lot for this, but I can’t find anything. I expected the onPageScrollStateChanged method to provide a parameter indicating which direction the page was in, but it does not.

@Override public void onPageScrollStateChanged(int state) { // Determine whether the user is swiping forwards or backwards through the ViewPager } 

Does anyone have any ideas?

Greetings Mike

+6
source share
2 answers

Use ViewPager.SimpleOnPageChangeListener and save the var instance with the current pos tab so you can determine how it was scrolled.

 private final ViewPager.SimpleOnPageChangeListener mPageChangeListener = new ViewPager.SimpleOnPageChangeListener() { @Override public void onPageSelected(final int position) { onTabChanged(mPager.getAdapter(), mCurrentTabPosition, position); mCurrentTabPosition = position; } }; protected void onTabChanged(final PagerAdapter adapter, final int oldPosition, final int newPosition) { //Calc if swipe was left to right, or right to left if (oldPosition>newPosition){ // left to right } else{ //right to left } } 
+2
source
  int prevPage; @Override public void onPageSelected(int position) { // went back a page if (position-1 == prevPage) { Log.i("Swipped", "Swipped Left"); } // went up a page if (position+1 == prevPage) { Log.i("Swipped", "Swipped Right"); } prevPage = position; } 
0
source

Source: https://habr.com/ru/post/922343/


All Articles