Android中Click和Touch监听器之间的区别

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

Solutions Collecting From Web of "Android中Click和Touch监听器之间的区别"

  • onClickListener用于任何视图的点击事件引发,例如说:点击事件Button,ImageButton。

  • onTouchListener用于实现Touchtypes的function,例如,如果你想获得精确触摸的屏幕坐标。

更新:

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

所以从官方文件来看,两者的定义是:

  • onClickListner :单击视图时要调用的callback的接口定义。
  • onTouchListener :将触发事件分派到此视图时要调用的callback的接口定义。 触摸事件发送给视图之前,将调用callback。

@ vishy1618的答案有这个线程的关键洞察力(试图留下这个评论,但太长)。

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

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

所以,如果你只用触摸事件来编写你的UI,你就隐含地需要一个触摸屏 。 而如果你坚持onClick,你的应用程序理论上可以在非触摸设备上工作。

当然,所有'兼容'的Android手机目前都有触摸屏…所以这是有效的。 但是,如果你希望你的应用程序在非手机硬件上工作,这可能是值得考虑的。

这里有一些很好的讨论:

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

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

onClickListener是使用键盘或触摸屏触发的一系列事件。 他们在特定的视图上执行,整个视图接收事件。 相反,onTouchListener仅用于触摸屏事件,不能通过键盘或任何其他input触发。 他们通常也会收到相应的触摸信息,如x,y等等。

我认为onClickListener会适合您的应用程序,如果您不使用更复杂的input,如手势等

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

然后我有这样的理解,

当我需要任何View(Button/Image/etc) to make clickable ,这意味着用户只是不要触摸屏幕的一部分,但delebrately尝试触摸屏幕的部分,所以下一个动作被调用我use onClickListener ,另一件事就像使用Button一样,我们可以根据需要dynamic地将它设置为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; } }; 

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