studio from fragments con comunicar change activity android android-viewpager swipe direction

android - from - fragment interaction listener



Android SimpleOnPageChangeListener: determina la dirección del deslizamiento (2)

Use ViewPager.SimpleOnPageChangeListener y mantenga una var de instancia con la posición actual de la pestaña, de esa forma usted puede determinar de qué manera ha sido pasada.

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 } }

Tengo una clase que extiende SimpleOnPageChangeListener y en mi método onPageScrollStateChanged deseo poder determinar si el usuario ha pasado o retrocedido a través de ViewPager. Es decir, si han pasado de izquierda a derecha o de derecha a izquierda.

He hecho muchas búsquedas en Google sobre esto, pero no puedo encontrar nada al respecto. Esperaba que el método onPageScrollStateChanged proporcionara un parámetro que indicara en qué dirección estaba el deslizamiento, pero no es así.

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

¿Alguien tiene alguna idea?

Saludos, Mike


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; }