0

との両方を実装するイメージがOnClickListenerありOnLongClickListenerます。OnLongClickListenerアットプレスダウン( )でACTION_DOWNタイマーをスタートします。でキャンセルしたいですACTION_UP

ここで、この画像を実装すると、通常のクリックOnTouchListenerをキャッチします。ACTION_DOWNそして、私はロングクリックだけをキャッチしたいです。

なぜロングクリックファイアACTION_UPイベントしないのですか?このイベントを検出してタイマーを停止するにはどうすればよいですか。

コードが必要な場合は投稿できますが、コードにエラーがないため、役に立たないと思います。

PS。この長押しで別の要素の値が継続的に増加するため、特定の時間または値でタイマーを停止できません。この増加プロセスは、画像を長押ししたときにのみ停止する必要がありますACTION_UP

4

1 に答える 1

9

OnTouchListenerを使用して、OnLongClickListenerを忘れてください。座標と押された時間をチェックすることでロングクリックを検出できます。OnTouch()によって渡されたMotionEventオブジェクトにすべての情報があります。

1-座標を確認するには、MotionEventからgetX()とgetY()を使用し、ImageViewコンテナからgetDrawingRect()を使用します。

2-押された時間を確認するには、getEventTime()を使用して、最初にACTION_DOWNに格納し、次にACTION_UPイベントで時間を減算して計算します。ロングクリックで800mS程度と想定できます。

于 2011-08-19T18:44:47.800 に答える