2017-01-14 4 views
0

私はViewPagerを使用しています。私は現在のViewPagerページの方向を、ページが動いているかどうかチェックしたい。 (ユーザーがスワイプを終了していないユーザーによって(スワイプ/タブレイアウト内の別のタブをクリック)またはViewPager自体のいずれかによって移動してもよいし、ページには、位置をアイドル状態に戻って動いている。すぐにViewPagerの方向を確認するには?

おかげ

答えて

0

私は最初の/最後のタブの方が間違った方向になることがあります。ページはユーザーのスワイプではなくビューページ自体で移動されます。

最後に、本当に単純な解決策があります。

new ViewPager.OnPageChangeListener() { 

       private float lastPositionAndOffsetSum = 0f; 

       @Override 
       public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { 
        if (position + positionOffset == lastPositionAndOffsetSum) { 
         //IT'S NOT MOVING 
        } else if (position + positionOffset > lastPositionAndOffsetSum) { 
         //RIGHT TO LEFT 
        } else { 
         //LEFT TO RIGTH 
        } 
        lastPositionAndOffsetSum = position + positionOffset     } 

       @Override 
       public void onPageSelected(int position) {} 

       @Override 
       public void onPageScrollStateChanged(int state) {} 
      }); 

質問がある場合はお知らせください。

0

setOnPageChangeListenerをViewPagerに設定します。

viewpager.addOnPageChangeListener(
      new OnPageChangeListener(){ 
@Override 
public void onPageSelected(int arg0) { 
    if(lastPage>arg0) 
     {//User Move to left} 
    else(lastPage<arg0) 
    {//User Move to right} 
     lastPage=arg0 
} 
}); 

ViewPager.OnPageChangeListenerのonPageSelected(int位置)メソッドを見てください。位置は、新たに選択されたページのインデックスを与える。最後のページインデックスのトラックを保持している場合は、ビューページの左右方向を取得できる現在のページインデックスの位置と比較することができます。

+0

これは私の問題の解決策ではありません。私はすぐに指示を得る必要があります。このように私は遅すぎる方向を得るだろう。 onPageSelectedメソッドは、ViewPagerが次のページが選択されることを「確信している」場合にのみトリガされます。それはf.e。によってページを移動する方向を私に与えることはありません。 20px。 –

関連する問題