为了加强鼠标响应事件,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手势识别类相关推荐

  1. Android GestureDetector方法详解

    原帖地址:http://tonysun3544.iteye.com/blog/1787684 为了加强点击.拖动响应事件,Android提供了GestureDetector手势识别类.通过Gestur ...

  2. android 中手势GestureDetector 的使用

    2019独角兽企业重金招聘Python工程师标准>>> ##Android中手势的使用GestureDetector http://blog.csdn.net/harvic88092 ...

  3. android view显示隐藏动画效果,Android 根据手势顶部View自动展示与隐藏效果

    首先来看一下效果: 大体思路如下: 总体布局用了一个自定义的ViewGroup,里面包了两个View(top View,bottomView) 我在bottomView里放了ViewPager,里面又 ...

  4. android 滑动手势处理,Android实现手势滑动的方法

    Android实现手势滑动的方法 发布时间:2020-07-30 09:53:27 来源:亿速云 阅读:80 作者:小猪 这篇文章主要讲解了Android实现手势滑动的方法,内容清晰明了,对此有兴趣的 ...

  5. Android的手势操作识别

    转自:http://jcodecraeer.com/a/anzhuokaifa/androidkaifa/2012/1020/448.html Android的手势操作识别 时间:2012-10-20 ...

  6. Android 视频手势缩放与回弹动效实现(一)

    文章目录 Android 视频手势缩放与回弹动效实现(一) 1. 功能需求 2. 实现原理 2.1 如何检测手势缩放? 1. View.onTouchEvent关键代码 2. ScaleGesture ...

  7. android滑动手势侦测,Android滑动手势侦测方法介绍

    Android滑动手势在触摸屏电脑中是一个最为基本的操作.在这里我们会通过各种代码的解读来分析Android操作系统是如何侦测到不同的滑动手势. 在Android手机操作系统中支持各种滑动手势的操作. ...

  8. Android Tip : Android GestureDetector 手势识别 抬起 操作

    [Android Tip] [Android GestureDetector 手势识别 抬起 操作] 关于GestureDetector的用法,大家自行Google 这里只说一个小点:就是手势监听中缺 ...

  9. OpenCV学习笔记(五十四)——概述FaceRecognizer人脸识别类contrib

    在最新版的2.4.2中,文档的更新也是一大亮点,refrence manual扩充了200多页的内容,添加了contrib部分的文档.contrib就是指OpenCV中新添加的模块,但又不是很稳定,可 ...

最新文章

  1. excel两个表格数据对比_Excel表格怎么防止看错数据?阅读模式了解一下
  2. win10下安装linux mint,win10系统安装Mint Linux 18的详细步骤
  3. rowid会变化么_升级后的饿了么,将成为阿里引领数字化的先锋
  4. seer文献_文献解读 | 师兄带你读一篇免疫浸润3分文章!
  5. 代理模式——HeadFirst设计模式学习笔记
  6. Linux的常用指令
  7. overflow-x后覆盖滚动条
  8. 初始化Direct3D(2)
  9. 计算机网络——数据通信系统(三)
  10. 3.14 使用画笔工具给头发着色 [Ps教程]
  11. C语言中如何在不使用数组的情况下求方差?使用数组和使用for循环的区别。
  12. Flutter:实现iOS无证书打包ipa
  13. 使用MindStudio进行MindX SDK财务票据OCR识别开发
  14. 分布式架构中的八大谬误
  15. 修复win10 服务器失败怎么办,fatal error怎么解决win10 修复Win10系统问题
  16. 3D游戏建模新手入门到就业,高效学习的十二个步骤
  17. Mac一直要求输入密码怎么办?Mac一直弹输入密码窗口或提示存储钥匙串解决方法
  18. Nsca安装简单步骤
  19. 2019各大互联网公司年会盘点
  20. 详解微信小程序页面间传递信息的三种方式

热门文章

  1. javascript不依赖库开发windows应用程序
  2. Java小白从0开始:知识点(3)
  3. 配置samba服务实现Linux(CentOS7)与Windows之间的文件共享
  4. Python3 实现两个列表的值相减
  5. ArangoDB安装
  6. 用systemtap对sysbench IO测试结果的分析1
  7. 论文阅读:Your Local GAN: Designing Two Dimensional Local Attention Mechanisms for Generative Models
  8. 单相在线式不间断电源(B 题)--2020 年TI 杯大学生电子设计竞赛
  9. JAVA程序员面试宝典C收藏
  10. Node.js 通过https服务器利用js调用网络摄像头