Android 如何判断手势

GestureDetector

  1. onDown(MotionEvent e):按下事件;
  2. onSingleTapUp(MotionEvent e):单击时,在按下后既没有滑动(onScroll),又没有长按(onLongPress),而后抬起时触发。点击一下很是快的(不滑动)Touchup:onDown->onSingleTapUp->onSingleTapConfirmed 点击一下稍微慢点的(不滑动)Touchup:onDown->onShowPress->onSingleTapUp->onSingleTapConfirmed
  3. onShowPress(MotionEvent e):down事件发生而move或up还没发生前,触发该事件;Touch了但尚未滑动时触发。 与onDown,onLongPress比较:onDown只要按下必定马上触发。而按下后过一会没有滑动先触发onShowPress再是onLongPress。如,按下后一直不滑动,触发顺序onDown-->onShowPress-->onLongPress。
  4. onLongPress(MotionEvent e):长按事件;Touch了不移动一直Touch down时触发。
  5. onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY):滑动手势事件;Touch了滑动一点距离后,在抬起时才会触发。参数:e1,第1个ACTION_DOWN MotionEvent 而且只有一个;e2,最后一个ACTION_MOVE MotionEvent ;velocityX,X轴上的移动速度(像素/秒);velocityY,Y轴上的移动速度(像素/秒)。 触发条件:X轴的坐标位移大于FLING_MIN_DISTANCE,且移动速度大于FLING_MIN_VELOCITY个像素/秒时。
  6. onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY):在屏幕上拖动事件。在ACTION_MOVE动做发生时触发,会屡次触发。onDown-->onScroll-->onScroll-->onFiling

ViewDragHelper

public class VDHLayout extends LinearLayout
{
    private ViewDragHelper mDragger;

    public VDHLayout(Context context, AttributeSet attrs)
    {
        super(context, attrs);
        mDragger = ViewDragHelper.create(this, 1.0f, new ViewDragHelper.Callback()
        {
            @Override
            public boolean tryCaptureView(View child, int pointerId)
            {
                return true;
            }

            @Override
            public int clampViewPositionHorizontal(View child, int left, int dx)
            {
                return left;
            }

            @Override
            public int clampViewPositionVertical(View child, int top, int dy)
            {
                return top;
            }
        });
    }

   @Override
    public boolean onInterceptTouchEvent(MotionEvent event)
    {
        return mDragger.shouldInterceptTouchEvent(event);
    }

    @Override
    public boolean onTouchEvent(MotionEvent event)
    {
        mDragger.processTouchEvent(event);
        return true;
    }
}
相关文章
相关标签/搜索