タイトルの通り。イベントを消費できないという事実は、click
直後にイベントが発生する原因となっています。現在、潜在的なクリックを処理するときに長押しが発生したかどうかを手動で追跡しています。
ここで何か不足していますか?つまり、 OnGestureListener インターフェイスを実装しようとしても、これを回避することはできませんonLongPress()
。私のオプションは何ですか?
onLongPress はこれらの onDown を好まないと思います。onLongPress の戻り値は何かをチェックするために使用されませんが、onDown の戻り値はシステムにとって有用であり、システムが別のイベントを認識するのに役立ちます。アンドロイドソースコードから:
mStillDown = true;
mInLongPress = false;
if (mIsLongpressEnabled) {
mHandler.removeMessages(LONG_PRESS);
mHandler.sendEmptyMessageAtTime(LONG_PRESS, mCurrentDownEvent.getDownTime() + TAP_TIMEOUT + LONGPRESS_TIMEOUT);
}
mHandler.sendEmptyMessageAtTime(SHOW_PRESS, mCurrentDownEvent.getDownTime() + TAP_TIMEOUT);
handled |= mListener.onDown(ev);
onLongPress と ShowPress は、これらの状況が発生したことを伝えるだけです。戻り値はシステムにとって役に立ちません。
また、デザインを実装したい場合は、変数を使用して、LongPress が発生したかどうかを確認できます。これがあなたを助けることを願っています。