Android GestureDetector手势识别的使用

1  实例化GestureDetector,传入的参数是context和onGestureListener

 mGestureDetector = new GestureDetector(this,new MyGestureDectorListener());

2 写一个类MyGestureDetectorListener实现onGestureListener接口,实现里面的各个抽象方法

public class MyGestureDectorListener implements GestureDetector.OnGestureListener {
    @Override
    public boolean onDown(MotionEvent e) {
        //刚刚手指接触到触摸屏的那一刹那,就是触的那一下。
        Log.d("sjx","onDown");
        return true;
    }

    @Override
    public void onShowPress(MotionEvent e) {
        //手指按在触摸屏上,它的时间范围在按下起效,在长按之前。
        Log.d("sjx","onShowPress");

    }

    @Override
    public boolean onSingleTapUp(MotionEvent e) {
        //手指离开触摸屏的那一刹那。
        Log.d("sjx","onSingleTapUp");
        return false;
    }

    @Override
    public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
        // 手指在触摸屏上滑动。
        Log.d("sjx","onScroll");
        return false;
    }

    @Override
    public void onLongPress(MotionEvent e) {
        //手指按在持续一段时间,并且没有松开。
        Log.d("sjx","onLongPress");

    }

    @Override
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
        //手指在触摸屏上迅速移动,并松开的动作。
        Log.d("sjx","onFling");
        return false;
    }
}

在GestureDetector中有个对onGestureListener的空实现SimpleOnGestureListener类,并且这个类同样实现了OnDoubleTapListener,OnContextClickListener,提供了双击的监听事件,我们可以直接继承这个类,然后实现某几个需要的方法。


3 若是对Activity界面做手势识别,直接在Activity中的onTouchEvent方法中:

public boolean onTouchEvent(MotionEvent event) {
        return mGestureDetector.onTouchEvent(event);
    }

4 经过测试:

1)轻点一下activity会调用 onDown --> onSingleTapUp

2)稍微长一点的点击(介于轻点和长按之间的点击)会调用 onDown --> onShowPress -->onSingleTapUp

3)长按 会调用 onDown -->onShowPress -->onLongPress

4)在Activity上滑动,并且在滑动的终点时手指没有立即离开屏幕  onDown -->onShowPress -->onScroll(多个)

5)在Activity上滑动,并且在滑动的终点时手指迅速离开屏幕 onDown --> onShowPress --> onScroll (多个)-->onFling

6)在Activity上迅速滑一下会调用 onDown -->onScroll(多个)-->onFling


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值