Начиная с 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;
}
Примечание. Я не пытаюсь запретить отображение навигационной панели при первом касании, я просто хочу предпринять другие действия, когда это событие произойдет.