Android中的手势识别

来源:互联网 发布:安卓网络嗅探器怎么用 编辑:程序博客网 时间:2024/04/29 23:37

Android手势概述

用户对手机的触摸可以延伸出很多的手势,下图为Android中手势图
这里写图片描述
在Android项目中,如果要自己写Touch事件来开发手势,难度很大,Android提供了手势识别器来 帮助开发者来快发 ,则对于手势的开发变的非常简单。

具体代码实现

如下代码是针对于安卓中的滑动手势开发

GestureDetector mGestureDetector = null;............{    ......    ......    mGestureDetector = new GestureDetector(new GestureDetector.SimpleOnGestureListener() {            /**             * 参数1:手放在手机上的第一个点             * 参数2:手滑动后的到达的点              * 参数3:手在手机上X轴上滑动的距离             * 参数4:手在手机上Y轴上滑动的距离             */            @Override            public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {                /* 向左滑动屏幕,>50表示滑动距离超过50有效 */                if ((e2.getX() - e1.getX()) > 50) {                    // TODO 这里写当屏幕向左边滑动时的代码                    return true; // 返回true,则将当前的时间消费                }                if (e1.getX() - e2.getX() > 50) {                    // TODO 这里写屏幕向右滑动时的代码                    return true;                }                return super.onFling(e1, e2, velocityX, velocityY);            }        });    }

写完以上代码并不是就完事了,我们知道,Android中的触摸事件都在OnTouchEvent()方法中来处理,所以不要忘记下面的代码

/** 如果想让屏幕触摸事件有效,必须重写这个方法 */    @Override    public boolean onTouchEvent(MotionEvent event) {        // 重写后方法后需要在里面添加        mGestureDetector.onTouchEvent(event);        return super.onTouchEvent(event);    }

写到这里,就完成了在屏幕上左右滑动的手势识别代码

总结:

GestureDetector:Android提供的用户手势识别器,通过TouchEvent来处理用户对Actvity的Touch事件。
SimpleOnGestureListener():传入识别器内部的默认监听器,开发者需要处理那个手势,就重写器相对应的方法,例如,以上的代码为需要处理左右滑动的手势,所以在其内部重写了onFling方法。
MotionEvent: 其内部封装了用户对Activity的点击的点击位置,所以,可以通过getRawX获取点击位置的x坐标,getRawY来获取点击位置的y坐标

1 0