OnGestureListener

分析:View.OnTouchListener与GestureDetector.OnGestureListener的区别

我们可以通过MotionEvent的getAction()方法来获取Touch事件的类型,包括 ACTION_DOWN(按下屏幕), ACTION_MOVE(按下屏幕后移动受力点), ACTION_UP(松开屏幕)和ACTION_CANCEL(不会由用户直接触发)。借助对于用户不同操作的判断,结合getRawX()、 getRawY()、getX()和getY()等方法来获取坐标后,我们可以实现诸如拖动某一个按钮,拖动滚动条等功能。

OnTouchListener只能监听到三种触摸事件,即按下,移动,松开,如果想要监听到双击、滑动、长按等复杂的手势操作,这个时候就必须得用到OnGestureListener了。

View.OnTouchListener

public interface OnTouchListener {
        boolean onTouch(View var1, MotionEvent var2);
    }

GestureDetector.OnGestureListener

public interface OnGestureListener {
        // onDown 用户轻触屏幕,由1个MotionEvent ACTION_DOWN触发
        boolean onDown(MotionEvent var1);

        // onShowPress 用户轻触屏幕,尚未松开或拖动,由一个1个MotionEvent ACTION_DOWN触发,
        // 注意和onDown()的区别,强调的是没有松开或者拖动的状态
        void onShowPress(MotionEvent var1);

        // onSingleTapUp 用户(轻触屏幕后)松开,由一个1个MotionEvent ACTION_UP触发
        boolean onSingleTapUp(MotionEvent var1);

        // onScroll 用户按下屏幕,并拖动,由1个MotionEvent ACTION_DOWN, 多个ACTION_MOVE触发
        boolean onScroll(MotionEvent var1, MotionEvent var2, float var3, float var4);

        // onLongPress 用户长按屏幕,由多个MotionEvent ACTION_DOWN触发
        void onLongPress(MotionEvent var1);

        // onFling 用户按下屏幕、快速移动后松开,由1个MotionEvent ACTION_DOWN, 多个ACTION_MOVE, 1个ACTION_UP触发  
        boolean onFling(MotionEvent var1, MotionEvent var2, float var3, float var4);
    }

results for ""

    No results matching ""