私はViewPagerを使用しています。私は現在のViewPagerページの方向を、ページが動いているかどうかチェックしたい。 (ユーザーがスワイプを終了していないユーザーによって(スワイプ/タブレイアウト内の別のタブをクリック)またはViewPager自体のいずれかによって移動してもよいし、ページには、位置をアイドル状態に戻って動いている。すぐにViewPagerの方向を確認するには?
おかげ
私はViewPagerを使用しています。私は現在のViewPagerページの方向を、ページが動いているかどうかチェックしたい。 (ユーザーがスワイプを終了していないユーザーによって(スワイプ/タブレイアウト内の別のタブをクリック)またはViewPager自体のいずれかによって移動してもよいし、ページには、位置をアイドル状態に戻って動いている。すぐにViewPagerの方向を確認するには?
おかげ
私は最初の/最後のタブの方が間違った方向になることがあります。ページはユーザーのスワイプではなくビューページ自体で移動されます。
最後に、本当に単純な解決策があります。
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) {}
});
質問がある場合はお知らせください。
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位置)メソッドを見てください。位置は、新たに選択されたページのインデックスを与える。最後のページインデックスのトラックを保持している場合は、ビューページの左右方向を取得できる現在のページインデックスの位置と比較することができます。
これは私の問題の解決策ではありません。私はすぐに指示を得る必要があります。このように私は遅すぎる方向を得るだろう。 onPageSelectedメソッドは、ViewPagerが次のページが選択されることを「確信している」場合にのみトリガされます。それはf.e。によってページを移動する方向を私に与えることはありません。 20px。 –