【发布时间】:2012-02-15 10:24:49
【问题描述】:
我对我的应用程序有一个顶部(透明)视图。
这应该是长按 5 秒并打开一个菜单。
所以我实现了一个 OnTouchListener 。
像这样:
public boolean onTouch(View v, MotionEvent event)
{
long downtime = 0;
long eventt = 0;
boolean returnvalue = false;
switch (event.getAction() & MotionEvent.ACTION_MASK)
{
case MotionEvent.ACTION_DOWN:
eventt = event.getEventTime();
returnvalue = true;
break;
case MotionEvent.ACTION_UP:
downtime = event.getDownTime();
if (eventt - downtime > 5000)
{
Main.changePlayerDialog.show();
returnvalue = true;
}
else
{
returnvalue = false;
//return false;
}
break;
default:
break;
}
return returnvalue;
}
});
现在,对于 5 秒的触摸和释放,这工作得很好。 但是,当它小于 5 时,我返回 false。 然而,MotionEvent 并没有传递给它下面的其他视图! 所以所有按钮和诸如此类的底层视图现在都被“禁用”了......
如果我立即返回 false,一切正常...但是如果触发了基础按钮,则 ACTION_UP 将不再触发。 (似乎合乎逻辑,事件已在其他地方处理)。
我该如何解决这个问题?
【问题讨论】:
标签: android ontouchlistener motion-detection