Прослушивание первого TouchEvent при использовании SYSTEM _UI _FLAG _HIDE _NAVIGATION

Начиная с API 14, вы можете использовать этот флаг SYSTEM_UI_FLAG_HIDE_NAVIGATIONв представлении в своей деятельности, чтобы сообщить системе, что вы хотите скрыть панель навигации, пока пользователь не коснется (экрана ). Как только пользователь касается экрана, отображается полоса.

Действие, в котором я это делаю, выполняет какое-то действие (, запускает отдельное действие ), когда пользователь касается экрана, до добавления вышеуказанного флага в мое представление это работало отлично.

После добавления этого флага система перехватывает первое прикосновение к экрану и реагирует на него, показывая панель навигации.Только после второго касания любой из моих просмотров или моей активности получает TouchEvents.

Кто-нибудь знает, как я могу настроить прослушиватель, который позволит мне запустить второе действие при первом касании экрана вместо двойного нажатия при использовании этого флага скрытия навигации?

Я пробовал все следующее, и я не получаю обратных вызовов ни к одному из них, когда экран касается в первый раз, чтобы отобразить панель навигации.

@Override
public void onUserInteraction(){
    Log.i(myTag, "INTERACT");
}

@Override
public boolean onGenericMotionEvent(MotionEvent me){
    Log.i(myTag, "GENERIC");

    return true;
}

//I thought maybe the size change would lead to a callback here. No dice though.
@Override 
public void onWindowAttributesChanged(WindowManager.LayoutParams params){
    Log.i(myTag, "WINDOW CHANGE");
}
@Override
public boolean dispatchTouchEvent(MotionEvent me){
    Log.i(myTag, "TOUCH");
    return true;
}

Примечание. :Я не пытаюсь предотвратить отображение панели навигации при первом касании, я просто хочу предпринять какое-то другое действие при возникновении этого события.

17
задан FoamyGuy 1 August 2012 в 15:16
поделиться