У меня есть вид сверху (прозрачный) над моей заявкой.
это должно поймать долгое нажатие 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 больше не срабатывает, если сработала соответствующая кнопка. (кажется логичным, событие было обработано где-то еще).
как я могу это исправить?