接口1:OnGestureListener

检测用户在屏幕的以下操作:按下瞬间、按压、长按、轻击、快速滑屏、拖动

接口2:OnDoubleTapListener

检测用户单击、双击屏幕

使用类:SimpleOnGestureListener

1. 作用

集成了两个接口的手势检测功能

2. 与上述两个接口的区别

  • OnGestureListener和OnDoubleTapListener接口里的函数都是强制必须重写的
  • 而SimpleOnGestureListener类的函数则可根据需要选择性复写,因为SimpleOnGestureListener类本身已经实现了这两个接口的所有函数,只是里面全是空的而已

使用示例:

import android.os.Bundle;
import android.util.Log;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.View;
import android.widget.TextView;import androidx.appcompat.app.AppCompatActivity;public class GesturedetectorActivity extends AppCompatActivity {TextView mTextView;GestureDetector mGestureDetector;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.gesture_detect_ly);// 步骤1:创建手势检测器实例 & 传入OnGestureListener接口(需要复写对应方法)mGestureDetector = new GestureDetector(this, new GestureDetector.SimpleOnGestureListener() {// OnGestureListener接口的函数// 1. 用户轻触触摸屏public boolean onDown(MotionEvent e) {Log.i("MyGesture1", "onDown");return false;}// 2. 用户轻触触摸屏,尚未松开或拖动// 与onDown()的区别:无松开 / 拖动// 即:当用户点击的时,onDown()就会执行,在按下的瞬间没有松开 / 拖动时onShowPress就会执行public void onShowPress(MotionEvent e) {Log.i("MyGesture", "onShowPress");}// 3. 用户长按触摸屏public void onLongPress(MotionEvent e) {Log.i("MyGesture", "onLongPress");}// 4. 用户轻击屏幕后抬起public boolean onSingleTapUp(MotionEvent e) {Log.i("MyGesture", "onSingleTapUp");return true;}// 5. 用户按下触摸屏 & 拖动public boolean onScroll(MotionEvent e1, MotionEvent e2,float distanceX, float distanceY) {Log.i("MyGesture", "onScroll:");return true;}// 6. 用户按下触摸屏、快速移动后松开// 参数:// e1:第1个ACTION_DOWN MotionEvent// e2:最后一个ACTION_MOVE MotionEvent// velocityX:X轴上的移动速度,像素/秒// velocityY:Y轴上的移动速度,像素/秒public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,float velocityY) {Log.i("MyGesture", "onFling");return true;}// OnDoubleTapListener的函数// 1. 单击事件// 关于OnDoubleTapListener.onSingleTapConfirmed()和 OnGestureListener.onSingleTapUp()的区别// onSingleTapConfirmed:再次点击(即双击),则不会执行// onSingleTapUp:手抬起就会执行public boolean onSingleTapConfirmed(MotionEvent e) {Log.i("MyGesture", "onSingleTapConfirmed");return false;}// 2. 双击事件public boolean onDoubleTap(MotionEvent e) {Log.i("MyGesture", "onDoubleTap");return false;}// 3. 双击间隔中发生的动作// 指触发onDoubleTap后,在双击之间发生的其它动作,包含down、up和move事件;public boolean onDoubleTapEvent(MotionEvent e) {Log.i("MyGesture", "onDoubleTapEvent");return false;}});// 步骤2:重写View的onTouch函数,将触屏事件交给GestureDetector处理,从而对用户手势作出响应mTextView = (TextView) findViewById(R.id.textView);mTextView.setOnTouchListener(new View.OnTouchListener() {@Overridepublic boolean onTouch(View v, MotionEvent event) {mGestureDetector.onTouchEvent(event);return true;}});}}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><TextViewandroid:id="@+id/textView"android:layout_width="match_parent"android:layout_height="match_parent"android:gravity="center"android:text="点击屏幕即可实验"android:textAppearance="?android:attr/textAppearanceLarge" /></LinearLayout>

项目地址:https://github.com/buder-cp/base_component_learn/blob/master/multiAdapt/someuitest/src/main/java/com/zhy/someuitest/GesturedetectorActivity.java

参考Android 手势识别应用:手把手教你学会 GestureDetector(含实例讲解) - 云+社区 - 腾讯云

Android 手势识别GestureDetector相关推荐

  1. Android手势识别GestureDetector详解

    一.概述 当用户触摸屏幕的时候,会产生许多手势,例如down,up,scroll,filing等等. 一般情况下,我们知道View类有个View.OnTouchListener内部接口,通过重写他的o ...

  2. 【Android 内存优化】自定义组件长图组件 ( 长图滚动区域解码 | 手势识别 GestureDetector | 滑动计算类 Scroller | 代码示例 )

    文章目录 一.GestureDetector 创建与设置 二.GestureDetector 触摸事件传递 三.触摸滑动操作 四.惯性滑动操作 五.长图滑动组件代码示例 六.运行效果 七.源码及资源下 ...

  3. android手势滑动页面,Android 手势识别 (左右滑动)实现 页面 切换

    要实现 页面左右滑动的效果  就一定要由手势识别器, 就是这个对象 GestureDetector. 用法其实很简单,这里 写一下 方便以后用到的时候好找. 步骤就是 这样子 123.. 1. 初始化 ...

  4. android 手势识别 (缩放 单指滑动 多指滑动)

    Android P 手势识别 1.前提介绍: 2.单指相关 2.双指缩放 3.多指滑动. 4.总体识别代码 1.前提介绍: 关于Android 手势识别就是当前view 根据用户的不同touch行为, ...

  5. Android手势识别——上下左右滑动、屏幕上下左右中区域处理

    手势识别GestureDetector 关于手势识别是Android为了方便开发人员处理屏幕上的触摸.拖动.单双击.滑动等提供的一组接口.用这个我们可以很方便的在屏幕上做出想要的效果,比如滑动翻页.触 ...

  6. Android 手势识别

    手势识别 原理:Android手势识别其实和我们平常对触摸事件的处理是一样的,都是对MotionEvent事件进行计算处理. Android为我们提供了两个基本的手势识别. GestureDetect ...

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

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

  8. android 手势类的封装,Android手势识别简单封装类

    今天在做一个项目时用到了简单的手势功能(向左,向右滑切屏),于是简单地封装了下 import android.content.Context; import android.util.DisplayM ...

  9. android手势识别国内外研究现状,基于Android平台的视觉手势识别研究

    摘要: 本文研究基于Android平台的视觉手势检测.手势分割和识别技术,实现了在Android平台上对规定的六种静态手势的识别,为Android平台的人机交互应用提供了新的技术手段. 首先,本文采用 ...

最新文章

  1. android 代码打开权限,android开发权限询问的示例代码
  2. python编程课程价格-无锡Python程序开发课程
  3. 图解Oracle常用SQL语句
  4. 关于VC网络编程中用 char 发送结构体的说明
  5. 前端必知必会HTTP请求系列(二)简单一点的HTTP协议
  6. wsld2java axis_Weblogic+axis2安装
  7. Sobel算子及cvSobe
  8. AcWing 789. 数的范围 (整数二分)
  9. spring配置文件各个属性详解
  10. iphone模拟器_应用日报 | Xcode 现身 5.4 英寸 iPhone 模拟器,和平精英上线特斯拉皮肤...
  11. 解决ssh登录过慢问题
  12. HDOJ1181变形课 深搜回溯
  13. bzoj千题计划254:bzoj2286: [Sdoi2011]消耗战
  14. mysql忘记密码如何重置密码
  15. HHL算法的QISKit实现
  16. Java读取Excel表格公式对应的值
  17. win10子系统基本备份
  18. 终于搞清楚了:SOLID设计原则出处
  19. SocialFi 何以成就 Web3 去中心化社交未来
  20. mysql引擎与优化

热门文章

  1. opencv 二值化 matlab,opencv-python图像二值化函数cv2.threshold函数详解及参数cv2.THRESH...
  2. 计算机软件英语名称,计算机设备名称英语词汇(6)
  3. 【转载】浅入 dancing links x(舞蹈链算法)
  4. 静态变量php跨页面,PHP的静态变量 - jone的个人页面 - OSCHINA - 中文开源技术交流社区...
  5. 梦幻西游手游三界奇缘答题 文字解答
  6. 私有云的优缺点_简单易懂:公有云和私有云的区别,优缺点
  7. 你学过的每样东西,都会在你一生中的某个时刻派上用场(转)
  8. spring boot 启动报Field userMapper in xxx.service.UserService required a bean of type 'wen.tian
  9. SSM框架示例(适合新手)
  10. Koa2调用java接口_入门koa2接口开发