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