Android 中文API (91) —— GestureDetector

简介:

一、结构

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以停止监听双击的手势

六、补充

      文章链接

GestureDetector手势识别类 - 进阶篇

android GestureDetector使用

GestureDetectorSimpleOnGestureListener的使用教程

本文转自博客园农民伯伯的博客,原文链接:Android 中文API (91) —— GestureDetector,如需转载请自行联系原博主。



目录
相关文章
|
8月前
|
定位技术 API 开发工具
Android 按照步骤接入百度地图API,定位显示不了解决办法
Android 按照步骤接入百度地图API,定位显示不了解决办法
229 0
|
7月前
|
API Android开发
mPaaS(移动跨平台框架)目前已经支持了Android API级别21
mPaaS(移动跨平台框架)目前已经支持了Android API级别21
107 2
|
8月前
|
API 数据库 Android开发
Android SQLite数据库中基础的增删改查操作以及API的详解
Android SQLite数据库中基础的增删改查操作以及API的详解
66 0
|
10月前
|
API Android开发
Android Activity Result API
Android Activity Result API
100 0
|
11月前
|
Java API Android开发
Sui为根应用提供Java APIs,滴API。主要提供直接使用Android APIs的能力(几乎以Java作为root的身份
Sui为根应用提供Java APIs,滴API。主要提供直接使用Android APIs的能力(几乎以Java作为root的身份,在root下启动app自己的AIDL风格的Java服务。这将使root应用程序开发变得更加容易。
142 0
|
12月前
|
缓存 Java API
Android音频API
MediaRecorder与MediaPlayer并不能算完整意义的音频API,它们只是系统音频API的封装,除了采集/播放,他们集成了编码/解码、复用/解复用等能力。它们在最底层还是调用了AudioRecorder、AudioTrack。下面主要介绍它们的几个主要的配置项。
361 0
|
Ubuntu Java Shell
Android使用FFmpeg的API库
Android使用FFmpeg的API库
293 1
|
定位技术 API Android开发
Android Studio进行APP设计调用百度地图API接口隐藏百度地图的logo方法
Android Studio进行APP设计调用百度地图API接口隐藏百度地图的logo方法
315 0
Android Studio进行APP设计调用百度地图API接口隐藏百度地图的logo方法
|
存储 缓存 Java
Android 百度语音合成 (含离线、在线、API合成方式,详细步骤+源码)
Android 百度语音合成 (含离线、在线、API合成方式,详细步骤+源码)
501 0
Android 百度语音合成 (含离线、在线、API合成方式,详细步骤+源码)
|
XML API Android开发
Android 垃圾分类APP(一)申请API、搭建项目、访问接口获取数据
Android 垃圾分类APP(一)申请API、搭建项目、访问接口获取数据
384 0
Android 垃圾分类APP(一)申请API、搭建项目、访问接口获取数据