2013-06-26 2 views
14

Czy istnieje sposób na to, aby pakiet pomocy ViewPager był przyciągany do następnej strony z krótszym oporem? Domyślnym zachowaniem wydaje się być to, że nawet jeśli przeciągnę prawie 75% strona nadal będzie wracała do poprzedniej strony, kiedy odpuszczę. Chciałbym, aby próg przyciągania był krótszy, a zamiast tego wywołaj ViewPager na następną stronę.Utworzyć przystawkę ViewPager z krótszym opóĽnieniem

Należy zauważyć, że dotyczy to gestu przeciągania. Gwałtowny gest wymaga już znacznie krótszego gestu.

Odpowiedz

22

Można to zrobić ad-hoc, bez martwienia się zbytnio o składałoby ViewPager tak długo, jak chcesz, aby zwiększyć strefę docelowa:

private class MyPageChangeListener implements OnPageChangeListener { 
    private float mLastPositionOffset = 0f; 
    @Override 
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { 
     if(positionOffset < mLastPositionOffset && positionOffset < 0.9) { 
      mViewPager.setCurrentItem(position); 
     } else if(positionOffset > mLastPositionOffset && positionOffset > 0.1) { 
      mViewPager.setCurrentItem(position+1); 
     } 
     mLastPositionOffset = positionOffset; 
    } 
} 
+0

Pracował jak urok. Dziękuję Ci! – Juhani

+1

Dobry pomysł, chociaż wydaje mi się, że to trochę dziwne – astuetz

1

Wygląda na to, że te wartości są zakodowane w sposób prywatny, więc nie ma prostego sposobu na ich zastąpienie.

http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.2.2_r1/android/support/v4/view/ViewPager.java#2075

+3

poprawne, ale wartości aren” t 0,4/0,6f (ponieważ są to skracacze). Myślę, że * działa na 60% szerokości ViewPager dla obu kierunków. Rzut musi wynosić tylko 25 zanurzeń, z prędkością 400 dip/s. –

+0

@ChrisBanes Oczywiście masz rację, miałem tylko szybkie spojrzenie - dzięki! – astuetz

Powiązane problemy