Perbedaan antara OnTouch dan OnClick Android


91

Apakah ada perbedaan antara OnTouchListenerdan OnClickListener? Saya tidak meminta dari sudut pandang pemrograman, tetapi dari sudut pandang Pengalaman Pengguna.

Mana yang lebih baik untuk digunakan?

Apakah kita perlu menerapkan keduanya?

Jawaban:


101

mana yang lebih baik untuk digunakan?

Itu sangat tergantung pada kebutuhan Anda.

onTouchmemberi Anda Peristiwa Gerak. Dengan demikian, Anda dapat melakukan banyak hal mewah karena membantu Anda memisahkan keadaan gerakan. Hanya untuk beberapa nama:

  • ACTION_UP
  • ACTION_DOWN
  • ACTION_MOVE

Itu adalah tindakan umum yang biasanya kami terapkan untuk mendapatkan hasil yang diinginkan seperti menyeret tampilan di layar.

Di sisi lain, onClicktidak memberi Anda banyak kecuali tampilan mana yang berinteraksi dengan pengguna. onClickadalah acara lengkap yang terdiri dari pemfokusan, penekanan, dan pelepasan. Jadi, Anda hanya memiliki sedikit kendali atasnya. Satu sisi di atas adalah sangat mudah untuk diterapkan.

apakah kita perlu menerapkan keduanya?

Ini tidak perlu kecuali Anda ingin mengacaukan pengguna Anda. Jika Anda hanya ingin acara klik sederhana, lakukan onClick. Jika Anda menginginkan lebih dari sekadar klik, lakukan onTouch. Melakukan keduanya akan mempersulit prosesnya.

Dari sudut pandang Pengguna, tidak terlihat jika Anda menerapkan onTouchdengan hati-hati agar terlihat seperti onClick.


3
Jika Anda membutuhkan kontrol, gunakan onTouch. Untuk sebagian besar kasus, onClick akan melakukannya. Lihat jawaban PH7.
drulab

Saya masih mencoba mencari tahu mana yang akan digunakan. Jika saya memiliki 4 tampilan, 3 di antaranya memerlukan klik dan gesekan sedangkan yang ke-4 hanya satu klik. Saya tahu saya hanya dapat menggunakan onTouch sebagai klik atau geser untuk 3 tampilan pertama, tetapi bagaimana dengan tampilan ke-4? Haruskah saya menerapkan onClick untuk satu tampilan atau hanya menggunakan onTouch karena sudah dipanggil ..?
cjayem13

Harus diperhatikan bahwa mungkin perlu menggunakan onTouch untuk mencapai hasil tertentu, dalam hal ini sudut pandang pengguna akan terkutuk. FE, jika Anda ingin memblokir soft keyboard agar tidak muncul, sehingga Anda dapat menyediakannya sendiri, harus melalui onTouch. TIL onClick tidak akan melakukannya.
ChiefTwoPencils

24

Peristiwa "Sentuh" ​​adalah saat seseorang meletakkan jarinya di layar. Itu dipanggil melalui gerakan jari, bawah, seret, dan atas. A "Klik" bahkan tidak perlu datang dari layar. Bisa jadi seseorang menekan tombol enter.

Gunakan OnTouchListenerketika Anda ingin menerima acara dari jari seseorang di layar.

Gunakan OnClickListenersaat Anda ingin mendeteksi klik.


Saya telah melihat beberapa pengembang menggunakan acara sentuh untuk tombolnya, apa alasannya? Saya belum menguji di telepon, tetapi apakah ada improvisasi kinerja?
Nixit Patel

1
@NixitPatel Tidak ada alasan bagus yang terlintas dalam pikiran tanpa melihat sumbernya.
Thomas Dignan

benar, tapi sekarang saya menemukan jawaban saya ... dengan bantuan kalian dan beberapa pendekatan partikel. tidak perlu khawatir, Terima kasih telah bertanya
Nixit Patel

9
  • onClickListener digunakan setiap kali peristiwa klik untuk tampilan apa pun dimunculkan, misalnya: peristiwa klik untuk Tombol, ImageButton.

  • onTouchListener digunakan kapan pun Anda ingin menerapkan fungsionalitas jenis Sentuh, katakanlah misalnya jika Anda ingin mendapatkan koordinat layar tempat Anda menyentuh dengan tepat.

dari dokumen resmi, definisi keduanya adalah:

  • onClickListner: Definisi antarmuka untuk callback yang akan dipanggil saat tampilan diklik.
  • onTouchListener: Definisi antarmuka untuk callback yang akan dipanggil saat peristiwa sentuh dikirim ke tampilan ini. Callback akan dipanggil sebelum event sentuh diberikan ke tampilan.

1
Saya telah melihat beberapa pengembang menggunakan acara sentuh untuk tombol, apa alasannya? Saya belum menguji di telepon, tetapi apakah ada improvisasi kinerja?
Nixit Patel

8

Salah satu alasan bagus untuk menggunakan acara ontouch daripada acara onclick adalah untuk mendapatkan respons yang lebih cepat setelah pengguna mengklik. Jika peristiwa onclick mengalami penundaan dalam merespons dan melanjutkan tindakan yang diperlukan. acara ontouch lebih baik untuk memberikan aplikasi web seluler berperforma tinggi.


2

OnClickListener - digunakan untuk tujuan dasar, ketika kita hanya membutuhkan satu klik dari pengguna yaitu, klik tombol, tidak ada drag atau isyarat di layar

OnTouchListenerpada dasarnya adalah kontrol yang lebih baik daripada OnClickListener. Ini melakukan dan tindakan pada pers / rilis di layar Ini memungkinkan pengguna dengan kombinasi gerakan, sentuhan ke bawah, sentuhan ke atas, tarik jari atau gerakan apa pun di layar


1

Lebih suka menggunakan onTouch. Memberi Anda contoh: ketika Anda memiliki ViewPager dan TextView di dalamnya. jika Anda mengimplementasikan setOnClickListener pada textView, Anda tidak akan dapat menggesek ViewPager saat Anda menyentuh / menggesek pada TextView

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.