Android GestureDetector手势识别类
为了加强鼠标响应事件,Android提供了GestureDetector手势识别类。通过GestureDetector.OnGestureListener来获取当前被触发的操作手势(Single Tap Up、Show Press、Long Press、Scroll、Down、Fling),具体包括以下几种:
boolean onDoubleTap(MotionEvent e)
解释:双击的第二下Touch down时触发
boolean onDoubleTapEvent(MotionEvent e)
解释:双击的第二下Touch down和up都会触发,可用e.getAction()区分。
boolean onDown(MotionEvent e)
解释:Touch down时触发
boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY)
解释:Touch了滑动一点距离后,up时触发。
void onLongPress(MotionEvent e)
解释:Touch了不移动一直Touch down时触发
boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY)
解释:Touch了滑动时触发。
void onShowPress(MotionEvent e)
解释:Touch了还没有滑动时触发
(与onDown,onLongPress比较
onDown只要Touch down一定立刻触发。
而Touchdown后过一会没有滑动先触发onShowPress再是onLongPress。
所以Touchdown后一直不滑动,onDown->onShowPress->onLongPress这个顺序触发。
boolean onSingleTapConfirmed(MotionEvent e)
boolean onSingleTapUp(MotionEvent e)
解释:上面这两个函数都是在touch down后又没有滑动(onScroll),又没有长按(onLongPress),然后Touchup时触发。
点击一下非常快的(不滑动)Touchup:
onDown->onSingleTapUp->onSingleTapConfirmed
点击一下稍微慢点的(不滑动)Touchup:
onDown->onShowPress->onSingleTapUp->onSingleTapConfirmed
使用GestureDetector需要在View中重写onTouchEvent事件,例如:
GestureDetector mGesture = null; @Override public boolean onTouch(View v, MotionEvent event) { // TODO Auto-generated method stub return mGesture.onTouchEvent(event); }
详细的测试例子如下:
package com.jiubang.android.gesturetest; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.view.GestureDetector; import android.view.MotionEvent; import android.view.View; import android.view.GestureDetector.SimpleOnGestureListener; import android.view.View.OnTouchListener; import android.widget.Button; public class GestureActivity extends Activity implements OnTouchListener { private Button mButton = null; GestureDetector mGesture = null; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Log.i("TEST", "onCreate"); mButton = (Button)findViewById(R.id.button1); mButton.setOnTouchListener(this); mGesture = new GestureDetector(this, new GestureListener()); } @Override public boolean onTouch(View v, MotionEvent event) { // TODO Auto-generated method stub return mGesture.onTouchEvent(event); } class GestureListener extends SimpleOnGestureListener { @Override public boolean onDoubleTap(MotionEvent e) { // TODO Auto-generated method stub Log.i("TEST", "onDoubleTap"); return super.onDoubleTap(e); } @Override public boolean onDown(MotionEvent e) { // TODO Auto-generated method stub Log.i("TEST", "onDown"); return super.onDown(e); } @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { // TODO Auto-generated method stub Log.i("TEST", "onFling:velocityX = " + velocityX + " velocityY" + velocityY); return super.onFling(e1, e2, velocityX, velocityY); } @Override public void onLongPress(MotionEvent e) { // TODO Auto-generated method stub Log.i("TEST", "onLongPress"); super.onLongPress(e); } @Override public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { // TODO Auto-generated method stub Log.i("TEST", "onScroll:distanceX = " + distanceX + " distanceY = " + distanceY); return super.onScroll(e1, e2, distanceX, distanceY); } @Override public boolean onSingleTapUp(MotionEvent e) { // TODO Auto-generated method stub Log.i("TEST", "onSingleTapUp"); return super.onSingleTapUp(e); } } }
//以上部分内容选自网络
Android GestureDetector手势识别类相关推荐
- Android GestureDetector方法详解
原帖地址:http://tonysun3544.iteye.com/blog/1787684 为了加强点击.拖动响应事件,Android提供了GestureDetector手势识别类.通过Gestur ...
- android 中手势GestureDetector 的使用
2019独角兽企业重金招聘Python工程师标准>>> ##Android中手势的使用GestureDetector http://blog.csdn.net/harvic88092 ...
- android view显示隐藏动画效果,Android 根据手势顶部View自动展示与隐藏效果
首先来看一下效果: 大体思路如下: 总体布局用了一个自定义的ViewGroup,里面包了两个View(top View,bottomView) 我在bottomView里放了ViewPager,里面又 ...
- android 滑动手势处理,Android实现手势滑动的方法
Android实现手势滑动的方法 发布时间:2020-07-30 09:53:27 来源:亿速云 阅读:80 作者:小猪 这篇文章主要讲解了Android实现手势滑动的方法,内容清晰明了,对此有兴趣的 ...
- Android的手势操作识别
转自:http://jcodecraeer.com/a/anzhuokaifa/androidkaifa/2012/1020/448.html Android的手势操作识别 时间:2012-10-20 ...
- Android 视频手势缩放与回弹动效实现(一)
文章目录 Android 视频手势缩放与回弹动效实现(一) 1. 功能需求 2. 实现原理 2.1 如何检测手势缩放? 1. View.onTouchEvent关键代码 2. ScaleGesture ...
- android滑动手势侦测,Android滑动手势侦测方法介绍
Android滑动手势在触摸屏电脑中是一个最为基本的操作.在这里我们会通过各种代码的解读来分析Android操作系统是如何侦测到不同的滑动手势. 在Android手机操作系统中支持各种滑动手势的操作. ...
- Android Tip : Android GestureDetector 手势识别 抬起 操作
[Android Tip] [Android GestureDetector 手势识别 抬起 操作] 关于GestureDetector的用法,大家自行Google 这里只说一个小点:就是手势监听中缺 ...
- OpenCV学习笔记(五十四)——概述FaceRecognizer人脸识别类contrib
在最新版的2.4.2中,文档的更新也是一大亮点,refrence manual扩充了200多页的内容,添加了contrib部分的文档.contrib就是指OpenCV中新添加的模块,但又不是很稳定,可 ...
最新文章
- excel两个表格数据对比_Excel表格怎么防止看错数据?阅读模式了解一下
- win10下安装linux mint,win10系统安装Mint Linux 18的详细步骤
- rowid会变化么_升级后的饿了么,将成为阿里引领数字化的先锋
- seer文献_文献解读 | 师兄带你读一篇免疫浸润3分文章!
- 代理模式——HeadFirst设计模式学习笔记
- Linux的常用指令
- overflow-x后覆盖滚动条
- 初始化Direct3D(2)
- 计算机网络——数据通信系统(三)
- 3.14 使用画笔工具给头发着色 [Ps教程]
- C语言中如何在不使用数组的情况下求方差?使用数组和使用for循环的区别。
- Flutter:实现iOS无证书打包ipa
- 使用MindStudio进行MindX SDK财务票据OCR识别开发
- 分布式架构中的八大谬误
- 修复win10 服务器失败怎么办,fatal error怎么解决win10 修复Win10系统问题
- 3D游戏建模新手入门到就业,高效学习的十二个步骤
- Mac一直要求输入密码怎么办?Mac一直弹输入密码窗口或提示存储钥匙串解决方法
- Nsca安装简单步骤
- 2019各大互联网公司年会盘点
- 详解微信小程序页面间传递信息的三种方式
热门文章
- javascript不依赖库开发windows应用程序
- Java小白从0开始:知识点(3)
- 配置samba服务实现Linux(CentOS7)与Windows之间的文件共享
- Python3 实现两个列表的值相减
- ArangoDB安装
- 用systemtap对sysbench IO测试结果的分析1
- 论文阅读:Your Local GAN: Designing Two Dimensional Local Attention Mechanisms for Generative Models
- 单相在线式不间断电源(B 题)--2020 年TI 杯大学生电子设计竞赛
- JAVA程序员面试宝典C收藏
- Node.js 通过https服务器利用js调用网络摄像头