2012-12-02 24 views
6

私はオーバーレイを地図上にドラッグしようとしていますが、ユーザーがピンをタップするとインフォボックスも表示されます。これを行うには、MotionEvent.ACTION_DOWNMotionEvent.ACTION_UPの間の時間を測定する必要があります。できるだけ自然な気分にするために、私はAndroidがシングルタップ(現在は私は180msを使用しています)とロングタップのためにどのような値を使用しているのかを知りたいと思います。Androidのシングルタップとロングタップの長​​さ

ありがとうございます!

+1

あなたは、単一の '区別のためのコードを記述する必要はありません。 「タップ」と「ロングタップ」。代わりに 'GestureDetector'を使用してください。詳細が必要な場合はお知らせください。 – Luis

+0

ItemizedOverlayからonTap()を試しましたが、トリガーされていません。ドラッグするために必要なonTouchEvent()がすべてのタッチイベントを消費していると仮定します。だから私はGestureDetectorが動作するとは思わない...たぶんあなたは私の主な問題はシングルタップ/ロングタップとスクロールを区別することだった私の質問を誤解した。 – timoschloesser

+1

'GestureDetector'がモーションイベントをインターセプトしないようにするには、' gestureDetector.onTouchEvent(ev) 'を呼び出すことによってそれらを' GestureDetector'に与える必要があります。だから、あなたがモーションイベントを取得できる限り、それを 'GestureDetector'に送ることができます。モーションイベントはクラスによって解析され、必要に応じてonDoubleTap()、onLongPress()、onScroll()、onSingleTapConfirmed()などのコールバックを行います。たぶんhttp://developer.android.com/reference/android/view/GestureDetector.htmlのドキュメントをご覧ください。 – Luis

答えて

5

Androidのソースは、長押し時間としてシングルタップと500msのための125msのを使用しています。

private static final int PRESSED_STATE_DURATION = 125; 

private static final int DEFAULT_LONG_PRESS_TIMEOUT = 500; 

ViewConfiguration.java#PRESSED_STATE_DURATION

ViewConfiguration.java#DEFAULT_LONG_PRESS_TIMEOUT

+1

ありがとう。私は既に使用している180msと全く同じ、PRESSED_STATE_DURATIONの代わりにTAP_TIMEOUTを使わなければならないと思います。 – timoschloesser

関連する問題