Android中Click和Touch Listeners之间的区别

yug*_*abu 20 android

我有点怀疑.我正在使用图像按钮(例如媒体播放器中的播放图标).我想知道我应该使用哪个动作侦听器,onClickListener或onTouchListener.这两个动作之间有什么区别,我应该何时使用它们.

Mik*_*ass 27

@ vishy1618的答案具有这个主题的关键洞察力(试图将其作为评论留在那里,但是太长了).

从概念上讲,onClick只是围绕特定触摸事件序列的"包装器" - 向下,无阻力,向上.因此,将onTouch与onClick进行比较只是一个低级API(原始触摸事件)与高级API(逻辑用户"点击").

但是,一个重要的兼容性问题:在Android中,onClick也可以通过KEYBOARD(或轨迹球,或正在使用的任何替代输入/硬件设备)触发.但是(afaict)不支持通过除触摸屏之外的任何其他输入设备触发触摸事件.

因此,如果您仅针对触摸事件编写UI代码,则隐式需要触摸屏.如果你坚持onClick,你的应用程序理论上可以在非触摸设备上工作.

当然,所有"兼容"的Android手机目前都有触摸屏......所以这实际上没有实际意义.但是,如果您希望您的应用在非电话硬件上运行,这可能值得考虑.

这里有一些很好的讨论:

如何确定Android设备是否有触摸屏?

https://groups.google.com/forum/?fromgroups=#!topic/android-beginners/cjOVcn0sqLg


Par*_*ani 16

  • onClickListener 每当引发任何视图的click事件时都会使用它,例如:单击Button,ImageButton的事件.

  • onTouchListener 只要您想要实现触摸功能,就可以使用,例如,如果您想要获得完全触摸的屏幕坐标.

更新:

只需同时检查的官方文档:onClickListeneronTouchListener.

因此,从官方文档来看,两者的定义是:

  • onClickListner:单击视图时要调用的回调的接口定义.
  • onTouchListener:将触摸事件调度到此视图时要调用的回调的接口定义.在将触摸事件提供给视图之前将调用回调.

  • 那没什么大不了的。您如何定义点击与如何定义触摸。以Nexus 4为例,它没有屏幕,也没有鼠标。 (3认同)

vis*_*618 8

onClickListener是使用键盘或触摸屏触发的许多事件.它们在特定视图上执行,整个视图接收事件.相比之下,onTouchListener仅用于触摸屏事件,无法通过键盘或任何其他输入触发.它们通常还会收到相应的触摸信息,如x,y corrdinates等.

我认为onClickListener适用于您的应用程序,如果您没有使用更复杂的输入,如手势等.