2016-05-04 7 views
4

スクロールイベントが発生したときにonScrollを実装したいと思います。 しかし、私はonScroll(MotionEvent e1、MotionEvent e2、float distanceX、float distanceY)で受け取ったパラメータを使ってスクロールをボトムアップからどのように検出することができないのか分かりません。Android - onScrollジェスチャー検出器

私はそれを実装する方法やいくつかの例をいくつか参考にしています。

答えて

3

distanceYパラメータを使用して、ビューが上下にスクロールされたかどうかを判断できるはずです。 distanceYは、最後の呼び出しからスクロールされたY軸に沿った距離をonScroll()に表します。 distanceYの値が0より大きい場合、ビューはY軸の下位の位置からY軸の上位の位置にスクロールされています。

@Override 
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { 
    if (distanceY > 0) { 
     // Scrolled upward 
     if (e2.getAction() = MotionEvent.ACTION_UP) { 
      // The pointer has gone up, ending the gesture 
     } 
    } 
    return false; 
} 

注:MotionEvent.ACTION_UPはスクロールが終了した時にチェックするためにあなたの必要性を解決する場合、私はテストしていませんが、それは理論的には実用的なようです。 MotionEventのアクションがMotionEvent.ACTION_CANCELに設定されている場合、技術的にジェスチャーも終了する可能性があります。

+0

あなたの答えをありがとう。私はモーションイベントを考慮する必要がありますか?彼らは何を貢献していますか? – Vera

+0

「モーションイベント」には、タッチ状態など、実行中の動きに関するさらに細かいグレインデータが含まれています。 'e1'はスクロールを開始した最初のダウンモーションイベントです(これは通常、スクロール時には一定です).e2は現在のonScrollをトリガしたモーションモーションイベントです。両方のモーションイベントで 'getY'を呼び出してYの変化を計算できますが、' distanceY'はより簡単に同じ解決法を提供できるはずです。 – Ryan

+0

偉大な、私は理解しています。ありがとうございました ! – Vera

関連する問題