关于Android手势检测GestureDetector的应用笔记

关于Android手势检测

代码参照Android 手势检测

  • OnDown(MotionEvent e)
    用户按下屏幕就会触发;
  • onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY)
    滑屏,用户按下触摸屏、快速移动后松开,由1个MotionEvent ACTION_DOWN, 多个ACTION_MOVE, 1个ACTION_UP触发
    参数: e1:第1个ACTION_DOWN MotionEvent e2:最后一个ACTION_MOVE MotionEvent velocityX:X轴上的移动速度,像素/秒 velocityY:Y轴上的移动速度,像素/秒。
  • onLongPress(MotionEvent e) ,长按触摸屏,超过一定时长,就会触发这个事件 触发顺序: onDown->onShowPress->onLongPress。
  • onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) ,在屏幕上拖动事件。无论是用手拖动view,或者是以抛的动作滚动,都会多次触发,这个方法 在ACTION_MOVE动作发生时就会触发 滑屏:手指触动屏幕后,稍微滑动后立即松开 onDown -> onScroll->onScroll->onScroll->……… -> onFling 拖动 onDown-> onShowPress -> onScroll -> onScroll -> onFiling 可见,无论是滑屏,还是拖动,影响的只是中间OnScroll触发的数量多少而已,最终都会触发onFling事件!
  • onShowPress(MotionEvent e) ,如果是按下的时间超过瞬间,而且在按下的时候没有松开或者是拖动的,那么onShowPress就会执行。这个时间是底层封装,设定的。开发者在应用层只需应用,不必知晓时间设定以及原理。
  • onSingleTapUp(MotionEvent e) ,顾名思义,一次单独的轻击抬起操作,也就是轻击一下屏幕,立刻抬起来,才会有这个触发,当然,如果除了Down以外还有其它操作,那就不再算是Single操作了,所以也就不会触发这个事件 触发顺序: 点击一下非常快的(不滑动)Touchup: onDown->onSingleTapUp->onSingleTapConfirmed 点击一下稍微慢点的(不滑动)Touchup: onDown->onShowPress->onSingleTapUp->onSingleTapConfirmed。

测试不同操作下触发的方法

GestureDetector集中方法诸多情形的调用。

快速单击

down——singleTapUp

2022-04-09 10:59:59.358 10213-10213/com.example.touchident I/MainActivity: onDown
2022-04-09 10:59:59.399 10213-10213/com.example.touchident I/MainActivity: onSingleTapUp

单击

down——showPress——singleTapUp

2022-04-09 11:01:15.973 10213-10213/com.example.touchident I/MainActivity: onDown
2022-04-09 11:01:16.073 10213-10213/com.example.touchident I/MainActivity: onShowPress
2022-04-09 11:01:16.195 10213-10213/com.example.touchident I/MainActivity: onSingleTapUp

长按

down——showPress——longPress

2022-04-09 11:02:42.515 10213-10213/com.example.touchident I/MainActivity: onDown
2022-04-09 11:02:42.616 10213-10213/com.example.touchident I/MainActivity: onShowPress
2022-04-09 11:02:42.916 10213-10213/com.example.touchident I/MainActivity: onLongPress

滑动

onDown——onScroll——onScroll——onFling

2022-04-09 11:07:05.442 10213-10213/com.example.touchident I/MainActivity: onDown
2022-04-09 11:07:05.473 10213-10213/com.example.touchident I/MainActivity: onScroll
2022-04-09 11:07:05.585 10213-10213/com.example.touchident I/MainActivity: onScroll
2022-04-09 11:07:05.586 10213-10213/com.example.touchident I/MainActivity: onFling

拖动

相比于快速的滑动,会触发长按事件。

2022-04-09 11:08:38.075 10213-10213/com.example.touchident I/MainActivity: onDown
2022-04-09 11:08:38.175 10213-10213/com.example.touchident I/MainActivity: onShowPress
2022-04-09 11:08:38.457 10213-10213/com.example.touchident I/MainActivity: onScroll
2022-04-09 11:08:39.923 10213-10213/com.example.touchident I/MainActivity: onScroll
2022-04-09 11:08:40.022 10213-10213/com.example.touchident I/MainActivity: onFling

无论滑动或者拖动,都会触发onDown、onScroll、onScroll、onFling

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值