2017-08-08 70 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); 
}