1.引言

在操作应用的时候,会有很多不同的手势操作,如按下、单击、双击、长按等手势,我们可以在这些手势事件中添加相应的业务逻辑,那么如何检测不同的手势操作就比较重要了,本文将带大家了解如何使用GestureDetector进行手势检测。

2.进行手势检测

2.1 创建GestureDetector

进行手势检测之前,需要先新建GestureDetector对象,示例如下:

gestureDetector = new GestureDetector(context, new GestureDetector.OnGestureListener() {@Overridepublic boolean onDown(MotionEvent e) {log("onDown");return true;}@Overridepublic void onShowPress(MotionEvent e) {log("onShowPress");}@Overridepublic boolean onSingleTapUp(MotionEvent e) {log("onSingleTapUp");return true;}@Overridepublic boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {log("onScroll");return true;}@Overridepublic void onLongPress(MotionEvent e) {log("onLongPress");}@Overridepublic boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {log("onFling");return true;}
});

2.2 与onTouchEvent结合使用

示例中重写了Activity的onTouchEvent(MotionEvent event)方法,并在其内部使用GestureDetector处理触摸事件,示例如下:

@Override
public boolean onTouchEvent(MotionEvent event) {boolean b = gestureDetector.onTouchEvent(event);if (b) {return true;}return super.onTouchEvent(event);
}

2.3 GestureDetector.OnGestureListener

实现GestureDetector.OnGestureListener内的方法,在其中可以检测到多种手势,如onDown(MotionEvent e)按下、onShowPress(MotionEvent e)已经执行按下,还没有移动或抬起、onSingleTapUp(MotionEvent e)单击、onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY)滚动、onLongPress(MotionEvent e)长按、onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY)。

2.4 检测双击手势

双击手势也是一种常见的手势事件,使用GestureDetector检测双击手势需要调用setOnDoubleTapListener()方法设置GestureDetector.OnDoubleTapListener(),并实现其中的方法,其中的onDoubleTap(MotionEvent e)表示双击事件,示例如下:

gestureDetector.setOnDoubleTapListener(new GestureDetector.OnDoubleTapListener() {@Overridepublic boolean onSingleTapConfirmed(MotionEvent e) {log("onSingleTapConfirmed");return true;}@Overridepublic boolean onDoubleTap(MotionEvent e) {log("onDoubleTap");return true;}@Overridepublic boolean onDoubleTapEvent(MotionEvent e) {log("onDoubleTapEvent");return true;}
});
}

2.5 GestureDetector.SimpleOnGestureListener

如果不想实现GestureDetector.OnGestureListener 内的多个方法,那么可以创建类并继承GestureDetector.SimpleOnGestureListener,示例如下:

class SimpleGestureListener extends GestureDetector.SimpleOnGestureListener{@Overridepublic boolean onDown(MotionEvent e) {return true;}
}

在创建GestureDetector对象的时候,传入扩展后的类对象即可,示例如下:

gestureDetector = new GestureDetector(context, new SimpleGestureListener());

3.总结

使用GestureDetector能方便地进行手势检测,灵活合理地使用手势检测,在其中处理应用的业务逻辑,能让体验更加的友好。

Android使用GestureDetector进行手势检测相关推荐

  1. android view gesturedetector,如何在Android中利用 GestureDetector进行手势检测

    如何在Android中利用 GestureDetector进行手势检测 发布时间:2020-11-26 16:15:21 来源:亿速云 阅读:92 作者:Leah 今天就跟大家聊聊有关如何在Andro ...

  2. Android使用GestureDetector实现手势滑动效果

    直接看实例: package com.example.gesturedetector;import android.os.Bundle; import android.app.Activity; im ...

  3. 关于Android手势检测GestureDetector的应用笔记

    关于Android手势检测 代码参照Android 手势检测 OnDown(MotionEvent e) 用户按下屏幕就会触发: onFling(MotionEvent e1, MotionEvent ...

  4. Android 手势检测实战 打造支持缩放平移的图片预览效果(下)

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/39480503,本文出自:[张鸿洋的博客] 上一篇已经带大家实现了自由的放大缩小图 ...

  5. Android手势检测简介

    本文参考:启舰博客 一,简介 Android中的手势检测功能主要在GestureDetector这个类当中,所以主要是对GestureDetector这个类的说明. GestureDetector类对 ...

  6. (4.1.40.5)Android手势检测GestureDecetor详解

    手势检测还有一个 ScaleGestureDetector 也是为手势检测服务的,限于篇幅本文未讲述 一示例 二GestureDetector 手势检测 三GestureDetectorListene ...

  7. android 手势检测(左右滑动、上下滑动)

    开发十年,就只剩下这套Java开发体系了 >>>    GestureDetector类可以让我们快速的处理手势事件,如点击,滑动等.  使用GestureDetector分三步:  ...

  8. Android之GestureDetector-简单手势操作及通过手势缩放图片,我离职后面试收割小米等大厂offer

    Android提供了手势检测,并为其提供了相应的监听器,需要用到的类是GestureDetector,其实例代表了一个手势检测器,创建GestureDetector时需要传入一个GestureDete ...

  9. Android 中 View 的手势事件处理

    View 作为Android中最直接的和用户进行交互的单位,对于 View 的事件处理重要程度自然不言而喻,View 的事件处理直接影响到用户体验,下面我们来看一下对 View 的触摸事件的处理: 首 ...

最新文章

  1. jmeter更改java内存,jmeter内存溢出解决方法
  2. 有没有测试人心里的软件,心理测评,认识自己的有效工具:(二)你做的可能是假的心理测试...
  3. java中的Queue队列的用法
  4. 为什么先编码再解码? 即先降采样,然后上采样
  5. 【Spring Boot】28.开发热部署
  6. python基本数据类型——整型,浮点型,复数,字符串
  7. 【译】采用微前端架构
  8. java文件复制中文_java中如何复制文件,文件里面包含中文?java中如何把文件在控制台上显示,文件中包含中文。...
  9. Python编写远程控制工具
  10. 解决虚拟机win7安装VMtool失败
  11. 2022年危险化学品经营单位安全管理人员考试练习题及模拟考试
  12. 联通混改BATJ悉数入局,拿出数百亿的百度们有什么阳谋?
  13. Mac下的winscp替代者 FileZilla
  14. UG\NX二次开发 获取UG窗口句柄。实现操作UG窗口最小化、最大化、关闭功能
  15. 显示器支架什么品牌好?
  16. Ubuntu Snap商店代理设置方法
  17. matlab 多子图共x轴
  18. 笔记本无线连接打印机
  19. 游戏海报——快手2019校招真题——笔试编程C/C++
  20. 计算机微机原理与接口技术课程设计课题,微机原理与接口技术课程设计报告

热门文章

  1. 树莓派与双色Led模块的那些事儿
  2. 区块链钱包知识技术开发应用解决方案
  3. mac os系统详解
  4. 网文作者御用写作软件| Effie:网文签约到底难不难?
  5. 通过Python的fitz库提取pdf中的图片
  6. nodemon 安装
  7. 搭建自己的电影网站 3 (使用cpolar发布本地maccms10网站)
  8. rdesktop使用参数
  9. 插座学院L1L2L3
  10. 百度经验怎么赚钱?教你怎么发布文章