2013-06-26 26 views
14

ViewPager destek paketi daha kısa sürükle bir sonraki sayfaya eklenecek bir yol var mı? Varsayılan davranış, sayfanın yaklaşık% 75'ini sürüklesem bile, bıraktığımda sayfanın bir önceki sayfaya geri çekilebileceği gibi görünüyor. Ek eşiği kısaltmak ve ViewPager'i bir sonraki sayfaya yapıştırmak istiyorum.ViewPager ekini daha kısa sürükle bırak ile yapın

Bunun, sürükleme hareketine uygulandığını unutmayın. Bir atlatma hareketi zaten çok daha kısa bir hareket gerektirir.

cevap

22

sürece, hedef bölgeyi artırmak isteyen olarak ViewPager donanımları hakkında çok fazla önemsemeden, bu, anlık yapabilirsiniz:

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

Bir çekicilik gibi çalıştım. Teşekkür ederim! – Juhani

+1

İyi bir fikir, bence biraz garip geliyor – astuetz

1

Bu değerler özel bir yöntemle kodlanmış gibi görünüyor, dolayısıyla bunları geçersiz kılacak basit bir yol yoktur.

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

Doğru ama değerler değiller' t 0,4/0,6f (bunlar asistan olarak). Ben * düşünüyorum * her iki yönde de ViewPager genişliğinin% 60'ı olarak çalışıyor. Bir slingin sadece 400 dip/s hızıyla 25 dips olması gerekir. –

+0

@ChrisBanes Tabii ki haklısın, çok hızlı bir şekilde baktım - teşekkürler! – astuetz