1

我的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 窃取我的事件吗?

4

2 回答 2

1

将此添加到我onCreate的解决方案中。

    webView.setOnTouchListener(new View.OnTouchListener() {

        public boolean onTouch(View v, MotionEvent event) {
           detector.onTouchEvent(event);
            return true;
        }
    });
于 2012-07-30T23:57:13.953 回答
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;
}

希望这可以帮助。

于 2012-07-30T22:40:21.710 回答