OnTouchとOnClick Androidの違い


90

との違いはOnTouchListenerありOnClickListenerますか?私はプログラミングの観点からではなく、ユーザーエクスペリエンスの観点から質問しています。

どちらを使用するのが良いですか?

両方を実装する必要がありますか?

回答:


100

どちらを使用するのが良いですか?

それは本当にあなたの要件に依存します。

onTouchあなたにモーションイベントを与えます。したがって、動きの状態を分離するのに役立つため、多くの豪華なことができます。いくつか例を挙げると:

  • ACTION_UP
  • ACTION_DOWN
  • ACTION_MOVE

これらは、画面上でビューをドラッグするなど、欲望の結果を得るために通常実装する一般的なアクションです。

一方、onClickユーザーが操作するビューを除いて、多くのことを与えることはありません。onClickフォーカシング、プレス、リリースからなる完全なイベントです。したがって、あなたはそれをほとんど制御できません。一方で、実装は非常に簡単です。

両方を実装する必要がありますか?

あなたがユーザーを台無しにしたくない限り、それは必要ありません。単純なクリックイベントだけが必要な場合は、に進んでくださいonClick。クリック以上の機能が必要な場合は、にアクセスしてくださいonTouch。両方を実行すると、プロセスが複雑になります。

ユーザーの観点からは、のonTouchように注意深く実装しても目立ちませんonClick


3
コントロールが必要な場合は、onTouchを使用してください。ほとんどの場合、onClickで十分です。PH7の回答を参照してください。
drulabs、2012

私はまだどちらを使用するかを考えています。4つのビューがある場合、そのうち3つはクリックとスワイプの両方が必要ですが、4つ目はクリックのみです。onTouchを最初の3つのビューのクリックまたはスワイプとしてのみ使用できることはわかっていますが、4番目のビューについてはどうですか?onClickを1つのビューに実装するか、すでに呼び出されているのでonTouchを使用する必要がありますか?
cjayem13 14年

特定の結果を得るにはonTouchを使用する必要がある場合があることに注意してください。その場合、ユーザーの視点が厳しくなります。FE、ソフトキーボードが表示されないようにブロックして自分で提供できるようにするには、onTouchを使用する必要があります。TIL onClickはそれをしません。
ChiefTwoPencils 2014

24

「タッチ」イベントは、誰かが画面に指を置くことです。指の動き、ダウン、ドラッグ、アップのすべての段階で呼び出されます。画面から「クリック」する必要はありません。それは、エンターキーを押す人かもしれません。

OnTouchListener画面上で誰かの指からイベントを受け取りたい場合に使用します。

OnClickListenerクリックを検出したいときに使用します。


ボタンにタッチイベントを使用している開発者を見たことがありますが、その理由は何ですか。私は電話でテストしていませんが、パフォーマンスの即興はありますか?
Nixit Patel

1
@NixitPatelソースを確認せずに正当な理由が思い浮かぶことはありません。
Thomas Dignan

本当ですが、今、私は私の答えを見つけました...皆さんといくつかの粒子アプローチの助けを借りて。心配する必要はありません。質問をありがとう
Nixit Patel

9
  • onClickListener たとえば、Button、ImageButtonのクリックイベントなど、ビューのクリックイベントが発生するたびに使用されます。

  • onTouchListener たとえば、タッチする画面の座標を正確に取得したい場合など、タッチのような機能を実装する場合に常に使用されます。

公式ドキュメントから、両方の定義は次のとおりです:

  • onClickListner:ビューがクリックされたときに呼び出されるコールバックのインターフェース定義。
  • onTouchListener:touchイベントがこのビューにディスパッチされたときに呼び出されるコールバックのインターフェイス定義。コールバックは、タッチイベントがビューに渡される前に呼び出されます。

1
一部の開発者がボタンにタッチイベントを使用しているのを見ましたが、その理由は何ですか?私は電話でテストしていませんが、パフォーマンスの即興はありますか?
Nixit Patel

8

onclickイベントよりもontouchイベントを使用する1つの理由は、ユーザーがクリックしたときに応答が速くなることです。onclickイベントが応答し、必要なアクションを続行できない場合。ontouchイベントは、パフォーマンスの高いモバイルWebアプリの配信に適しています。


2

OnClickListener -基本的な目的で使用されます。ユーザーからのクリックだけが必要な場合、つまりボタンをクリックするだけで、画面上でのドラッグやジェスチャーは不要です。

OnTouchListener基本的に、OnClickListenerよりも微調整されたコントロールです。画面上のプレス/リリースで動作し、アクションを実行します。ユーザーは、画面上の移動、ダウンタッチ、アップタッチ、指ドラッグ、または任意の移動ジェスチャーを組み合わせて使用​​できます。


1

onTouchの使用をお勧めします。例を挙げましょう:ViewPagerとTextViewが含まれている場合。textOnにsetOnClickListenerを実装すると、TextViewをタッチ/スワイプしたときにViewPagerをスワイプできなくなります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.