Android中Click和Touch Listeners之间的区别

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

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

  • 只要你想要实现触摸types的function,就可以使用onTouchListener ,例如,如果你想要准确触摸屏幕的坐标。

更新:

只需检查两者的官方文档: onClickListener和onTouchListener 。

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

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

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

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

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

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

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

这里有一些很好的讨论:

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

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

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

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

这个问题我也记得应该使用点击或触摸监听器。

然后我有这样的理解,

当我需要任何View(Button/Image/etc) to make clickable ,这意味着用户只是不要触摸屏幕的那一部分,而是在屏幕的那一部分尝试触摸 ,以便下一个动作被调用我use onClickListener ,另外一件事就像假设使用Button一样,我们可以根据需要动态地使它成为Clickable True / False ,因此在这种情况下OnClickListener是优先的。

 new View.OnClickListener() { public void onClick(View v) { // TODO Auto-generated method stub } }; 

在开发屏幕时where the simple Touch of User is to be taken as action游戏中的更多where the simple Touch of User is to be taken as action或使用您想要捕获用户触摸的图像,还需要to find the Motion Events up/down/left/righ触摸我不喜欢use onTouchListener

 new View.OnTouchListener() { public boolean onTouch(View v, MotionEvent event) { // TODO Auto-generated method stub return false; } }; 

在你的情况下, 我建议使用onClickListener