私はAndroidビューの場合、true
からonTouchEvent
を返すと、現在のジェスチャーのイベントを引き続き受け取りたいことがわかります。あなたがfalse
を返す場合、私はジェスチャーをクリックまたは保留/ドラッグイベントであるかどうかを検出するために、試してみたいと思いますので、私は最初のACTION_DOWN
イベントにtrue
を返すが、それは現在のジェスチャー最初にtrueを返した後にジェスチャーのonTouchEventsの受信を停止する方法
のためのより多くのイベントを処理するべきではありませんいくつかのミリ秒が経過するまで、私はタイムアウトし、ジェスチャーをクリックの代わりにホールド/ドラッグとして認識します。
タイムアウトが経過すると、false
をさらにonTouchEventsに戻して、イベントの受信を停止し、親ビューで残りのドラッグを管理できるようにしたいと思います。
しかし、私はあなたが最初のイベントのためにtrue
を返したら、それは私が絶えず、後のイベントにfalse
を返した後でも、関連するジェスチャーとすべてさらにイベントを受け取ることに気づくように見えます。戻り値は非常に最初のイベントにのみ重要であると思われますが、その後は無視されます。
onTouchEvent
の受信を停止する方法はありますか?それで、ジェスチャーで最初のイベントを受け入れたら、それを親に渡しますか?
私の最初のコメントを削除しました。私は元々あなたの答えを誤解しました。私はあなたのコードサンプルが役に立たないかもしれないと思うが、longClickListenerを調べる。 falseを返すか、最初にtrueを返した後にsuper.onTouchEventを呼び出すと、元のonTouchEventからfalseを返しても、親ビューにはジェスチャの残りの部分が表示されません。 – Tim
@Tim - この場合、GestureDetectorは必要なものと正確に一致する可能性があります。すべてのカスタム処理の前にイベントを検出器に渡すと、既存のハンドラだけを残して、長押しがトリガされたときにコールバックを受け取れるようにする必要があります。 – derekerdmann
もちろん、私はGestureDetectorを調べます。 – Tim