Android 手势识别GestureDetector
接口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相关推荐
- Android手势识别GestureDetector详解
一.概述 当用户触摸屏幕的时候,会产生许多手势,例如down,up,scroll,filing等等. 一般情况下,我们知道View类有个View.OnTouchListener内部接口,通过重写他的o ...
- 【Android 内存优化】自定义组件长图组件 ( 长图滚动区域解码 | 手势识别 GestureDetector | 滑动计算类 Scroller | 代码示例 )
文章目录 一.GestureDetector 创建与设置 二.GestureDetector 触摸事件传递 三.触摸滑动操作 四.惯性滑动操作 五.长图滑动组件代码示例 六.运行效果 七.源码及资源下 ...
- android手势滑动页面,Android 手势识别 (左右滑动)实现 页面 切换
要实现 页面左右滑动的效果 就一定要由手势识别器, 就是这个对象 GestureDetector. 用法其实很简单,这里 写一下 方便以后用到的时候好找. 步骤就是 这样子 123.. 1. 初始化 ...
- android 手势识别 (缩放 单指滑动 多指滑动)
Android P 手势识别 1.前提介绍: 2.单指相关 2.双指缩放 3.多指滑动. 4.总体识别代码 1.前提介绍: 关于Android 手势识别就是当前view 根据用户的不同touch行为, ...
- Android手势识别——上下左右滑动、屏幕上下左右中区域处理
手势识别GestureDetector 关于手势识别是Android为了方便开发人员处理屏幕上的触摸.拖动.单双击.滑动等提供的一组接口.用这个我们可以很方便的在屏幕上做出想要的效果,比如滑动翻页.触 ...
- Android 手势识别
手势识别 原理:Android手势识别其实和我们平常对触摸事件的处理是一样的,都是对MotionEvent事件进行计算处理. Android为我们提供了两个基本的手势识别. GestureDetect ...
- Android使用GestureDetector实现手势滑动效果
直接看实例: package com.example.gesturedetector;import android.os.Bundle; import android.app.Activity; im ...
- android 手势类的封装,Android手势识别简单封装类
今天在做一个项目时用到了简单的手势功能(向左,向右滑切屏),于是简单地封装了下 import android.content.Context; import android.util.DisplayM ...
- android手势识别国内外研究现状,基于Android平台的视觉手势识别研究
摘要: 本文研究基于Android平台的视觉手势检测.手势分割和识别技术,实现了在Android平台上对规定的六种静态手势的识别,为Android平台的人机交互应用提供了新的技术手段. 首先,本文采用 ...
最新文章
- android 代码打开权限,android开发权限询问的示例代码
- python编程课程价格-无锡Python程序开发课程
- 图解Oracle常用SQL语句
- 关于VC网络编程中用 char 发送结构体的说明
- 前端必知必会HTTP请求系列(二)简单一点的HTTP协议
- wsld2java axis_Weblogic+axis2安装
- Sobel算子及cvSobe
- AcWing 789. 数的范围 (整数二分)
- spring配置文件各个属性详解
- iphone模拟器_应用日报 | Xcode 现身 5.4 英寸 iPhone 模拟器,和平精英上线特斯拉皮肤...
- 解决ssh登录过慢问题
- HDOJ1181变形课 深搜回溯
- bzoj千题计划254:bzoj2286: [Sdoi2011]消耗战
- mysql忘记密码如何重置密码
- HHL算法的QISKit实现
- Java读取Excel表格公式对应的值
- win10子系统基本备份
- 终于搞清楚了:SOLID设计原则出处
- SocialFi 何以成就 Web3 去中心化社交未来
- mysql引擎与优化
热门文章
- opencv 二值化 matlab,opencv-python图像二值化函数cv2.threshold函数详解及参数cv2.THRESH...
- 计算机软件英语名称,计算机设备名称英语词汇(6)
- 【转载】浅入 dancing links x(舞蹈链算法)
- 静态变量php跨页面,PHP的静态变量 - jone的个人页面 - OSCHINA - 中文开源技术交流社区...
- 梦幻西游手游三界奇缘答题 文字解答
- 私有云的优缺点_简单易懂:公有云和私有云的区别,优缺点
- 你学过的每样东西,都会在你一生中的某个时刻派上用场(转)
- spring boot 启动报Field userMapper in xxx.service.UserService required a bean of type 'wen.tian
- SSM框架示例(适合新手)
- Koa2调用java接口_入门koa2接口开发