【问题标题】:make onFling and onScroll fire separately使 onFling 和 onScroll 分别触发
【发布时间】:2013-01-10 10:11:39
【问题描述】:

我正在尝试编写一个检测和处理手势的程序。我设法使 onFling 和 onScroll 事件工作(这些事件在内部的侦听器类和 Activity 中实现)。但是,每次我滑动(onFling)时,onScroll() 函数中的代码也会被执行。例如:

@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY)
{
    //do something here, for example change background color to red
    return true;
}

@Override
public boolean onScroll (MotionEvent e1, MotionEvent e2, float distanceX, float distanceY)
{
    //do something, for example vibrate
    return true;                 
}

在这种情况下,当我滚动设备时会振动,这没关系。但是当我滑动并执行 onFling 时,颜色会变为红色,但它也会振动,我不希望这样。

有什么方法可以防止这种情况发生,所以当滑动发生时,只有 onFling() 事件中的代码被执行,并且 onScroll() 仅在真正发生滚动时触发,或者如果不是使用 onScroll() 而是处理简单手指移动和滑动手势分开?

编辑:我正在使用 GestureDetector 类。

【问题讨论】:

  • 您解决了这个问题吗?我面临着类似的问题
  • 你找到解决办法了吗?

标签: android


【解决方案1】:

我猜你正在使用GestureDetector

在它之前发生滚动时不会发生投掷,这就是为什么您在onFling(...) 之前收到onScroll(...) 回调的原因。当用户手指离开屏幕 (ACTION_UP) 并产生足够的速度时,将调用 onFling(...)

【讨论】:

  • 是的,我正在使用 GestureDetector。所以 onScroll() 总是会被调用,因为里面有 ACTION_MOVE 事件,这也发生在 onFling() 中?
  • onFling() 只能在 ACTION_UP 上调用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-27
  • 2017-07-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多