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であるということだと思います。Webビューがイベントを盗むのを防ぐことはできますか?

4

2 に答える 2

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 に答える
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 に答える