Android中Click和Touch Listeners之间的区别

时间:2011-11-08 06:47:31

标签: android

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

4 个答案:

答案 0 :(得分:27)

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

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

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

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

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

这里有一些很好的讨论:

How to determine if an Android device has a touchscreen?

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

答案 1 :(得分:16)

    每当引发任何视图的点击事件时,都会使用
  • onClickListener ,比如说:点按Button,ImageButton的事件。

  • onTouchListener 可用于实现触摸功能,例如,如果您希望获得完全触摸屏幕的坐标,则可以使用 {{1}} 。 p>

更新

只需查看两者的官方文档:onClickListeneronTouchListener

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

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

答案 2 :(得分:8)

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

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

答案 3 :(得分:0)

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

然后我有这样的理解,

当我需要任何View(Button/Image/etc) to make clickable时,意味着用户只是不触摸屏幕的那一部分,而是在屏幕的那一部分尝试触摸,以便下一个操作被称为I use onClickListener,另外一件事就是假设使用Button我们可以根据需要动态地使它成为可点击的真/假因此在这种情况下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或使用要捕获用户触摸过的图像,但您需要触摸to find the Motion Events up/down/left/righ t,我需要 {{ 1}}。

use onTouchListener

和 在您的情况下我建议使用onClickListener