2012-08-29 37 views
4

我需要在我正在處理的Android應用程序中檢測到雙指輕按。我還使用ScaleGestureDetectorGestureDetector來檢測輕拍,雙擊,長按和縮放。如何檢測Android中的雙指輕拍?

在我onTouchEvent方法我有:

@Override 
public boolean onTouchEvent(MotionEvent event) { 
    scaleGestureDetector.onTouchEvent(event); 
    gestureDetector.onTouchEvent(event); 

    switch (event.getActionMasked()) { 
    case MotionEvent.ACTION_DOWN: 
     activePointerId = event.getPointerId(0); 
     break; 
    . 
    . 
    . 
    case MotionEvent.ACTION_POINTER_UP: 
     int pointerId = event.getPointerId(event.getActionIndex()); 

     if (pointerId == activePointerId) { 
      // change active pointer 
     } else if (!scaleDetector.isInProgress() && (event.getPointerCount() == 2)) { 
      // handle two-finger tap 
     } 
     break; 
    . 
    . 
    . 

的問題是,規模也檢測爲二指點擊。有關解決這個問題的任何想法?謝謝!

回答

2

我以前也遇到過這樣的問題。最後,我不得不編寫自己的擴展了GestureDetector的類,並且可以自己實現擴展。

0
private int tap_count=0; 
    @Override 
     public boolean onTouchEvent(MotionEvent event) { 

     int action = event.getAction() & MotionEvent.ACTION_MASK; 
     switch(action) { 

      case MotionEvent.ACTION_DOWN : { 

       ++tap_count; 
       Log.d(LOG_TAG, "MotionEvent.ACTION_DOWN "+tap_count); 
       break; 
      } 

      case MotionEvent.ACTION_MOVE : { 
       break; 
      } 

      case MotionEvent.ACTION_POINTER_DOWN : { 

       ++tap_count; 
       Log.d(LOG_TAG, "MotionEvent.ACTION_POINTER_DOWN "+tap_count); 
       break; 
      } 

      case MotionEvent.ACTION_POINTER_UP : { 

       ++tap_count; 
       Log.d(LOG_TAG, "MotionEvent.ACTION_POINTER_UP "+tap_count); 
       break; 
      } 

      case MotionEvent.ACTION_UP : { 

       --tap_count; 
       Log.d(LOG_TAG, "MotionEvent.ACTION_UP "+tap_count); 

       if(tap_count == 2){ 
        tap_count = 0; 
        Toast.makeText(mContext,"Enableing Accessbility",Toast.LENGTH_SHORT).show(); 
        return true; 
       } 
       break; 
      } 
     } 
     return true; 
     } 
+0

這將工作肯定 –