Unterschied zwischen OnTouch und OnClick Android

89

Gibt es einen Unterschied zwischen OnTouchListenerund OnClickListener? Ich frage nicht aus Sicht der Programmierung, sondern aus Sicht der Benutzererfahrung.

Welches ist besser zu verwenden?

Müssen wir beides implementieren?

Nixit Patel
quelle

Antworten:

99

welches ist besser zu benutzen?

Es hängt wirklich von Ihrer Anforderung ab.

onTouchgibt Ihnen Bewegungsereignis. Auf diese Weise können Sie viele ausgefallene Dinge tun, da dies Ihnen hilft, den Bewegungszustand zu trennen. Nur um ein paar zu nennen:

  • ACTION_UP
  • ACTION_DOWN
  • ACTION_MOVE

Dies sind übliche Aktionen, die wir normalerweise implementieren, um das gewünschte Ergebnis zu erzielen, z. B. das Ziehen der Ansicht auf dem Bildschirm.

Auf der anderen Seite onClickgibt es nicht viel, außer welcher Ansicht Benutzer interagiert. onClickist eine komplette Veranstaltung, die das Fokussieren, Drücken und Loslassen umfasst. Sie haben also wenig Kontrolle darüber. Eine Seite nach oben ist, dass es sehr einfach zu implementieren ist.

Müssen wir beide implementieren?

Es ist nicht notwendig, es sei denn, Sie möchten Ihren Benutzer durcheinander bringen. Wenn Sie nur ein einfaches Klickereignis wünschen, wählen Sie onClick. Wenn Sie mehr als nur klicken möchten, wählen Sie onTouch. Beides zu tun, erschwert den Prozess.

Aus Anwendersicht ist es unbemerkt, wenn Sie onTouchsorgfältig implementieren , um so auszusehen onClick.

PH7
quelle
3
Wenn Sie etwas Kontrolle benötigen, wählen Sie onTouch. In den meisten Fällen reicht onClick aus. Siehe die Antwort von PH7.
Drulabs
Ich versuche immer noch herauszufinden, welche ich verwenden soll. Wenn ich 4 Ansichten habe, von denen 3 sowohl einen Klick als auch ein Wischen erfordern, während die vierte nur einen Klick erfordert. Ich weiß, dass ich onTouch nur als Klick oder Wischen für die ersten drei Ansichten verwenden kann, aber was ist mit der vierten? Sollte ich onClick für die eine Ansicht implementieren oder nur onTouch verwenden, da es bereits aufgerufen ist ..?
cjayem13
Sollte beachtet werden, kann es notwendig sein, onTouch zu verwenden, um bestimmte Ergebnisse zu erzielen. In diesem Fall ist die Sichtweise des Benutzers verdammt. FE, wenn Sie die Anzeige der Softtastatur blockieren möchten, damit Sie Ihre eigene Tastatur bereitstellen können, muss dies über onTouch erfolgen. TIL onClick macht das nicht.
ChiefTwoPencils
24

Ein "Touch" -Ereignis ist, wenn jemand seinen Finger auf den Bildschirm legt. Es wird während der Bewegung des Fingers nach unten, nach unten und nach oben aufgerufen. Ein "Klick" muss nicht einmal vom Bildschirm kommen. Es könnte jemand sein, der die Eingabetaste drückt.

Verwenden OnTouchListenerSie diese Option, wenn Sie Ereignisse von einem Finger auf dem Bildschirm empfangen möchten.

Verwenden OnClickListenerSie diese Option, wenn Sie Klicks erkennen möchten.

Thomas Dignan
quelle
Ich habe einen Entwickler gesehen, der ein Touch-Ereignis für die Schaltfläche verwendet. Was ist der Grund dafür? Ich habe noch nicht am Telefon getestet, aber gibt es eine Performance-Improvisation?
Nixit Patel
1
@NixitPatel Kein guter Grund fällt mir ein, ohne ihre Quelle zu sehen.
Thomas Dignan
stimmt, aber jetzt habe ich meine Antwort gefunden ... mit Hilfe von euch und einem Partikelansatz. Kein
Grund
9
  • onClickListener wird immer dann verwendet, wenn ein Klickereignis für eine Ansicht ausgelöst wird, z. B. Klickereignis für Schaltfläche, ImageButton.

  • onTouchListener wird immer dann verwendet, wenn Sie Touch-Funktionen implementieren möchten, z. B. wenn Sie Bildschirmkoordinaten erhalten möchten, bei denen Sie genau berühren.

Aus dem offiziellen Dokument sind die Definitionen für beide:

  • onClickListner: Schnittstellendefinition für einen Rückruf, der beim Klicken auf eine Ansicht aufgerufen wird.
  • onTouchListener: Schnittstellendefinition für einen Rückruf, der aufgerufen wird, wenn ein Berührungsereignis an diese Ansicht gesendet wird. Der Rückruf wird aufgerufen, bevor das Berührungsereignis an die Ansicht übergeben wird.
Luzifer
quelle
1
Ich habe einen Entwickler gesehen, der ein Touch-Ereignis für die Schaltfläche verwendet. Was ist der Grund dafür? Ich habe noch nicht am Telefon getestet, aber gibt es eine Performance-Improvisation?
Nixit Patel
8

Ein guter Grund, ontouch-Ereignisse anstelle von onclick-Ereignissen zu verwenden, besteht darin, beim Klicken des Benutzers eine schnellere Antwort zu erhalten. Wenn das Ereignis onclick eine Verzögerung aufweist, wenn es reagiert und mit den erforderlichen Maßnahmen fortfährt. ontouch-Ereignisse eignen sich besser für die Bereitstellung leistungsstarker mobiler Web-Apps.

Bassel Mourjan
quelle
2

OnClickListener - wird für einen grundlegenden Zweck verwendet, wenn wir nur einen Klick eines Benutzers benötigen, dh einen Klick auf eine Schaltfläche, kein Ziehen oder Gesten auf dem Bildschirm

OnTouchListenerist im Grunde ein fein abgestimmtes Steuerelement als OnClickListener. Es führt eine Aktion / Aktion auf einer Presse / Freigabe auf dem Bildschirm aus und ermöglicht dem Benutzer eine Kombination aus Bewegung, Abwärtsbewegung, Aufwärtsberührung, Fingerziehen oder einer beliebigen Bewegungsgeste auf dem Bildschirm

Rohit Goyal
quelle
1

Verwenden Sie lieber onTouch. Geben Sie ein Beispiel: Wenn Sie einen ViewPager und eine TextView darin haben. Wenn Sie setOnClickListener in textView implementieren, können Sie den ViewPager nicht wischen, wenn Sie TextView berühren / wischen

Jacky
quelle