Android - GestureDetector.onGestureLister

原创 2015年11月20日 16:32:14

GestureDetector.onGestureLister

该监听器用来监听手势变化。通过实现它的接口来监听不同的手势变化。如果你只是想监听一个比较简单地子集可以继承GestureDetector.SimpleOnGestureLister.

公共方法

// 用户轻触屏幕,有一个MotionEvent ACTION_DOWN触发
public boolean onDown(MotionEnvent event) {
    return true;
}

// 用户按下屏幕,快速移动后松开,由1个MotionEvent ACTION_DOWN,多个ACTION_MOVE,1个ACTION_UP触发
// e1: 用户按下事件
// e2: 当前移动事件
// velocityX: 横向每秒移动速度
// velobityY: 纵向每秒移动速度
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
    return true;
}

// 用户长按屏幕,有多个MotionEvent ACTION_DOWN触发
public void onLongPress(MotionEvent e) {

}

// 用户按下屏幕并拖动,有1个ACTION_DOWN,多个ACTION_MOVE触发
// distanceX: X轴方向移动距离
// distancdY: Y轴方向移动距离
public void onSroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {

}

// 用户轻按屏幕,尚未松开或正在拖动,有1个MotionEvent ACTION_DOWN触发
public void onShowPress(MotionEvent e) {

}

// 用户轻按后松开,有1个ACTION_UP触发
public boolan onSingleTapUp(MotionEvent e) {
    return ture;
}

如何识别用户手势操作(事件来源)

public class MyGesture extends Activity implements OnTouchListener, onGestureListener{
    private GesureDetector mGestureDetector;
    public MyGesture() {
        mGestureDetector = new GestureDetectore(this);
    }

    public void onCreate(Bundle savedInstanceState) {
        ...
        TextView tv = (TextView) findViewById(R.id.tv);
        tv.setOnTouchListener(this);
        tv.setFocusable(true);
        tv.setClickble(true);
        tv.setLongClickable(true);
        // 设置false后onLongPress()事件不生效
        mGestureDetector.setIsLongPressEnable(true);
    }

    // 在onTouch()方法中,调用GestureDetector的onTouch()方法,将捕捉到的MotionEvent交给GestureDetector来分析是否有合适的callback函数来处理用户的手势
    public boolean onTouch(View v, MotionEvent event){
        return mGestureDetector.onTouchEvent(event);
    }
    ...
    ...
}

用户操作事件

  • 普通点击 onDown() -> onSingleTapUp()


  • 长按不放松 onDown() -> onShowPress() -> onLongPress()


  • 快速滑动 onDown() -> onScroll() -> onScroll() -> .... -> onFling()


  • 当触发onLongPress()后无法触发onScroll()
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Android手势识别GestureDetector分析

  • 2015年10月14日 15:39
  • 2.01MB
  • 下载

Android手势识别之GestureDetector

1、GestureDetector(手势识别器) (1)手势交互过程原理:            A.触屏一刹那,触发 MotionEvent事件;            B.上述事件被 OnTouc...

Android-Touch-GestureDetector

相关类简介 GestureDetector 内部监听 OnGestureListener/OnDoubleTapListener/OnContextClickListener 内部监听默认实现...
  • ZWName
  • ZWName
  • 2017年02月09日 11:07
  • 56

(转) Android GestureDetector手势识别类

为了加强鼠标响应事件,Android提供了GestureDetector手势识别类。通过GestureDetector.OnGestureListener来获取当前被触发的操作手势(Single Ta...

android关于Scroller与GestureDetector实现滚动的效果

Scroller类是实现View能够滚动的一个帮助类。效果如下所示:                             要实现以上的效果还要一个类就是GestureDetector类,这个类...

Android图片处理总结三:(图片手势控制)GestureDetector解析

要触发一个控件的触摸事件,可以有几种方法: 方法一 1. 在Activity、Fragment、Dialog等组件中实现View.OnTouchListener接口; 2. 需要触发点击事件的控...

Android的手势识别GestureDetector

对于触摸屏,其原生的消息无非按下、抬起、移动这几种,我们只需要简单重载onTouch或者设置触摸侦听器setOnTouchListener即可进行处理。不过,为了提高我们的APP的用户体验,有时候我们...
  • GaoTech
  • GaoTech
  • 2012年09月13日 14:40
  • 306

Android中GestureDetector类及其用法(转自网上的笔记)

当用户触摸屏幕的时候,会产生许多手势,例如down,up,scroll,filing等等。 一般情况下,我们知道View类有个View.OnTouchListener内部接口,通过重写他的onTou...

Android:GestureDetector手势识别类

为了加强鼠标响应事件,Android提供了GestureDetector手势识别类。通过GestureDetector.OnGestureListener来获取当前被触发的操作手势(Single ...

Android手势使用之 GestureDetector

Android中对触摸事件的处理使用的是onTouchEvent,如果你对这块只是还不是很熟练,请查看我的另一篇文章: android触摸事件处理逻辑 如果要在处理监听里面自己去写手势处理不是不可以...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android - GestureDetector.onGestureLister
举报原因:
原因补充:

(最多只允许输入30个字)