Android 中文API (91) —— GestureDetector

 

前言

  本章内容是android.view.GestureDetector,版本为Android 2.3 r1,翻译来自"Haiya 胡蝶",再次感谢"Haiya 胡蝶" !期待你一起参与Android中文API的翻译,联系我over140@gmail.com。

 

声明

  欢迎转载,但请保留文章原始出处:)

    博客园:http://www.cnblogs.com/

    Android中文翻译组:http://goo.gl/6vJQl

 

正文

  一、结构

public class GestureDetector extends Object

        

java.lang.Object

android.view.GestureDetector

 

  二、概述

  通过系统提供的MotionEvent来监测各种手势和(触摸)事件。当一个指定的手势事件发生时,GestureDetector.OnGestureListener回调函数将通告用户。这个类仅仅处理由触摸引发的MotionEvent(不能处理由轨迹球引发的事件)。要使用这个类需执行以下操作:

  * 为你的View建立一个GestureDetector实例。

  * ViewonTouchEvent(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         

  当只需要监听部分手势时,用于扩展的便捷类

 

  四、构造函数

public GestureDetector (GestureDetector.OnGestureListener listener, Handler handler)

通过提供的监听器来创建一个GestureDetector,这个构造函数只能用于非UI线程(因为它允许指定一个handler)。

参数

         listener 用于触发所有回调函数的监听器,不能为空

handler 需要使用到的handler

异常

         NullPointerException   Listener或者handler为空时

 

public GestureDetector (GestureDetector.OnGestureListener listener)

通过提供的监听器来创建一个GestureDetector。你只能于UI线程里使用这个构造函数(这是通常的情况)

参数

         listener    用于触发所有回调函数的监听器,不能为空

异常

    NullPointerException   如果Listener为空

参见

    Handler()

 

public GestureDetector (Context context, GestureDetector.OnGestureListener listener)

通过提供的监听器来创建一个GestureDetector。(通常情况下)你只能于UI线程里使用这个构造函数

         参数

                   context    应用程序上下文

listener    用于触发所有回调函数的监听器,不能为空

                   异常

           NullPointerException   如果Listener为空

参见

        Handler()

 

public GestureDetector (Context context, GestureDetector.OnGestureListener listener, Handler handler)

通过提供的监听器来创建一个GestureDetector. (通常情况下)你只能于UI线程里使用这个构造函数

         参数

context    应用程序上下文

listener    用于触发所有回调函数的监听器,不能为空

handler    需要使用到的handler

                   异常

           NullPointerException       如果Listener为空

参见

       Handler()

 

public GestureDetector (Context context, GestureDetector.OnGestureListener listener, Handler handler, boolean ignoreMultitouch)

通过提供的监听器来创建一个GestureDetector. (通常情况下)你只能于UI线程里使用这个构造函数

         参数

context    应用程序上下文

listener    用于触发所有回调函数的监听器,不能为空

handler    需要使用到的handler

ignoreMultitouch     是否忽视多点触控(译者注:仅适用于2.2以上的android版本,如果没设置这个参数(即使用的是上一个构造函数),则会忽视多点触控

,由于网上都没有在GestureDetector传入handler的例子,所以我也不明白这里的handler的具体用意。如果有需要深入理解的朋友,请参照GestureDetector的源码

                  异常

           NullPointerException       如果Listener为空

参见

       Handler()

 

  五、公共方法

public boolean isLongpressEnabled ()

返回值

如果允许长按事件,则返回true,否则为false

 

public boolean onTouchEvent (MotionEvent ev)

分析指定的动作事件,如何满足条件,就触发在GestureDetector.OnGestureListener中提供的回调函数

         参数

                   ev     当前的触摸事件(译者注:如MotionEvent_DOWN, MotionEvent_UP

         返回值

                   如果GestureDetector.OnGestureListener消耗了这个事件,则返回true,否则返回false

 

public void setIsLongpressEnabled (boolean isLongpressEnabled)

设置是否启用长按。如果启用长按,当用户按下并保持按下状态时,将收到一个长按事件,同时不再接收其它事件;如果禁用长按,当用户按下并保持按下状态然后再移动手指时,将会接收到scroll事件。长按默认为启用。

         参数

                   isLongpressEnabled                  是否启用接收长按事件

 

public void setOnDoubleTapListener (GestureDetector.OnDoubleTapListener onDoubleTapListener)

设置双击及其相关手势的监听器

         参数

                   onDoubleTapListener       触发所有回调函数的监听器,或者设为null以停止监听双击的手势

 

  六、补充

 

posted @ 2011-01-17 06:50  农民伯伯  阅读(10064)  评论(0编辑  收藏  举报