速度追踪及手势检测

速度追踪核心类VelocityTracker
LinearLayout ly_demo = (LinearLayout) findViewById(R.id.ly_demo);
        ly_demo.setOnTouchListener(new View.OnTouchListener() {

            @Override
            public boolean onTouch(View v, MotionEvent event) {
                // TODO Auto-generated method stub
                //速度追踪处理
                VelocityTracker velocityTracker = VelocityTracker.obtain();
                velocityTracker.addMovement(event);
                if(event.getAction() == MotionEvent.ACTION_MOVE){
                    //设置监听时间
                    velocityTracker.computeCurrentVelocity(100);
                    //x轴方向上在100ms下的速度单位为像素
                    int xVelocity = (int) velocityTracker.getXVelocity();
                    //y轴方向上在100ms下的速度单位为像素
                    int yVelocity = (int) velocityTracker.getYVelocity();
                    Log.e("速度","x:"+xVelocity);
                    Log.e("速度","y:"+yVelocity);
                    //使用完成回收处理VelocityTracker
		    velocityTracker.clear();
		    velocityTracker.recycle();
                }
                return true;
            }
        });

手势检测 核心类GestureDetector

        //初始化实例对象
        final GestureDetector gestureDetector = new GestureDetector(this,this);//第一个参数为Context,OnGestureListener
        //设置双击监听
        gestureDetector.setOnDoubleTapListener(this);//OnDoubleTapListener
        //解决长按后无法拖动
        gestureDetector.setIsLongpressEnabled(false);
        LinearLayout ly_demo = (LinearLayout) findViewById(R.id.ly_demo);
        ly_demo.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                // TODO Auto-generated method stub
                //接管onTouchEvent方法
                boolean consume = gestureDetector.onTouchEvent(event);
                return consume;
            }
        });
OnGestureListener接口方法
    //轻触屏幕一瞬间ACTION_DOWN
    @Override
    public boolean onDown(MotionEvent e) {
        return false;
    }
    //轻触屏幕尚未松开强调没有松开或拖动的状态ACTION_DOWN
    @Override
    public void onShowPress(MotionEvent e) {

    }
    //轻触后松开单击行为ACITON_UP
    @Override
    public boolean onSingleTapUp(MotionEvent e) {
        return false;
    }
    //按下并拖动属于拖动行为 一个ACTION_DOWN多个ACTION_MOVE
    @Override
    public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
        return false;
    }
    //长按行为
    @Override
    public void onLongPress(MotionEvent e) {

    }
    //快速滑动行为 一个ACTION_DOWN多个ACTION_MOVE一个ACTION_UP
    @Override
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
        return false;
    }
OnDoubleTapListener接口方法
    //严格单击行为区别于onSingleTapUp 不属于双击中的一次单击行为
    @Override
    public boolean onSingleTapConfirmed(MotionEvent e) {
        return false;
    }
    //双击行为 不可能和onSingleTapConfirmed共存
    @Override
    public boolean onDoubleTap(MotionEvent e) {
        return false;
    }
    //表示发生双击行为 ACTION_DOWN ACTION_MOVE ACTION_UP都会触发此回调
    @Override
    public boolean onDoubleTapEvent(MotionEvent e) {
        return false;
    }


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值