2013-06-26 5 views
14

サポートパッケージViewPagerをドラッグして次のページにスナップする方法はありますか?デフォルトの振る舞いは、たとえドラッグしても75%近くドラッグしても、前のページに戻ります。スナップしきい値を短くして、ViewPagerを次のページにスナップするようにしたいと思います。短いドラッグでViewPagerスナップを作成する

これは、ドラッグジェスチャに適用されることに注意してください。フリングのジェスチャーには、すでにかなり短いジェスチャーが必要です。

答えて

22

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

チャームのように働いた。ありがとうございました! – Juhani

+1

良いアイデア、私はそれが少し奇妙に感じると思う – astuetz

1

これらの値がプライベートメソッドでハードコードされているように見えるため、単純な方法でそれらをオーバーライドすることはできません。あなたがいる限り、あなたがターゲットゾーンを増やしたいとViewPagerの内部についてはあまり気にせず、このアドホックを行うことができます

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

正しいが、値は、」上がりませんt 0.4/0.6f(これはトランケータなので)。私は、双方向のViewPagerの幅の60%になると思う。 フリンジは、400ディップ/秒の速度で、25ディップにする必要があります。 –

+0

@ChrisBanesもちろん、あなたは正しいです、私はそれをちょうど非常に見ていた - ありがとう! – astuetz

関連する問題