android中的“点击事件”是什么?
在iOS世界中,有一个概念是android中的“点击事件”是什么?,android,events,click,touch,Android,Events,Click,Touch,在iOS世界中,有一个概念是touchUpInside,触摸在视图中启动,用户在视图范围内举起手指 我在安卓系统中看到了触摸和点击,我想知道它们之间的区别 每当引发任何视图的单击事件时,都会使用onClickListener,例如:按钮的单击事件、图像按钮 onTouchListener在您想要实现触摸式功能时使用,例如,如果您想要获得触摸屏的坐标 定义: onClickListner:单击视图时调用回调的接口定义 onTouchListener:将触摸事件发送到此视图时要调用的回调的接口定义。
touchUpInside
,触摸在视图中启动,用户在视图范围内举起手指
我在安卓系统中看到了触摸和点击,我想知道它们之间的区别 每当引发任何视图的单击事件时,都会使用onClickListener,例如:按钮的单击事件、图像按钮 onTouchListener在您想要实现触摸式功能时使用,例如,如果您想要获得触摸屏的坐标 定义: onClickListner:单击视图时调用回调的接口定义 onTouchListener:将触摸事件发送到此视图时要调用的回调的接口定义。在将触摸事件提供给视图之前,将调用回调 详情: onClickListener:
onTouchListener:参考PH7的响应 哪一个更好用 这取决于你的要求。
onTouch
提供运动事件。因此,你可以做很多新奇的事情,因为它可以帮助你分离运动状态。仅举几个例子
ACTION\u UP
ACTION\u DOWN
ACTION\u MOVE
onClick
除了提供与用户交互的视图之外,并没有提供太多信息onClick
是一个完整的事件,包括对焦、按下和释放。所以,你几乎无法控制它。一方面,它的实现非常简单
我们是否需要实现这两个目标
这是没有必要的,除非你想搞乱你的用户。如果您只需要简单的点击事件,请点击onClick
。如果您想点击更多内容,请点击onTouch
。两者兼而有之会使过程复杂化
从用户的角度来看,如果小心地将onTouch
实现为类似于onClick
,这是不明显的
有关更多详细信息:请参阅和触摸事件更为基本。有很多种类。最常见的是:
向下
:用户触摸项目
移动
:用户在触摸项目后移动项目
UP
:用户停止触摸项目
取消
:用户移开项目,但仍在触摸屏幕
在Android中,点击事件是触摸事件的组合。如果是单击
,则同时执行向下
和向上
操作。还有一些可以在手势检测器中找到<例如,code>Fling
是DOWN
、MOVE
和UP
的快速组合,表示用户快速滑动手指
编辑:
说明Android如何处理onTouchEvent()中的true
和false
虽然没有很好的文档记录,但Android中视图的工作方式是,当您触摸一个视图时,它会将该触摸事件从父视图发送到所有子视图。然后,每个子级将事件发送给其子级。这是通过dispatchTouchEvent()
方法完成的
当父视图从子视图的onTouchEvent()
方法接收到false
时,它将不再向该子视图发送触摸事件。这意味着,当您的视图在onTouchEvent()
中返回false
时,您的视图实际上显示:
我已经完成了触摸事件的处理,我所有的孩子也都完成了。
90%的时间,在onTouchEvent()
中,您可以执行返回super.onTouchEvent()
以返回视图中所有子对象的触摸值
让我们看看你的点击示例。这里有一种方法,在DOWN
事件中返回false,在向上事件中返回true
@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;
}
}
在这种情况下,此视图的父视图将立即收到false。在此之后,它将停止向此视图发送触摸事件,因为您说它已完成
还有一种方法:
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
,它将返回true。如果用户抬起手指,它将执行单击
操作,之后将返回false,因为事件已完成。如果用户移动手指或执行任何其他操作,则返回false,单击将被取消
最后一个不是实现点击的最佳方式,但我认为它说明了我想说的。在现实生活中,移动事件非常常见,即使只有几个像素 因此,如果我想在touchListener中捕获“点击事件”,我应该测试向下
和向上
?如果是,以什么方式?或者测试up
就足够了?您必须在触摸事件中测试DOWN
,并返回true
,因为一旦视图返回false
它将停止接收触摸事件。当一个视图返回false
时,它意味着“没有进一步的触摸处理,我可以这样做,不用再问了”。因此,在本例中,您将捕获一个DOWN
事件,返回true,然后捕获一个UP
事件。false
和true
与您在onTouch中所说的意思不同。你能详细说明一下吗?onTouch()-返回一个布尔值,指示侦听器是否使用此事件。重要的是,此事件可以有多个后续操作。因此,如果在接收到down action事件时返回false,则表示