Android手势识别基础介绍

本文详细介绍了Android手势识别的基础,包括MotionEvent的坐标方法、事件类型和ACTION_CANCEL,以及如何使用GestureDetector实现手势识别,包括OnGestureListener和OnDoubleTapListener接口的回调函数,为Android开发者提供了实用的指南。
摘要由CSDN通过智能技术生成

如今的 Android 手机已经离不开手指与屏幕的交互了,基本上只要在使用手机就避免不了手势的识别,相信各位学习 Android 开发的朋友们大都与手势交互打过交道,我的这篇博客就是使用 GestureDetector 实现手势识别。

1、MotionEvent

如今在国内,按键手机已经是少之又少了,至少我身边的人用的都是触屏的机器,这也就说明我们手机程序开发者开发的应用应该都是围绕着触控来识别操作。拿视屏播放器举例吧,无论是快进后退,还是调节音量,亮度都是根据触控的手势不同来处理得到不同的效果的。

当用户触摸屏幕的时候,就是三种动作:按下、移动、抬起,这样就可以产生各种各样的手势。

MotionEvent 也就是触摸事件,这个类封装了手势、触摸笔、轨迹球等动作事件,且内部封装用于记录横轴和纵轴坐标的属性 X 和 Y,通过方法可以从 MotionEvent 对象中获得触摸事件发生的坐标。

1、坐标方法

每个触摸事件都代表用户在屏幕上的一个动作,而每个动作必定有其发生的位置。在 MotionEvent 中就有一系列与标触摸事件发生位置相关的函数:

getX() 和 getY():由这两个函数获得的 x , y 值是相对的坐标值,相对于消费这个事件的视图的左上点的坐标。
getRawX() 和 getRawY():有这两个函数获得的 x , y 值是绝对坐标,是相对于屏幕的。

如图所示,相信大家都对各个获得坐标的方法的作用一目了然啦,这里说明一下,它们都是以像素为单位的。

2、事件类型

1、基本类型

MotionEvent 有个方法 getAction(),用它可以获得当前 MotionEvent 对象的事件类型。

switch(event.getAction()) {
   case MotionEvent.ACTION_DOWN:
      break;
   case MotionEvent.ACTION_MOVE:
      break;
   case MotionEvent.ACTION_UP:
    break;
}

事件类型就是指 MotionEvent 对象所代表的动作。比如说,当你的一个手指在屏幕上滑动一下时,系统会产生一系列的触摸事件对象,它们所代表的动作有所不同。这些事件的事件类型就分别为 ACTION_DOWN,ACTION_MOVE 和 ACTION_UP,分别对应着按下、移动、抬起三种动作。上述这个动作所产生的一系列事件,被称为一个事件流,它包括一个 ACTION_DOWN 事件,很多个 ACTION_MOVE 事件,和一个 ACTION_UP 事件。

2、ACTION_CANCEL

除了这三个类型外,还有很多不同的事件类型,比如 ACTION_CANCEL,它代表当前的手势被取消。要理解这个类型,就必须要了解 ViewGroup 分发事件的机制。

当 TouchEvent 发生时,首先 Activity 将 TouchEvent 传递给最顶层的 view,TouchEvent 最先到达最顶层 view 的 dispatchTouchEvent(),然后由 dispatchTouchEvent() 方法进行分发,如果 dispatchTouchEvent() 返回 true,则交给这个 view 的 onTouchEvent() 处理;如果返回 false,则交给这个 view 的 interceptTouchEvent() 方法来决定是否要拦截这个事件,如果返回 true,也就是拦截掉了,则交给它的 onTouchEvent() 来处理;如果返回 false ,那么就传递给子 view ,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值