前言

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

声明

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

    农民伯伯:http://over140.blog.51cto.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(android.content.Context, android.view.GestureDetector.OnGestureListener, android.os.Handler)

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

参数

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

handler需要使用到的handler

异常

NullPointerException Listener或者handler为空时

public GestureDetector (GestureDetector.OnGestureListener listener)

已弃用,替代方法:

GestureDetector(android.content.Context, android.view.GestureDetector.OnGestureListener)

通过提供的监听器来创建一个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以停止监听双击的手势

  六、补充

文章链接

GestureDetector手势识别类 - 进阶篇

android GestureDetector使用

GestureDetectorSimpleOnGestureListener的使用教程

更多相关文章

  1. Android(安卓)HAL分析报告
  2. Android(安卓)framework源码按键操作的完整流程
  3. Android开发学习笔记(十三) ProgressDialog学习
  4. android message机制
  5. Unable to instantiate activity ComponentInfo
  6. android NDK 开发
  7. 【Android(安卓)初学】2、View初步
  8. 使用 kotlin 开发 android 遇到的问题
  9. 箭头函数的基础使用

随机推荐

  1. Android Jetpack学习之Lifecycle
  2. Android 开发常用的工具类
  3. Android 常见权限列表
  4. Android ToolBar Menu按钮的动态隐藏
  5. 一插上USB外设以后直接跳到相应的…
  6. Android 为什么 dp2px 或 px2dp 公式需要
  7. 11Android/Sdk/ndk-bundle/toolchains/mi
  8. Android杀死进程方法
  9. Android 环境搭建安装ADT访问不到
  10. Android 优化工具