什么被认为是在Android中的“点击事件”?

时间:2012-12-27 15:41:24

标签: android events click touch

在iOS世界中,有touchUpInside的概念,触摸在视图中开始,用户在视图范围内抬起手指。

我在android中看到touch vs click(事件监听器),我想知道它们之间的区别。

3 个答案:

答案 0 :(得分:3)

触摸事件更基本。有很多种。最常见的是:

DOWN:用户触摸该项

MOVE:用户在触摸

后移动项目

UP:用户停止触摸该项

CANCEL:用户将项目移开,但仍在触摸屏幕。

在Android中,click事件是触摸事件的组合。在click的情况下,DOWNUP行为都是GestureDetector。还有一些可以在Fling中找到。 DOWN例如是MOVEUPtrue的快速动作组合,表示用户真的快速滑动手指。

修改

澄清Android如何处理onTouchEvent()中的falsedispatchTouchEvent()

它没有很好的文档,但是在Android中使用Views的方式是,当您触摸View时,它会将触摸事件从父视图发送到所有子视图。然后每个孩子都会将活动发送给孩子。这是在View方法中完成的。

当父false从孩子的onTouchEvent()方法收到false时,它将不再向该孩子发送触摸事件。这意味着,当您在onTouchEvent()中查看I am done processing touch events and all of my children are done as well.时,您的视图真的会说:

onTouchEvent()

90%的时间,在return super.onTouchEvent() ViewDOWN会返回 @Override public boolean onTouchEvent(MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: return false; case MotionEvent.ACTION_UP: return true; break; default: return false; } } 中所有孩子的触摸值。

让我们看看你的点击示例。这是一种方法,在View事件中返回false,但在UP上返回true。

View

在这种情况下,此 boolean mPossibleClick = false; @Override public boolean onTouchEvent(MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: mPossibleClick = true; break; case MotionEvent.ACTION_UP: if(mPossibleClick) { // UP event immediately after DOWN. Perform click action } default: mPossibleClick = false; } return mPossibleClick; } 的父级将立即收到错误。在此之后,它会停止向此DOWN发送触摸事件,因为您已经说完了。

这是另一种方式:

click

它相当粗糙,但基本上就是这将发生的事情。当用户第一次触摸它时,您将收到{{1}},它将返回true。如果用户抬起手指,它将执行{{1}}操作,之后将返回false,因为事件已完成。如果用户移动他的手指或执行任何其他操作,它将返回false并且点击将被清除。

最后一个是实现点击的最佳方式,但我认为它说明了我想说的内容。在现实生活中,即使是几个像素,移动事件也是非常常见的。

答案 1 :(得分:0)

每当引发任何视图的click事件时都会使用

onClickListener,例如:单击Button,ImageButton的事件。

每当你想要实现Touch功能时,就会使用

onTouchListener,例如,如果你想要准确触摸屏幕的坐标,就可以使用。

说明:

onClickListner:单击视图时要调用的回调的接口定义。

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

详细信息:

onClickListener:http://developer.android.com/reference/android/view/View.OnClickListener.html

onTouchListener:http://developer.android.com/reference/android/view/View.OnTouchListener.html

答案 2 :(得分:0)

请参阅 PH7

的回复
  

哪一个更好用?

这实际上取决于您的要求。 onTouch为您提供动作事件。因此,你可以做很多奇特的事情,因为它可以帮助你分离运动状态。仅举几例

  • ACTION_UP
  • ACTION_DOWN
  • ACTION_MOVE

这些是我们通常用来获取欲望结果的常见操作,例如在屏幕上拖动视图。

另一方面,onClick除了视图用户进行交互之外没有给你太多。 onClick是一个完整的事件,包括聚焦,按压和释放。所以,你几乎无法控制它。一方面是实施起来非常简单。

  

我们需要同时实施吗?

除非你想弄乱你的用户,否则没有必要。如果您只想要简单的点击事件,请转到onClick。如果您需要的不仅仅是点击,请转到onTouch。两者都会使过程复杂化。

从用户的角度来看,如果您仔细实施onTouch看起来像onClick,那就不明显了。

了解更多详情:请参阅thisthis