2017-08-08 69 views
0

我想實現一個特定於我的整個應用程序的手勢。我嘗試執行下面的雙擊手勢方法。雙擊手勢爲應用程序

MainActivity extends AppCompatActivity implements GestureDetector.OnGestureListener, 
     GestureDetector.OnDoubleTapListener 

@Override 
    public boolean onDoubleTapEvent(MotionEvent event) { 

     return true; 
    } 

    @Override 
    public boolean onSingleTapConfirmed(MotionEvent event) { 

     return false; 
    } 

但我想要一個功能,如在我的應用程序內任何地方應該執行一些操作。每個視圖的setOnClickListener應該只檢測一次點擊,如果雙擊它應該繞過Activity的OnDoubleTapListener。我怎樣才能做到這一點?

回答

0

在你的活動佈局的根的ViewGroup可以實現的方法:

private static final long TIME_INITIAL = -1; 
    private static final long TIME_DOUBLE_TAP = 250; 

    private long lastTouchTime = TIME_INITIAL; 

    @Override 
    public boolean onInterceptTouchEvent(MotionEvent ev) { 
    if (ev.getAction() == MotionEvent.ACTION_DOWN) { 
     long thisTime = System.currentTimeMillis(); 
     if (thisTime - lastTouchTime <= TIME_DOUBLE_TAP) { 
      // do your magic here. I prefer call the listener 
      lastTouchTime = TIME_INITIAL; 
     } else { 
      lastTouchTime = thisTime; 
     } 
    } 
    return super.onInterceptTouchEvent(ev); 
}