Android のトレーニングによると、 を拡張し、からGestureDetector.SimpleOnGestureListener
戻ると、他のメソッドが呼び出されることはありません。false
onDown(...)
GestureDetector.SimpleOnGestureListener
GestureDetector.OnGestureListener を使用するかどうかにかかわらず、true を返す onDown() メソッドを実装することをお勧めします。これは、すべてのジェスチャが onDown() メッセージで始まるためです。GestureDetector.SimpleOnGestureListener がデフォルトで行うように、onDown() から false を返すと、システムはジェスチャの残りを無視すると想定し、GestureDetector.OnGestureListener の他のメソッドは呼び出されません。これにより、アプリで予期しない問題が発生する可能性があります。onDown() から false を返す必要があるのは、ジェスチャ全体を本当に無視したい場合だけです。
ただし、私の簡単なテストonScroll(...)
では呼び出されました。
public void onCreate(Bundle savedInstanceState) {
mDetector = new GestureDetectorCompat(this, MyGestureListener);
}
public boolean onTouchEvent(MotionEvent event) {
mDetector.onTouchEvent(event);
return true;
}
class MyGestureListener extends GestureDetector.SimpleOnGestureListener {
private boolean scrollEvent;
@Override
public boolean onDown (MotionEvent event) {
Log.v("GESTURE", "onDown ");
return false;
}
@Override
public boolean onScroll (MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
Log.v("GESTURE", "onScroll");
return true;
}
別の同様の問題は、同じ Android トレーニング ページからの次の定義です。
個々の on メソッドからの戻り値 true は、タッチ イベントを処理したことを示します。false の戻り値は、タッチが正常に処理されるまで、ビュー スタックを介してイベントを渡します。
これは前の引用でどのように解決されますか?