gpt4 book ai didi

android - OnGestureListener.onDown()返回false的含义

转载 作者:太空宇宙 更新时间:2023-11-03 12:54:30 24 4
gpt4 key购买 nike

根据 android training如果您扩展 GestureDetector.SimpleOnGestureListener,并从 onDown(...) 返回 false 而不是 GestureDetector.SimpleOnGestureListener< 的其他方法 永远不会被调用:

Whether or not you use GestureDetector.OnGestureListener, it's best practice to implement an onDown() method that returns true. This is because all gestures begin with an onDown() message. If you return false from onDown(), as GestureDetector.SimpleOnGestureListener does by default, the system assumes that you want to ignore the rest of the gesture, and the other methods of GestureDetector.OnGestureListener never get called. This has the potential to cause unexpected problems in your app. The only time you should return false from onDown() is if you truly want to ignore an entire gesture.

但是,在我的简单测试中 onScroll(...) 被调用了。

public void onCreate(Bundle savedInstanceState) {
mDetector = new GestureDetectorCompat(this, MyGestureListener);
}


public boolean onTouchEvent(MotionEvent event) {
mDetector.onTouchEvent(event);
return true;
}


class MyGestureListener extends GestureDetector.SimpleOnGestureListener {
private boolean scrollEvent;

@Override
public boolean onDown (MotionEvent event) {
Log.v("GESTURE", "onDown ");
return false;
}

@Override
public boolean onScroll (MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
Log.v("GESTURE", "onScroll");
return true;
}

另一个类似的问题是下一个定义,同样来自同一个android培训页面:

a return value of true from the individual on methods indicates that you have handled the touch event. A return value of false passes events down through the view stack until the touch has been successfully handled.

这与之前的报价如何结算?

最佳答案

The only time you should return false from onDown() is if you truly want to ignore an entire gesture.

这几乎说明了一切。

重点是 onDown(...) 方法接收一个 MotionEvent 作为参数,您可以选择分析 MotionEventonDown(...) 方法中,如果它不是您想要处理的内容,则返回 false

MotionEvent 包含大量详细信息,包括手势开始的位置(例如)- 如果它在您要处理的区域之外,则返回 false 否则返回 true

如果您从 onDown(...) 返回 true,则将调用其他方法。这些方法中的每一个都可以选择分析和处理传递给它们的各种参数。如果您在这些方法中的任何一个中处理一个事件并且不希望任何进一步的操作,那么从这些方法返回 true 否则将调用其他方法(可能在父类(super class)中,具体取决于您的代码实现)。

手势很复杂,涉及上下 Action 以及任何方向的移动。允许拒绝手势的选项(通过在 onDown(...) 中返回 false)使事情变得更加通用。

编辑:在某些情况下,您可能会在屏幕上看到多个 View 。传递给 onDown(...)MotionEvent 将包含有关手势开始位置的信息。如果您不希望屏幕的某些区域对手势使用react,则在检查手势的起始位置后返回 false

关于android - OnGestureListener.onDown()返回false的含义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23122411/

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