OnTouch ve OnClick Android arasındaki fark


91

Arasında herhangi bir fark var mı OnTouchListenerve OnClickListener? Programlama açısından değil, Kullanıcı Deneyimi açısından soruyorum.

Hangisini kullanmak daha iyidir?

Her ikisini de uygulamaya ihtiyacımız var mı?

Yanıtlar:


101

hangisini kullanmak daha iyidir?

Gerçekten ihtiyacınıza bağlı.

onTouchsize Hareket Olayı verir. Böylece, hareket durumunu ayırmanıza yardımcı olduğu için birçok süslü şey yapabilirsiniz. Sadece birkaç isim:

  • ACTION_UP
  • ACTION_DOWN
  • ACTION_MOVE

Bunlar, ekrandaki görünümü sürüklemek gibi arzu sonucu elde etmek için genellikle uyguladığımız yaygın eylemlerdir.

Öte yandan, onClickkullanıcının hangi görünümle etkileşime girdiği dışında size pek bir şey vermez. onClickodaklanma, basma ve bırakmadan oluşan eksiksiz bir olaydır. Yani, üzerinde çok az kontrole sahipsin. Bir tarafı yukarı, uygulaması çok basit.

ikisini de uygulamaya ihtiyacımız var mı?

Kullanıcınızla uğraşmak istemediğiniz sürece gerekli değildir. Sadece basit tıklama etkinliği istiyorsanız, gidin onClick. Tıklamaktan fazlasını istiyorsanız, gidin onTouch. İkisini birden yapmak süreci karmaşıklaştıracaktır.

Kullanıcı açısından bakıldığında, onTouchdikkatlice benzemek için uygularsanız farkedilemez onClick.


3
Biraz kontrole ihtiyacınız varsa onTouch'a gidin. Çoğu durumda onClick yeterli olacaktır. PH7'nin cevabına bakın.
drulabs

Hala hangisini kullanacağımı bulmaya çalışıyorum. 4 görünümüm varsa, bunlardan 3'ü hem tıklama hem de kaydırma gerektirir, dördüncüsü ise yalnızca tıklama gerektirir. OnTouch'ı yalnızca ilk 3 görünüm için tıklama veya kaydırma olarak kullanabileceğimi biliyorum, peki ya 4. görünüm? Bir görünüm için onClick'i uygulamalı mıyım yoksa zaten çağrıldığı için onTouch'ı mı kullanmalıyım?
cjayem13

Belirli sonuçları elde etmek için onTouch kullanmak gerekli olabilir, bu durumda kullanıcının bakış açısı lanetlenir. FE, yazılım klavyesinin görünmesini engellemek istiyorsanız, böylece kendi klavyenizi sağlayabilirsiniz, onTouch aracılığıyla olmalıdır. TIL onClick bunu yapmaz.
ChiefTwoPencils

24

"Dokunma" olayı, birinin parmağını ekrana koymasıdır. Parmağın aşağı, sürükleme ve yukarı hareketi boyunca çağrılır. Ekrandan bir "tıklama" gelmesine bile gerek yoktur. Giriş tuşuna basan biri olabilir.

OnTouchListenerEkranda birinin parmağından olay almak istediğinizde kullanın .

OnClickListenerTıklamaları algılamak istediğinizde kullanın .


Düğme için dokunma etkinliğini kullanan bir geliştirici gördüm, bunun nedeni ne olacak? Telefonda test etmedim ama herhangi bir performans doğaçlama var mı?
Nixit Patel

1
@NixitPatel Kaynağını görmeden akla iyi bir sebep gelmez.
Thomas Dignan

doğru, ama şimdi cevabımı buldum ... sizlerin yardımıyla ve biraz parçacık yaklaşımı ile. endişelenmenize gerek yok,
Sorduğunuz

9
  • onClickListener herhangi bir görünüm için bir tıklama olayı her ortaya çıktığında kullanılır, örneğin: Button, ImageButton için tıklama olayı.

  • onTouchListener Touch türü bir işlevsellik uygulamak istediğinizde, örneğin tam olarak dokunduğunuz ekranın koordinatlarını almak istediğinizde kullanılır.

resmi belgeden, her ikisinin tanımı:

  • onClickListner: Bir görünüm tıklandığında çağrılacak bir geri aramanın arayüz tanımı.
  • onTouchListener: Bu görünüme bir dokunma olayı gönderildiğinde çağrılacak bir geri aramanın arabirim tanımı. Geri arama, dokunma olayı görünüme verilmeden önce çağrılacaktır.

1
Düğme için dokunma etkinliğini kullanan bir geliştirici gördüm bunun nedeni ne olacak? Telefonda test etmedim ama herhangi bir performans doğaçlama var mı?
Nixit Patel

8

Onclick olaylarında ontouch olaylarını kullanmanın iyi bir nedeni, kullanıcı tıkladığında daha hızlı yanıt almaktır. Onclick olayının yanıt vermede ve gerekli eylemi gerçekleştirmede gecikme yaşadığı durumlarda. ontouch etkinlikleri, yüksek performanslı mobil web uygulamaları sunmak için daha iyidir.


2

OnClickListener - basit bir amaç için, bir kullanıcıdan bir tıklamaya ihtiyacımız olduğunda, yani bir düğmeye tıkladığımızda, ekranda sürükleme veya hareket olmadığında kullanılır

OnTouchListenertemelde OnClickListener'den daha ince ayarlı bir denetimdir. Ekranda bir basma / bırakma işlemi gerçekleştirir ve hareket eder Kullanıcıya hareket, aşağı dokunma, yukarı dokunma, parmakla sürükleme veya ekrandaki herhangi bir hareket hareketi kombinasyonu ile izin verir.


1

OnTouch'ı kullanmayı tercih edin. Size bir örnek verelim: içinde bir ViewPager ve bir TextView varken. setOnClickListener'ı textView üzerinde uygularsanız, TextView'e dokunduğunuzda / kaydırdığınızda ViewPager'ı kaydıramazsınız.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.