Sự khác biệt giữa OnTouch và OnClick Android


90

Có sự khác biệt nào giữa OnTouchListenerOnClickListener? Tôi không hỏi từ quan điểm lập trình, mà hỏi từ quan điểm Trải nghiệm người dùng.

Cái nào tốt hơn để sử dụng?

Chúng ta có cần thực hiện cả hai không?

Câu trả lời:


100

cái nào tốt hơn để sử dụng?

Nó thực sự phụ thuộc vào yêu cầu của bạn.

onTouchcung cấp cho bạn Sự kiện chuyển động. Do đó, bạn có thể làm rất nhiều điều thú vị vì nó giúp bạn tách biệt trạng thái chuyển động. Chỉ để kể tên một vài:

  • ACTION_UP
  • ACTION_DOWN
  • ACTION_MOVE

Đó là những hành động phổ biến mà chúng tôi thường thực hiện để có được kết quả mong muốn chẳng hạn như kéo chế độ xem trên màn hình.

Mặt khác, onClickkhông cung cấp cho bạn nhiều thứ ngoại trừ chế độ xem nào mà người dùng tương tác. onClicklà một sự kiện hoàn chỉnh bao gồm tập trung, nhấn và nhả. Vì vậy, bạn có rất ít quyền kiểm soát nó. Một mặt khác là nó rất đơn giản để thực hiện.

chúng ta có cần thực hiện cả hai không?

Nó không cần thiết trừ khi bạn muốn gây rối với người dùng của mình. Nếu bạn chỉ muốn sự kiện nhấp chuột đơn giản, hãy bắt đầu onClick. Nếu bạn muốn nhiều hơn nhấp chuột, hãy tiếp tục onTouch. Làm cả hai sẽ làm phức tạp quá trình.

Từ quan điểm của Người dùng, sẽ không đáng chú ý nếu bạn triển khai onTouchcẩn thận để trông như thế nào onClick.


3
Nếu bạn cần một số kiểm soát thì hãy chuyển sang onTouch. Đối với hầu hết các trường hợp, onClick sẽ làm được. Xem câu trả lời của PH7.
drulabs

Tôi vẫn đang cố gắng tìm ra cái nào để sử dụng. Nếu tôi có 4 chế độ xem, 3 trong số đó yêu cầu cả nhấp chuột và vuốt trong khi chế độ xem thứ 4 chỉ là một lần nhấp. Tôi biết tôi chỉ có thể sử dụng onTouch khi nhấp chuột hoặc vuốt cho 3 chế độ xem đầu tiên nhưng còn chế độ xem thứ 4 thì sao? Tôi có nên triển khai onClick cho một chế độ xem hay chỉ sử dụng onTouch vì nó đã được gọi ..?
cjayem13

Cần lưu ý rằng có thể cần phải sử dụng onTouch để đạt được một số kết quả nhất định, trong trường hợp đó, quan điểm của người dùng sẽ bị ảnh hưởng. FE, nếu bạn muốn chặn bàn phím mềm hiển thị để bạn có thể cung cấp bàn phím của riêng mình, nó phải thông qua onTouch. TIL onClick sẽ không làm điều đó.
ChiefTwoPencils

24

Sự kiện "Chạm" là khi ai đó đặt ngón tay của họ trên màn hình. Nó được gọi trong suốt chuyển động của ngón tay, xuống, kéo và lên. Một "Click" thậm chí không cần đến từ màn hình. Đó có thể là ai đó đang nhấn phím enter.

Sử dụng OnTouchListener khi bạn muốn nhận các sự kiện từ ngón tay của ai đó trên màn hình.

Sử dụng OnClickListenerkhi bạn muốn phát hiện các nhấp chuột.


Tôi đã thấy một số nhà phát triển sử dụng sự kiện cảm ứng cho nút, lý do cho điều đó là gì? Tôi chưa thử nghiệm trên điện thoại nhưng, có bất kỳ sự ứng biến hiệu suất nào không?
Nixit Patel

1
@NixitPatel Không có lý do chính đáng nào mà không xem nguồn của chúng.
Thomas Dignan

đúng, nhưng bây giờ tôi đã tìm thấy câu trả lời của mình ... với sự giúp đỡ của các bạn và một số phương pháp tiếp cận hạt. Không cần phải lo lắng, Cảm ơn bạn đã hỏi
Nixit Patel

9
  • onClickListener được sử dụng bất cứ khi nào một sự kiện nhấp chuột cho bất kỳ dạng xem nào được nâng lên, chẳng hạn như: sự kiện nhấp chuột cho Nút, ImageButton.

  • onTouchListener được sử dụng bất cứ khi nào bạn muốn triển khai Loại chức năng cảm ứng, chẳng hạn như nếu bạn muốn có được các tọa độ màn hình nơi bạn chạm chính xác.

từ tài liệu chính thức, định nghĩa cho cả hai là:

  • onClickListner: Định nghĩa giao diện cho một lệnh gọi lại được gọi khi một chế độ xem được nhấp vào.
  • onTouchListener: Định nghĩa giao diện cho một lệnh gọi lại được gọi khi một sự kiện cảm ứng được gửi đến chế độ xem này. Lệnh gọi lại sẽ được gọi trước khi sự kiện chạm được đưa cho chế độ xem.

1
Tôi đã thấy một số nhà phát triển sử dụng sự kiện cảm ứng cho nút, lý do cho điều đó là gì? Tôi chưa thử nghiệm trên điện thoại nhưng, có bất kỳ sự ứng biến hiệu suất nào không?
Nixit Patel

8

Một lý do tốt để sử dụng sự kiện ontouch thay vì sự kiện onclick là để nhận được phản hồi nhanh hơn khi người dùng nhấp. Trường hợp sự kiện onclick bị chậm trễ trong việc phản hồi và tiến hành hành động bắt buộc. Sự kiện ontouch tốt hơn để cung cấp các ứng dụng web di động có hiệu suất cao.


2

OnClickListener - được sử dụng cho mục đích cơ bản, khi chúng ta chỉ cần một cú nhấp chuột từ người dùng, tức là nhấp vào nút, không cần kéo hoặc cử chỉ trên màn hình

OnTouchListenervề cơ bản là một điều khiển được tinh chỉnh nhiều hơn OnClickListener. Nó thực hiện và thao tác trên một thao tác nhấn / thả trên màn hình Nó cho phép người dùng kết hợp di chuyển, chạm xuống, chạm lên, kéo ngón tay hoặc bất kỳ cử chỉ di chuyển nào trên màn hình


1

Thích sử dụng onTouch. Cho bạn một ví dụ: khi bạn có ViewPager và TextView trong đó. nếu bạn triển khai setOnClickListener trên textView, bạn sẽ không thể vuốt ViewPager khi bạn chạm / vuốt trên TextView

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.