我有SimpleGestureDetectorListener并实现了onScroll,如下所示:

    public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,     float distanceY)
    {
        Log.i("MOVE_LARGE", "e1.getY=" + e1.getY()+" "+"e2.getY="+e2.getY());
        Log.i("MOVE_SMALL", "distanceY=" + distanceY);
        FrameLayout.LayoutParams params = (FrameLayout.LayoutParams)      fragmentContainer.getLayoutParams();
        int nextMargin = params.topMargin - (int) distanceY;
        if (Math.abs(distanceY )> MOVE_TRESHOLD)
        {
            setContainerMargin(nextMargin);
        }
        return true;
    }


您可能会猜到,我提出一些看法。因此,当我在手指停在屏幕上的某个位置移动它时,视图开始来回跳动。

我已记录事件并具有以下图片:

   03-09 10:57:02.874: I/MOVE_EVENT(27478): 2
   03-09 10:57:02.875: I/MOVE_LARGE(27478): e1.getY=24.892685 e2.getY=261.41266
   03-09 10:57:02.875: I/MOVE_SMALL(27478): distanceY=23.0
   03-09 10:57:02.891: I/MOVE_EVENT(27478): 2
   03-09 10:57:02.892: I/MOVE_LARGE(27478): e1.getY=24.892685 e2.getY=284.41266
   03-09 10:57:02.892: I/MOVE_SMALL(27478): distanceY=-23.0
   03-09 10:57:02.908: I/MOVE_EVENT(27478): 2
   03-09 10:57:02.908: I/MOVE_LARGE(27478): e1.getY=24.892685 e2.getY=261.41266
   03-09 10:57:02.908: I/MOVE_SMALL(27478): distanceY=23.0
   03-09 10:57:02.925: I/MOVE_EVENT(27478): 2
   03-09 10:57:02.925: I/MOVE_LARGE(27478): e1.getY=24.892685 e2.getY=284.41266
   03-09 10:57:02.925: I/MOVE_SMALL(27478): distanceY=-23.0
   03-09 10:57:02.941: I/MOVE_EVENT(27478): 2


如果我不动手指,它会不断重复。阈值不是问题,因为距离变化很大(从10到100)。事件为2 == ACTION_MOVE。

有什么问题以及如何解决?

最佳答案

好的,问题是我试图移动某些视图,并且我(不是故意)分配了触摸侦听器以查看正在移动的视图。这就是导致我的“意外行为”的原因。

07-26 07:22