Android: 如何减少onSingleTapConfirmed的触发时长?
Android: how to reduce trigger duration of onSingleTapConfirmed?
我有一个我使用的视图:
class GestureTap extends GestureDetector.SimpleOnGestureListener {
@Override
public boolean onSingleTapConfirmed(MotionEvent e) {
}
}
我认为 onSingleTapConfirmed 是在持续时间过长后启动的。
是否可以缩短此持续时间?
谢谢。
持续时间是最终值,您无法更改它。
所以,你可以调整你的代码策略,比如:
int MOVE_RANGE= 100;
int TIME_LONG_PRESS = 1000;
Runnable r = Runnable();
@Override
public boolean onTouch(View v, MotionEvent event) {
int x = (int) event.getX();
int y = (int) event.getY();
switch (event.getAction()) {
case MotionEvent.ACTION_UP:
handler.removeCallbacks(r);
break;
case MotionEvent.ACTION_MOVE:
if (Math.abs(mLastMotionX - x) > TOUCH_MAX|| Math.abs(mLastMotionY - y) > TOUCH_MAX) {
//Beyond the long press range
handler.removeCallbacks(r);
}
break;
case MotionEvent.ACTION_DOWN:
handler.removeCallbacks(r);
mLastMotionX = x;
mLastMotionY = y;
// Start counting
handler.postDelayed(r, TIME_LONG_PRESS );
break;
}
return true;
}
我有一个我使用的视图:
class GestureTap extends GestureDetector.SimpleOnGestureListener {
@Override
public boolean onSingleTapConfirmed(MotionEvent e) {
}
}
我认为 onSingleTapConfirmed 是在持续时间过长后启动的。
是否可以缩短此持续时间?
谢谢。
持续时间是最终值,您无法更改它。 所以,你可以调整你的代码策略,比如:
int MOVE_RANGE= 100;
int TIME_LONG_PRESS = 1000;
Runnable r = Runnable();
@Override
public boolean onTouch(View v, MotionEvent event) {
int x = (int) event.getX();
int y = (int) event.getY();
switch (event.getAction()) {
case MotionEvent.ACTION_UP:
handler.removeCallbacks(r);
break;
case MotionEvent.ACTION_MOVE:
if (Math.abs(mLastMotionX - x) > TOUCH_MAX|| Math.abs(mLastMotionY - y) > TOUCH_MAX) {
//Beyond the long press range
handler.removeCallbacks(r);
}
break;
case MotionEvent.ACTION_DOWN:
handler.removeCallbacks(r);
mLastMotionX = x;
mLastMotionY = y;
// Start counting
handler.postDelayed(r, TIME_LONG_PRESS );
break;
}
return true;
}