Android - Honeycomb или ICS полностью полноэкранный - PullRequest
1 голос
/ 30 марта 2012

Есть ли в ICS или Honeycomb способ полностью перейти на полный экран? Я хочу, чтобы системный интерфейс полностью исчез! В настоящее время я делаю следующее:

    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
                            WindowManager.LayoutParams.FLAG_FULLSCREEN);

    setContentView(R.layout.main);
    getWindow().getDecorView().setSystemUiVisibility(View.STATUS_BAR_HIDDEN);

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

С кодом выше. Я получаю следующий вид:

Status bar hidden replaced by dim dots

Я хочу, чтобы затемненные точки тоже исчезли, и мое видео / изображение было полностью полноэкранным.

Ответы [ 4 ]

3 голосов
/ 13 июня 2012

Это невозможно в Honeycomb, но было добавлено в API v14. Использование:

getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);

См. Более подробные ответы здесь (хотя я бы использовал проверку Build.Version.SDK_INT вместо предлагаемой проверки на основе отражения для поддержки):

Скрыть кнопки переключения домашних заданий ICS

1 голос
/ 30 марта 2012

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

1 голос
/ 30 марта 2012

Последняя информация, которую я имею, это то, что вы можете использовать черную ленту, чтобы покрыть ее.Это предложение, данное Чет Хаасе.Смотрите эту сессию Google IO 2011 Q & A , начинающуюся с 53 минут

0 голосов
/ 11 ноября 2013

Вы хотите SYSTEM_UI_FLAG_HIDE_NAVIGATION .Имейте в виду, что, поскольку программные навигационные кнопки являются ключевыми для взаимодействия с устройством, они скрываются только до тех пор, пока не произойдет некоторое взаимодействие с пользователем.Если вы хотите навсегда спрятать их, тогда рутирование устройства (как предлагали другие) - единственный путь.

Флаг был добавлен по состоянию на Ice Cream Sandwich, API 14. До 14 флаг STATUS_BAR_HIDDEN был добавлен в Honeycomb, API 11, который имел аналогичную функцию.До этого программных кнопок навигации не существовало, поэтому полноэкранные режимы полностью обрабатывались Темами (в частности, Theme.NoTitleBar.Fullscreen ).

Использование:

if( Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH )
    mBaseLayout.setSystemUiVisibility( View.SYSTEM_UI_FLAG_HIDE_NAVIGATION );
else if( Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB )
    mBaseLayout.setSystemUiVisibility( View.STATUS_BAR_HIDDEN );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...