首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安卓开发- GestureDetector.OnGestureListener或GestureDetector.SimpleOnGestureListener

安卓开发- GestureDetector.OnGestureListener或GestureDetector.SimpleOnGestureListener
EN

Stack Overflow用户
提问于 2016-06-08 18:11:03
回答 2查看 1.4K关注 0票数 3

我正在编写简单的代码来检测所有的手势,如for、滚动等,并打算实现GestureDetector.OnGestureListener接口来覆盖它的方法,但我知道GestureDetector.SimpleOnGestureListener也可以这样做。据我所知,SimpleOnGestureListener是一个实现了OnGestureListenerOnDoubleTapListenerOnContextClickListener接口的类,如果我错了,请更正。

在Android开发者的网页上写着-

如果您只想处理一些手势,可以扩展GestureDetector.SimpleOnGestureListener,而不是实现GestureDetector.OnGestureListener接口。 GestureDetector.SimpleOnGestureListener为所有on<TouchEvent>方法提供了一个实现,方法是为所有方法返回false。因此,您只能覆盖您所关心的方法。例如,下面的代码段创建了一个扩展GestureDetector.SimpleOnGestureListener并覆盖onFling()onDown()的类。

我有几个问题要问

1)如果我们也可以实现GestureDetector.SimpleOnGestureListener和其他接口,那么为什么还要使用这些方法呢?

( 2) GestureDetector.SimpleOnGestureListener是否相同,无差异?它是用来简化编码的吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-06-08 18:45:14

来自GestureDetector.SimpleOnGestureListener的文档

当您只想侦听所有手势的子集时,要扩展的一个方便类。这实现了GestureDetector.OnGestureListener、GestureDetector.OnDoubleTapListener和GestureDetector.OnContextClickListener中的所有方法,但不执行任何操作,并对所有适用的方法返回false。

如果您只想实现其中的几个方法(不是所有方法),那么SimpleOnGestureListener有默认的实现,什么也不做。这样,代码就不会被多个无所事事的方法弄得乱七八糟。从功能的角度来看,使用SimpleOnGestureListener或直接实现接口并不重要。

源代码

代码语言:javascript
复制
public static class SimpleOnGestureListener implements OnGestureListener, OnDoubleTapListener,
        OnContextClickListener {

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

    public void onLongPress(MotionEvent e) {
    }

    public boolean onScroll(MotionEvent e1, MotionEvent e2,
            float distanceX, float distanceY) {
        return false;
    }

    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
            float velocityY) {
        return false;
    }

    public void onShowPress(MotionEvent e) {
    }

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

    public boolean onDoubleTap(MotionEvent e) {
        return false;
    }

    public boolean onDoubleTapEvent(MotionEvent e) {
        return false;
    }

    public boolean onSingleTapConfirmed(MotionEvent e) {
        return false;
    }

    public boolean onContextClick(MotionEvent e) {
        return false;
    }
}
票数 4
EN

Stack Overflow用户

发布于 2022-02-19 19:44:42

实施应类似于以下几点:

代码语言:javascript
复制
public class MyOnGestureListener implements
        GestureOverlayView.OnGestureListener,
        GestureDetector.OnDoubleTapListener,
        GestureDetector.OnContextClickListener {
    @Override public boolean onDoubleTap(MotionEvent event) {return false;}
    @Override public boolean onDoubleTapEvent(MotionEvent event) {return false;}
    @Override public boolean onSingleTapConfirmed(MotionEvent event) {return false;}
    @Override public boolean onContextClick(MotionEvent event) {return false;}
    @Override public void onGestureStarted(GestureOverlayView overlay, MotionEvent event) {}
    @Override public void onGesture(GestureOverlayView overlay, MotionEvent event) {}
    @Override public void onGestureEnded(GestureOverlayView overlay, MotionEvent event) {}
    @Override public void onGestureCancelled(GestureOverlayView overlay, MotionEvent event) {}
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37709883

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档