2

我想在 Android 中实现两指长按。我试图覆盖 onLongPress:

private static final int LONGTIMEOUT = ViewConfiguration.getLongPressTimeout() + 100;

@Override public void onLongPress(final MotionEvent e) {
  Log.i(TAG, "onLongPress");
  switch (e.getActionMasked()) {
    case MotionEvent.ACTION_DOWN:
      Log.i(TAG, "onLongPress:ACTION_DOWN");
      break;
    case MotionEvent.ACTION_POINTER_DOWN:
      Log.i(TAG, "onLongPress:ACTION_POINTER_DOWN");
      if (SystemClock.uptimeMillis() - e.getEventTime() > LONGTIMEOUT)
        Log.i(TAG, "YES YES YES");
      break;
    default:
      break;
  }
}

但当我用两根手指在屏幕上长按时,它永远不会进入 ACTION_POINTER_DOWN 。有人知道如何正确解决/实施它吗?

4

1 回答 1

1
public abstract void onLongPress (MotionEvent e)

e根据android doc的定义:

启动长按的初始向下运动事件。

这意味着如果LongPress您用一根手指开始一个手势,该手指将是唯一考虑的手指onLongPress。我对手势不是很好,但我认为你应该首先确定它是 2 指还是 1 指触摸,然后看看它是长按还是正常点击

于 2013-08-06T07:07:03.207 回答