【问题标题】:Duration of a Single-Tap and Long-Tap in AndroidAndroid中单击和长按的持续时间
【发布时间】:2012-12-02 14:15:09
【问题描述】:

我正在尝试将叠加层拖动到地图上,并在用户点击图钉时显示信息框。为此,我需要测量MotionEvent.ACTION_DOWNMotionEvent.ACTION_UP 之间的时间。为了让它感觉尽可能自然,我想知道 Android 对单击(目前我使用的是 180 毫秒)和长按使用什么值。

谢谢!

【问题讨论】:

  • 您不需要编写区分single-Taplong-Tap的代码。而是使用GestureDetector。如果您需要更多详细信息,请告诉我。
  • 我尝试了 ItemizedOverlay 中的 onTap() 并没有触发。我假设我需要拖动的 onTouchEvent() 正在消耗所有触摸事件。所以我不认为 GestureDetector 会起作用......也许你误解了我的问题,因为我的主要问题是区分单击/长按和滚动。
  • GestureDetector 不会拦截运动事件,您需要通过调用gestureDetector.onTouchEvent(ev) 将它们提供给GestureDetector。所以,只要你能得到一个动作事件,你就可以将它提供给GestureDetector。运动事件由类分析,并在适当的时候回调onDoubleTap()onLongPress()onScroll()onSingleTapConfirmed() 和其他一些事件。也许您应该查看以下文档:developer.android.com/reference/android/view/…
  • 此外,如果您没有将事件用于某事,您需要确保从 onTouchEvent() 返回 false:这表明该事件未被消费并且可以由其他人(即onTap().

标签: android android-mapview


【解决方案1】:

Android 源码使用 125ms 的单击和 500ms 的长按时间:

private static final int PRESSED_STATE_DURATION = 125;

private static final int DEFAULT_LONG_PRESS_TIMEOUT = 500;

ViewConfiguration.java#PRESSED_STATE_DURATION

ViewConfiguration.java#DEFAULT_LONG_PRESS_TIMEOUT

【讨论】:

  • 谢谢。我认为我必须使用 TAP_TIMEOUT 而不是 PRESSED_STATE_DURATION,这与我已经使用的 180 毫秒完全相同。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-07-03
  • 1970-01-01
  • 2020-07-30
  • 1970-01-01
  • 1970-01-01
  • 2017-05-15
  • 1970-01-01
相关资源
最近更新 更多