Android 中文API (91) —— GestureDetector
正文 一、结构 public classGestureDetector extendsObject java.lang.Object android.view.GestureDetector 二、概述 通过系统提供的MotionEvent来监测各种手势和(触摸)事件。当一个指定的手势事件发生时,GestureDetector.OnGestureListener回调函数将通告用户。这个类仅仅处理由触摸引发的MotionEvent(不能处理由轨迹球引发的事件)。要使用这个类需执行以下操作: *为你的View建立一个GestureDetector实例。 *在View的onTouchEvent(MotionEvent)方法里确保调用(GestureDetector的)onTouchEvent(MotionEvent)方法。当相关事件发生时,定义在回调函数里的方法将被执行。 三、嵌套类 interface GestureDetector.OnDoubleTapListener 双击和轻击(confirmed single-tap)事件的监听器。(译者注:confirmed single-tap是用户快速点一下触摸屏所引发的动作。区分下面两种情况: 1.手指按下,停留0.2秒(估计值)以上再抬起时,不算confirmed single-tap 2.快速点击屏幕两次不会引发两次confirmed single-tap事件,而是引发一次DoubleTap事件。) interface GestureDetector.OnGestureListener 在有手势动作发生时,通知的监听器 class GestureDetector.SimpleOnGestureListener 当只需要监听部分手势时,用于扩展的便捷类 四、构造函数 publicGestureDetector(GestureDetector.OnGestureListenerlistener,Handlerhandler) 已弃用,替代方法: GestureDetector(android.content.Context, android.view.GestureDetector.OnGestureListener, android.os.Handler) 通过提供的监听器来创建一个GestureDetector,这个构造函数只能用于非UI线程(因为它允许指定一个handler)。 参数 listener用于触发所有回调函数的监听器,不能为空 handler需要使用到的handler 异常 NullPointerExceptionListener或者handler为空时 publicGestureDetector(GestureDetector.OnGestureListenerlistener) 已弃用,替代方法: GestureDetector(android.content.Context, android.view.GestureDetector.OnGestureListener) 通过提供的监听器来创建一个GestureDetector。你只能于UI线程里使用这个构造函数(这是通常的情况) 参数 listener用于触发所有回调函数的监听器,不能为空 异常 NullPointerException如果Listener为空 参见 Handler() publicGestureDetector(Contextcontext,GestureDetector.OnGestureListenerlistener) 通过提供的监听器来创建一个GestureDetector。(通常情况下)你只能于UI线程里使用这个构造函数 参数 context应用程序上下文 listener用于触发所有回调函数的监听器,不能为空 异常 NullPointerException如果Listener为空 参见 Handler() publicGestureDetector(Contextcontext,GestureDetector.OnGestureListenerlistener,Handlerhandler) 通过提供的监听器来创建一个GestureDetector.(通常情况下)你只能于UI线程里使用这个构造函数 参数 context应用程序上下文 listener用于触发所有回调函数的监听器,不能为空 handler需要使用到的handler 异常 NullPointerException如果Listener为空 参见 Handler() publicGestureDetector(Contextcontext,GestureDetector.OnGestureListenerlistener,Handlerhandler, boolean ignoreMultitouch) 通过提供的监听器来创建一个GestureDetector.(通常情况下)你只能于UI线程里使用这个构造函数 参数 context应用程序上下文 listener用于触发所有回调函数的监听器,不能为空 handler需要使用到的handler ignoreMultitouch是否忽视多点触控(译者注:仅适用于2.2以上的android版本,如果没设置这个参数(即使用的是上一个构造函数),则会忽视多点触控 ,由于网上都没有在GestureDetector传入handler的例子,所以我也不明白这里的handler的具体用意。如果有需要深入理解的朋友,请参照GestureDetector的源码 异常 NullPointerException如果Listener为空 参见 Handler() 五、公共方法 public booleanisLongpressEnabled() 返回值 如果允许长按事件,则返回true,否则为false public booleanonTouchEvent(MotionEventev) 分析指定的动作事件,如何满足条件,就触发在GestureDetector.OnGestureListener中提供的回调函数 参数 ev当前的触摸事件(译者注:如MotionEvent_DOWN, MotionEvent_UP) 返回值 如果GestureDetector.OnGestureListener消耗了这个事件,则返回true,否则返回false public voidsetIsLongpressEnabled(boolean isLongpressEnabled) 设置是否启用长按。如果启用长按,当用户按下并保持按下状态时,将收到一个长按事件,同时不再接收其它事件;如果禁用长按,当用户按下并保持按下状态然后再移动手指时,将会接收到scroll事件。长按默认为启用。 参数 isLongpressEnabled 是否启用接收长按事件 public voidsetOnDoubleTapListener(GestureDetector.OnDoubleTapListeneronDoubleTapListener) 设置双击及其相关手势的监听器 参数 onDoubleTapListener触发所有回调函数的监听器,或者设为null以停止监听双击的手势 本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/582415,如需转载请自行联系原作者