2011-09-16 4 views
0

純粋なJavaでは、私はこれらの2つのイベントを処理するために使用できるMouseInputListenerがあります。アンドロイドでのスライドとクリックを区別する方法を教えてください。

Androidでどうすればいいですか?

私が両方のイベントを実装すると、1つだけが起動され(onClickListener)、もう一方は起動されません。

更新日:

質問は、指の動きを検出に関するものではありません。

私はビュー(例えばImageView)を持っています。私はonClickListener()であるこのビューのクリックを検出する必要があります。このビューでは、指を動かす(つまり、押す、移動してから指を離す)必要があります。

ここでの問題は、onClickListener()が呼び出され、MotionEventハンドラが捕捉されないということです。

メインイベントは指の動きである必要があり、onClickListener()は「このビューをクリックしないでください」というだけで、2つのイベントを区別できるようにする必要があります。

これは明らかです。

+1

関連する可能性のある複製:http://stackoverflow.com/q/937313/866022 – yoozer8

+0

あなたはおそらく、指の触れや「MotionEvent」をキャプチャしたいと思いますか、特にマウス入力のキャプチャを探していましたか? –

答えて

0

OnClickListenerOnTouchListener彼らは両方のViewに巻き込まMotionEvent秒を消費するので、ちょっと、お互いを妨害。

基本的には、両者をチェックする単一のOnTouchListenerを書くことができます。引数としてMotionEventが提供されます。 MotionEvent.getAction()でその動作を確認してください。それがMotionEvent.ACTION_DOWN(ユーザーがディスプレイに指を置いた場合)に等しい場合。使用者が約1秒で指を離すと、同じ位置ACTION_UPの場合は、クリックとして解釈してください。それ以外の場合は、ACTION_MOVEイベントを取得した位置をジェスチャーとして解釈します。

フレームワークにはすでにこの解釈作業を行ういくつかのクラスがあります。SimpleGestureDetectorクラスとSimpleOnGestureListenerを参照してください。これには、一般的なイベントのコールバックがあります。 onSingleTapConfirmed()およびonFling()。 OnTouchListenerのMotionEventをGestureDetectorに供給するだけです。

+0

ありがとうございます。 SimpleGestureDetectorは完璧に動作します。 – Igor

+0

私は助けてよかった。参考になった場合は、[正解](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)と記入してください。 *(あなたは新しいので、あなたはそのメカニズムを知らないかもしれません)* –