双击应用程序的手势



我想实现一个特定于我的整个应用程序的手势。我尝试实现以下双击手势的方法。

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。我怎样才能做到这一点?

在活动布局的根 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);
}

相关内容

最新更新