Android手势识别

1.Android中手势交互的执行顺序

  • 1.手指触碰屏幕时,触发MotionEvent事件!
  • 2.该事件被OnTouchListener监听,可在它的onTouch()方法中获得该MotionEvent对象!
  • 3.通过GestureDetector转发MotionEvent对象给OnGestureListener
  • 4.我们可以通过OnGestureListener获得该对象,然后获取相关信息,以及做相关处理!

我们来看下上述的三个类都是干嘛的: 
MotionEvent: 这个类用于封装手势、触摸笔、轨迹球等等的动作事件。 
其内部封装了两个重要的属性X和Y,这两个属性分别用于记录横轴和纵轴的坐标。 
GestureDetector: 识别各种手势。 
OnGestureListener: 这是一个手势交互的监听接口,其中提供了多个抽象方法, 
并根据GestureDetector的手势识别结果调用相对应的方法。

2.GestureListener详解:

从1中我们知道了监听手势的关键是:GestureListener 
他给我们提供了下述的回调方法:

  • 按下(onDown): 刚刚手指接触到触摸屏的那一刹那,就是触的那一下。
  • 抛掷(onFling): 手指在触摸屏上迅速移动,并松开的动作。
  • 长按(onLongPress): 手指按在持续一段时间,并且没有松开。
  • 滚动(onScroll): 手指在触摸屏上滑动。
  • 按住(onShowPress): 手指按在触摸屏上,它的时间范围在按下起效,在长按之前。
  • 抬起(onSingleTapUp):手指离开触摸屏的那一刹那。

知道了GestureListener的相关方法后,实现手势检测也很简单,步骤如下:

  • Step 1: 创建GestureDetector对象,创建时需实现GestureListener传入
  • Step 2: 将Activity或者特定组件上的TouchEvent的事件交给GestureDetector处理即可! 
    我们写个简单的代码来验证这个流程,即重写对应的方法:

我们实现OnGestureListener需要实现所有的手势,可能我针对的仅仅是滑动,但是你还是要去重载, 
这显得很逗逼,是吧,官方肯定会给出解决方法滴,官方另外给我们提供了一个SimpleOnGestureListener类 
只需把上述的OnGestureListener替换成SimpleOnGestureListener即可!

*区别:必须实现左右手势与自己选择。自动生成所有的,另一个要自己写。

 

 

publicboolean onScroll(MotionEvente1, MotionEvent e2, float distanceX,float distanceY) {
   

              *MotionEvent e1 : 触发滚动时第一次按下的事件

         * MotionEvent e2 : 触发当前滚动的移动事件

         * float distanceX : 自从上一次调用 该方法 到这一次 x 轴滚动的距离,

         *注意不是 e1 到 e2 的距离, e1 到 e2 的距离是从开始滚动到现在的滚动距离

         * float distanceY : 自从上一次回调该方法到这一次 y 轴滚动的距离

         * 返回值 : 如果事件成功触发, 执行完了方法中的操作, 返回true,否则返回 false

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值