【问题标题】:How to detect a L-shaped gesture in android?如何在android中检测L形手势?
【发布时间】:2013-11-23 08:40:21
【问题描述】:

我目前正在构建一个文件管理器,它将使用手势进行操作,这就是我需要这种手势的原因。我已经尝试在这里搜索一些类似的主题,但我只是找不到可以让我对此有所了解的东西。我发现的只是 SimpleGestureListener(我已经使用过)和 GestureOverlayView(我认为这对我的应用程序不利)。我以为我可以应用 onFling 方法的想法,但我意识到它不适用于我瞄准的 L 形手势......为了简单起见,这是我想知道的事情:

所以,我需要弄清楚的是如何检测水平和垂直滑动之间的点。有没有其他方法可以用来检测我的 ListView 上的那个点?我只需要一些关于如何做的想法,我知道我可以弄清楚。 :)

【问题讨论】:

    标签: android listview swipe gesture


    【解决方案1】:

    您需要为列表视图实现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 来检测用户何时停止触摸设备并在那里执行您想要的操作。

    希望对你有帮助。

    【讨论】:

    • 感谢您给我一些关于如何做的想法。让我尝试这些代码,如果我成功了,我会回到这里。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多