OnGestureListener onDown方法永远不会被调用

时间:2012-07-30 22:10:00

标签: android gesture

我的onScroll并且onTouchEvent被调用,但不是onDown方法。事实上,当我在distaceX中记录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;
    }   

编辑: 我认为问题是我的视图是WebView。我可以阻止webview窃取我的活动吗?

2 个答案:

答案 0 :(得分: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;
}

希望这会有所帮助。

答案 1 :(得分:1)

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

    webView.setOnTouchListener(new View.OnTouchListener() {

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