gpt4 book ai didi

android - android 中的 `click event` 是什么?

转载 作者:搜寻专家 更新时间:2023-11-01 09:02:26 26 4
gpt4 key购买 nike

在 iOS 世界中,有一个 touchUpInside 的概念,触摸在 View 内开始,用户在 View 边界内抬起手指。

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

最佳答案

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

DOWN:用户触摸项目

MOVE:用户在触摸它之后

在项目周围移动

UP:用户停止触摸该项目

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

在 Android 中,click 事件是触摸事件的组合。在 click 的情况下,它是 DOWNUP 操作。在 GestureDetector 中可以找到其他的。例如,FlingDOWNMOVEUP 的快速组合,表示用户滑动手指真快。

编辑:

关于 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com