2014-12-06 3 views
1

Я хочу сделать полноэкранное приложение для Android-планшета, и я пытаюсь скрыть панель навигации и для 4.0+. Я читал подобные вопросы и ответы на него, но то, что я нашел, не работает для меня. Если невозможно скрывать навигационную панель навсегда, как я могу скрыть ее и сделать ее видимой с помощью слайда снизу? Я видел в некоторых играх, и я думаю, что это возможно. Пока я пробовал это, и сначала он скрывает навигационную панель, но когда я коснулся панели навигации на экране, снова становится видимым, и я не хочу этого.Скрытие панели навигации без укоренения на android

decorView = getWindow().getDecorView(); 
    int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION 
      | View.SYSTEM_UI_FLAG_FULLSCREEN; 
decorView.setSystemUiVisibility(uiOptions); 

и я также попытался это, но опять делаешь работу для меня

decorView.setOnSystemUiVisibilityChangeListener 
      (new View.OnSystemUiVisibilityChangeListener() { 
     @Override 
     public void onSystemUiVisibilityChange(int visibility) { 
      // Note that system bars will only be "visible" if none of the 
      // LOW_PROFILE, HIDE_NAVIGATION, or FULLSCREEN flags are set. 
      if ((visibility & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0) { 
       int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION 
         | View.SYSTEM_UI_FLAG_FULLSCREEN; 
      decorView.setSystemUiVisibility(uiOptions); 


      } else { 
       int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION 
         | View.SYSTEM_UI_FLAG_FULLSCREEN; 
      decorView.setSystemUiVisibility(uiOptions); 
      } 
     } 
    }); 

Как я скрыть его и сделать его видимым с раздвижными снизу или скрыть навсегда? Пожалуйста, дайте мне совет. Заранее спасибо

+0

Поскольку это скорее предложение, чем ответ, здесь идет идея: вы пытались полностью удалить ActionBar? Если вы это сделаете, вы можете добавить псевдо-ActionBar всякий раз, когда захотите (а также оживить его). Проблема просто заключается в добавлении всех функций ActionBar и управлении ею самостоятельно - включая иконку, кнопку вверх, название, кнопки и т. Д. Если у вас все еще есть проблемы с ** удалением ** полностью, не стесняйтесь, дайте мне знать. Я также задал аналогичный вопрос об удалении ActionBar, чтобы это тоже помогло. – MDragon00

+0

Спасибо за ваше предложение. Если я удалю ActionBar, будет ли невидимая нижняя панель навигации? Если да, то как я могу удалить панель действий? – mystery

+0

Прошу прощения за то, что вы немного опоздали, но это зависит от того, что вы подразумеваете под «нижней навигационной панелью». Если вы имеете в виду выбор навигации по нижнему краю экрана, это отдельно от ActionBar. Если вы хотите полностью удалить ActionBar ** ** и ** полностью ** (что я должен был полностью контролировать и настраивать для приложения клиента), тогда просто прочитайте удивительный ответ здесь TulsiramRathod: [http: // stackoverflow .com/вопросы/26901444/удаление-экстра-пространство-в-обычая-ActionBar]. Обратите внимание, что это ** не ** ограничивает вас API 4.0/4.4 +. Если вы хотите, я могу написать ответ. – MDragon00

ответ

1

Я верю, что вы описываете то, что вы видели в некоторых играх, называется «Иммерсивный режим». Панель навигации полностью исчезает, и жест от края экрана возвращает ее обратно. Эта функция доступна на Android версии 4.4.

Перед Android 4.4 с версии 4.0 для Android вы можете использовать флаг «Скрыть навигацию», который временно скроет панель навигации. Проблема с этим режимом заключается в том, что любое взаимодействие с экраном приведет к появлению навигационной панели. Это, конечно, не очень полезно для приложений, для которых требуется много взаимодействия с экраном, как и большинство игр.

Я обычно использую следующие функции для перемещения в и из захватывающего режима:

private void hideSystemUI() { 
    mDecorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE 
      | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION 
      | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN 
      | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION 
      | View.SYSTEM_UI_FLAG_FULLSCREEN 
      | View.SYSTEM_UI_FLAG_LOW_PROFILE 
      | View.SYSTEM_UI_FLAG_IMMERSIVE); // This flag only for 4.4+ 
} 

private void showSystemUI() { 
    mDecorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE 
      | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION 
      | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN); 
} 

Тогда в моем OnCreate, я поставил mDecorView и называть hideSystemUI:

mDecorView = getWindow().getDecorView(); 
    hideSystemUI(); 

код похож на что у вас есть, так что это может не помочь. Существует подробное видео по этому вопросу, в том числе более подробные примеры исходного кода, здесь: https://www.youtube.com/watch?v=cBi8fjv90E4

+0

Спасибо за ваш ответ. Я тестирую устройство Android 4.2.2. Вот почему я не могу использовать режим погружения, и до сих пор я не мог найти ничего полезного. – mystery

+0

Да, у меня была такая же проблема с моей игрой. Лучшее, что вы можете сделать до 4.4, - это флаг низкого профиля. Кнопки все еще существуют и используют пробел, но как слабые точки. В моем случае я спрятал все и пошел в низкий профиль. Пользователь нажимает «Назад» для переключения между низким профилем и нормалью с видимыми меню. Флаг навигации для скрытия бесполезен, если ваше приложение требует постоянного взаимодействия с экраном. – paulscode

Смежные вопросы