我有点怀疑。我正在使用图像按钮(例如媒体播放器中的播放图标)。我想知道我应该使用哪个动作侦听器,onClickListener或onTouchListener。这两个动作之间有什么区别,我应该何时使用它们。
答案 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>
只需查看两者的官方文档:onClickListener和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