android - android中 `click event`被认为是什么?

标签 android events click touch

在 iOS 世界中,有一个 touchUpInside 的概念,触摸在 View 内启动,用户在 View 范围内抬起手指。

我在 Android 中看到了 touchclick(事件监听器),我想知道它们之间的区别。

最佳答案

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

DOWN:用户触摸该项目

MOVE:用户在触摸项目后移动

UP:用户停止触摸该项目

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

在 Android 中,click 事件是触摸事件的组合。对于click,它既是DOWN 又是UP 操作。还有其他可以在 GestureDetector 中找到。例如,FlingDOWNMOVEUP 快速 Action 的组合,表示用户滑动手指速度真快。

编辑:

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

它没有很好的记录,但是 View 在 Android 中的工作方式是,当您触摸 View 时,它会将触摸事件从父 View 发送到所有 subview 。然后每个 child 都会将该事件发送给它的 child 。这是在 dispatchTouchEvent() 方法中完成的。

当父级 View 从子级的 onTouchEvent() 方法接收到 false 时,它将不再向该子级发送触摸事件。这意味着当您的 View 在 onTouchEvent() 中返回 false 时,您的 View 实际上是这样说的:

我已经完成了触摸事件的处理,我所有的 child 也都完成了。

90% 的情况下,在 onTouchEvent() 中,您会执行 return super.onTouchEvent() 来返回 中所有子级的触摸值查看

那么让我们看一下您的点击示例。这是一种方法,在 DOWN 事件上返回 false,但在 UP 事件上返回 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;
    }
} 

在这种情况下,此View的父级将立即收到 false。之后,它将停止向此 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,它将返回true。如果用户抬起手指,它将执行click 操作,之后将返回 false,因为事件已完成。如果用户移动手指或执行任何其他操作,它将返回 false 并且点击将被清空。

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

关于android - android中 `click event`被认为是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14057237/

相关文章:

html - 单击 JSP 中的 Div 时调用 Servlet doPost 方法

jquery - 检测鼠标中键单击事​​件 jQuery

android - Xamarin - ListView 图像单元格图像在滚动时消失

android - 如何在 Espresso 测试中获取 View 的标签?

java - Android 切换按钮自定义大小/填充/间距

java - 回合制游戏设计 : Event-Driven vs. 游戏循环

javascript - 表单 javascript 提交事件

Android:在哪里可以找到 Seekbar 可绘制 "scrubber_control_normal_holo"

javascript - AngularJS 适当的事件与 parent 和 child 的指令出价

java - 单击按钮时从另一个类调用方法