2012-07-30 44 views
1

我的onScrollonTouchEvent被调用,但不是onDown方法。实际上,当我登录distaceX,onDown时,其中有几个退出了,第一个总是相对于我结束最后一次滚动的位置。OnGestureListener onDown方法永远不会被调用

@Override 
public boolean onTouchEvent(MotionEvent me){ 
    this.detector.onTouchEvent(me); 

    return super.onTouchEvent(me); 
} 

@Override 
public boolean onDown(MotionEvent e) { 
     Log.d("---onDown---","."); 
    return false; 

} 

@Override 
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, 
    float distanceY) { 
    Log.d("---onScroll---", "" + distanceX); 
    return false; 
} 

任何想法为什么onDown不会被调用?

编辑:

我改变了我的onTouchEvent以下块,只有ACTION_MOVE得到记录。

float gestureDistance = 0; 
@Override 
public boolean onTouchEvent(MotionEvent me){ 
    switch (me.getAction() & MotionEvent.ACTION_MASK) { 
     case MotionEvent.ACTION_DOWN:    
      Log.d("actionDown", "gestureDistance:" + gestureDistance); 
      break; 
     case MotionEvent.ACTION_UP: 
      Log.d("actionUp", "gestureDistance:" + gestureDistance); 
      break; 
     case MotionEvent.ACTION_MOVE: 
      Log.d("actionMove", "gestureDistance:" + gestureDistance); 
      break; 
     default: 
      Log.d("action default", "default"); 
      break; 
    } 

编辑: 我认为问题是,我的看法是一个web视图。我能否让webview窃取我的活动?

+0

只是试图测试相同的代码。我成功地完成了下一个活动。你用什么设备? – 2012-07-30 22:23:06

+0

尝试'返回true;'代替。看看是否有效。 – 0gravity 2012-07-30 22:26:55

+0

我试过'返回true;'。相同的结果和日志从不发生。 – 2012-07-30 22:28:37

回答

1

将此添加到我的onCreate中修复了此问题。

webView.setOnTouchListener(new View.OnTouchListener() { 

     public boolean onTouch(View v, MotionEvent event) { 
      detector.onTouchEvent(event); 
      return true; 
     } 
    }); 
1

你为什么不这样做:

@Override 
public boolean onTouchEvent(MotionEvent event) {   

    switch (event.getAction() & MotionEvent.ACTION_MASK) { 
     case MotionEvent.ACTION_DOWN:    
      //Do something on action down. 
     case MotionEvent.ACTION_UP: 
      //Do something on action up. 
      break; 
     case MotionEvent.ACTION_MOVE: 
      //Do something when moving. 
      break; 
    } 

    return true; 
} 

希望这有助于。

+0

只有ACTION_MOVE被调用。我用更多信息编辑了我的问题。 – 2012-07-30 23:06:47

+0

那么我不知道什么是错的。你正在使用物理设备还是在模拟器上测试? – 0gravity 2012-07-30 23:16:40

+0

我正在使用物理设备。 – 2012-07-30 23:28:44

相关问题