我目前正在构建一个文件管理器,它将使用手势进行操作,这就是为什么我需要这种手势。我已经尝试过在这里搜索一些类似的主题,但我只是找不到一些东西,可以给我一些想法来做这件事。我发现的只是SimplegestureListener(我已经使用过)和GestureOverlayView(我认为这对我的应用程序不好)。我想我可以应用onfling方法的想法,但我意识到它不适用于我瞄准的L形手势…简单来说,我想知道的是:
所以,我需要弄清楚的是,如何检测水平和垂直滑动之间的点。有没有其他方法可以用来检测listview上的那个点?我只想知道怎么做,我知道我能搞清楚。:)

最佳答案

您需要为listview实现一个onTouch()事件来检测用户触摸模式。下面是一个伪代码,说明我将如何处理此问题:

@Override
public boolean onTouch(View view, MotionEvent motionEvent) {

    switch (motionEvent.getActionMasked()) {
        case MotionEvent.ACTION_DOWN:
            //Get the X and Y values the user touched down first
            mDownX = motionEvent.getRawX();
            mDownY = motionEvent.getRawY();

            break;

        case MotionEvent.ACTION_MOVE: {
            float deltaX = motionEvent.getRawX() - mDownX;
            float deltaY = motionEvent.getRawY() - mDownY;

            if (deltaX > myMoveToTheRightThreashold
                && Math.abs(deltaY) < myNoYmoveThreashold) {
                moveToRight = true;
            }
            if (moveToRight && deltaY > myMoveUpThreshold) {
                myLShapedGesture = true;
                return true;
            }
            break;
      }
      return false;
}

我根本没有测试这个,我只是想告诉你如何接近。您可能需要添加一个case MotionEvent.ACTION_UP来检测用户何时停止触摸设备并在那里执行所需的操作。
希望有帮助。

10-08 08:17
查看更多