GeestureDetector上的OnUp事件

| 我的问题很简单,实现GestureListener时onUp事件在哪里? 我在姿势检测器上有很多事件,不能仅使用侦听器的onUp事件,因为其中一个事件是需要它的onSingleTapConfirmed。     
已邀请:
尝试使用
onFling()
。看起来像一个怪异的名字,但对我来说,它就像
onUp()
方法在逻辑上可以工作一样。或者尝试这种方法...
@Override
public boolean onTouchEvent(MotionEvent me) {

  Log.v(\"ADAM\", \"ontouch: \" + me.getAction());

  if(me.getAction() == 0){
    Log.v(\"ADAM\", \"Down\");
  }
  else if (me.getAction() == 1) {
    Log.v(\"ADAM\", \"Up\");
  }
  else if (me.getAction() == 2) {
    Log.v(\"ADAM\", \"Scroll\");
  }
  boolean detectedUp = event.getAction() == MotionEvent.ACTION_UP;
  if (!mGestureDetector.onTouchEvent(event) && detectedUp) {
    return onUp(event);
  }
  return true;
}
    
在将它传递给
GestureListener
之前,我先阅读了
Action event
来修复它。
img.setOnTouchListener(new OnTouchListener() {
    @Override
    public boolean onTouch(View arg0, MotionEvent arg1) {
      if (arg1.getAction() == MotionEvent.ACTION_UP
          && !getDocument().isScaled()) 
        img.notifyUp();
      return gestures.onTouchEvent(arg1);
    }
});
    
其他答案可以解决问题,也许它们很好用,但是我认为这些不是很好的解决方案。 因为我们应该在一个模块中处理事件,所以我们可以更轻松地维护或扩展代码。 (顺便说一下,请勿使用
onFilng()
,如果手指在屏幕上缓慢移动,
onFilng()
将无法工作) 因此,我的解决方案是重写GestureDetector:
public class ModifyGestureDetector extends GestureDetector {

    MyGestureListener myGestureListener;

    public ModifyGestureDetector(Context context, OnGestureListener listener) {
        super(context, listener);
        init(listener);
    }

    void init(OnGestureListener listener){
        if (listener instanceof MyGestureListener){
            myGestureListener = (MyGestureListener) listener;
        }
    }

    //u can write something more complex as long as u need
    @Override
    public boolean onTouchEvent(MotionEvent ev) {
        if(ev.getAction() == MotionEvent.ACTION_UP 
            && myGestureListener != null){
            myGestureListener.onUp(ev);
        }
        return super.onTouchEvent(ev);
    }

    public interface MyGestureListener{
        public void onUp(MotionEvent ev);
    }
}  
和听众:
public class MyGestureListener extends GestureDetector.SimpleOnGestureListener
        implements ModifyGestureDetector.MyGestureListener {


    @Override
    public void onUp(MotionEvent ev) {
        //do what u want
    }
} 
:)     
您是否从GestureDetector.OnGestureListener中消耗的其他事件返回了true?我遇到了这个问题,事实证明,如果您返回false,系统会假设您不感兴趣并停止向您传递事件,因此您错过了!     

要回复问题请先登录注册