スクロールイベントが発生したときにonScrollを実装したいと思います。 しかし、私はonScroll(MotionEvent e1、MotionEvent e2、float distanceX、float distanceY)で受け取ったパラメータを使ってスクロールをボトムアップからどのように検出することができないのか分かりません。Android - onScrollジェスチャー検出器
私はそれを実装する方法やいくつかの例をいくつか参考にしています。
スクロールイベントが発生したときにonScrollを実装したいと思います。 しかし、私はonScroll(MotionEvent e1、MotionEvent e2、float distanceX、float distanceY)で受け取ったパラメータを使ってスクロールをボトムアップからどのように検出することができないのか分かりません。Android - onScrollジェスチャー検出器
私はそれを実装する方法やいくつかの例をいくつか参考にしています。
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
に設定されている場合、技術的にジェスチャーも終了する可能性があります。
あなたの答えをありがとう。私はモーションイベントを考慮する必要がありますか?彼らは何を貢献していますか? – Vera
「モーションイベント」には、タッチ状態など、実行中の動きに関するさらに細かいグレインデータが含まれています。 'e1'はスクロールを開始した最初のダウンモーションイベントです(これは通常、スクロール時には一定です).e2は現在のonScrollをトリガしたモーションモーションイベントです。両方のモーションイベントで 'getY'を呼び出してYの変化を計算できますが、' distanceY'はより簡単に同じ解決法を提供できるはずです。 – Ryan
偉大な、私は理解しています。ありがとうございました ! – Vera