返回介绍

GestureDetector

发布于 2025-03-09 17:00:23 字数 8241 浏览 0 评论 0 收藏 0

GestureDetector

版本:Android 2.3 r1

结构

继承关系

public class GestureDetector extends Object

java.lang.Object

android.view.GestureDetector

类概述

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

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

l 在 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

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

构造函数

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 使用

GestureDetector 和 SimpleOnGestureListener 的使用教程

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文