我有一个onTouchListener()
,需要确定用户单击还是长按。因此,我可以确定是单击还是长按,但是问题是我只能在Motion.ACTION_UP
中确定它。
mViewBinder.actionMain.setOnTouchListener(new View.OnTouchListener() {
private long lastTouchDown;
private int CLICK_ACTION_THRESHOLD = 200;
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
lastTouchDown = System.currentTimeMillis();
break;
case MotionEvent.ACTION_UP:
if(System.currentTimeMillis() - lastTouchDown < CLICK_ACTION_THRESHOLD)
Logger.log("OnCLickEvent", "onClickListener");
else
Logger.log("OnCLickEvent", "onLongClickListener");
break;
}
return true;
}
});
我想我需要在ACTION_DOWN
中以某种方式确定是否是长按,在ACTION_UP
中确定是单击。我的目的是在1)用户长按按钮而没有拔出手指2)用户点击了按钮
我想你明白。因此,我使用OnTouchListener()
,因为在我的构造函数中需要MotionEvent event
以便将来使用。谢谢。
取决于您的用例。如果有原因,您不能只使用setOnLongClickListener(),我建议改用GestureDetector。