Android使用GestureDetector进行手势检测
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进行手势检测相关推荐
- android view gesturedetector,如何在Android中利用 GestureDetector进行手势检测
如何在Android中利用 GestureDetector进行手势检测 发布时间:2020-11-26 16:15:21 来源:亿速云 阅读:92 作者:Leah 今天就跟大家聊聊有关如何在Andro ...
- Android使用GestureDetector实现手势滑动效果
直接看实例: package com.example.gesturedetector;import android.os.Bundle; import android.app.Activity; im ...
- 关于Android手势检测GestureDetector的应用笔记
关于Android手势检测 代码参照Android 手势检测 OnDown(MotionEvent e) 用户按下屏幕就会触发: onFling(MotionEvent e1, MotionEvent ...
- Android 手势检测实战 打造支持缩放平移的图片预览效果(下)
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/39480503,本文出自:[张鸿洋的博客] 上一篇已经带大家实现了自由的放大缩小图 ...
- Android手势检测简介
本文参考:启舰博客 一,简介 Android中的手势检测功能主要在GestureDetector这个类当中,所以主要是对GestureDetector这个类的说明. GestureDetector类对 ...
- (4.1.40.5)Android手势检测GestureDecetor详解
手势检测还有一个 ScaleGestureDetector 也是为手势检测服务的,限于篇幅本文未讲述 一示例 二GestureDetector 手势检测 三GestureDetectorListene ...
- android 手势检测(左右滑动、上下滑动)
开发十年,就只剩下这套Java开发体系了 >>> GestureDetector类可以让我们快速的处理手势事件,如点击,滑动等. 使用GestureDetector分三步: ...
- Android之GestureDetector-简单手势操作及通过手势缩放图片,我离职后面试收割小米等大厂offer
Android提供了手势检测,并为其提供了相应的监听器,需要用到的类是GestureDetector,其实例代表了一个手势检测器,创建GestureDetector时需要传入一个GestureDete ...
- Android 中 View 的手势事件处理
View 作为Android中最直接的和用户进行交互的单位,对于 View 的事件处理重要程度自然不言而喻,View 的事件处理直接影响到用户体验,下面我们来看一下对 View 的触摸事件的处理: 首 ...
最新文章
- jmeter更改java内存,jmeter内存溢出解决方法
- 有没有测试人心里的软件,心理测评,认识自己的有效工具:(二)你做的可能是假的心理测试...
- java中的Queue队列的用法
- 为什么先编码再解码? 即先降采样,然后上采样
- 【Spring Boot】28.开发热部署
- python基本数据类型——整型,浮点型,复数,字符串
- 【译】采用微前端架构
- java文件复制中文_java中如何复制文件,文件里面包含中文?java中如何把文件在控制台上显示,文件中包含中文。...
- Python编写远程控制工具
- 解决虚拟机win7安装VMtool失败
- 2022年危险化学品经营单位安全管理人员考试练习题及模拟考试
- 联通混改BATJ悉数入局,拿出数百亿的百度们有什么阳谋?
- Mac下的winscp替代者 FileZilla
- UG\NX二次开发 获取UG窗口句柄。实现操作UG窗口最小化、最大化、关闭功能
- 显示器支架什么品牌好?
- Ubuntu Snap商店代理设置方法
- matlab 多子图共x轴
- 笔记本无线连接打印机
- 游戏海报——快手2019校招真题——笔试编程C/C++
- 计算机微机原理与接口技术课程设计课题,微机原理与接口技术课程设计报告