触摸事件与手势监听--Android GestureDetector详解

本文详细介绍了Android中的GestureDetector,包括事件监听方法、GestureDetector类的使用、OnGestureListener和OnDoubleTapListener接口,以及SimpleOnGestureListener类。通过GestureDetector,开发者可以便捷地实现对触摸事件和手势的监听与处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

  • 事件监听的方法
  • GestureDetector类
  • GestureDetector使用方法
  • GesturetDetector.OnGestureListener 接口
  • GesttureDetector.OnDoubleTapListener 接口
  • GesttureDetector.SimpleOnGestureListener 类

1:事件监听的方法

在android应用层上主要有两个层面的触摸事件监听,一个是Activity层,另一个是View层。方法主要有三种:
第一是Activity中重写父类中的public boolean onTouchEvent(MotionEvent event)方法;

@Override
    public boolean onTouchEvent(MotionEvent event) {
        return super.onTouchEvent(event);
    }

第二个是重写View类中的GestDetector.OnGestureListener 接口中定义的boolean onTouch(View v, MotionEvent event);

@Override
    public boolean onTouch(View v, MotionEvent event) {
        return false;
    }

第三个是利用GestureDetector.onTouchEvent(event)在View.onTouch方法中来接管事件处理

@Override
    public boolean onTouch(View v, MotionEvent event) {
        return mGestureDetector.onTouchEvent(event);
    }

当view上的事件被分发到view上时触发onTouch方法的回调, 如果这个方法返回false时,表示事件处理失败,该事件就会被传递给相应的Activity中的onTouchEvent方法来处理。
如果该方法返回true时,表示该事件已经被onTouch函数处理完,不会上传到activity中处理。


2:GestureDector类

GestureDector类需要注意以下内容:

  • OnGestureListener接口
  • OnDoubleTapListener双击接口
  • SimpleOnGestureListener 类(实现了类内的三个接口)
  • onTouchEvent()方法
  • setOnDoubleTapListener()双击监听

当屏幕上发生特定的触摸事件,就会去回调GestureDector.OnGestureListener和GestureDetector.OnDoubleTapListener接口中相应的回调函数来监测各样的手势和事件,并且通知用户。但是这些触发函数都没有具体的实现,我们必须实现这些接口,并重写这些方法的具体实现。
GestureDetector类中已经为我们定义了一个静态内部类SimpleOnGestureListener,它实现了OnGestureListener,OnDoubleTapListener,OnContextClickListener接口,定义为

 public static class SimpleOnGestureListener implements OnGestureListener, OnDoubleTapListener,
            OnContextClickListener 

SimpleOnGestureListener类内重写接口中的所有方法,但是都是空实现,返回的布尔值都是false。主要作用是方便我们继承这个类有选择的复写回调方法,而不是实现接口去重写所有的方法。
onTouchEvent()方法用来分析传入的事件,如果匹配的话就去触发OnGestureListener中相应的回调方法。
如果要监听双击事件必须调用GestureDector.setOnDoubleTapListener()


3:GestureDetector使用方法

第一步:实现OnGestureListener接口中的方法(可以使用匿名内部类或实现了接口的类实例)
内部类形式

class MyGestureListener implements GestureDetector.OnGestureListener {

        @Override
        public boolean onDown(MotionEvent e) {
            return false;
        }

        @Override
        public void onShowPress(MotionEvent e) {

        }

        @Override
        public boolean onSingleTapUp(MotionEvent e) {
            return false;
        }

        @Override
        public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
            return 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值