我想实现一个特定于我的整个应用程序的手势。我尝试使用以下方法实现双击手势。
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 :(得分: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);
}