我对我的应用程序有一个顶级(透明)视图。
这应该是长按 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 不再触发。(似乎合乎逻辑,事件已在其他地方处理)。
我怎样才能解决这个问题 ?