Полноэкранный режим Samsung Galaxy S8

У последнего смартфона Samsung есть интересная функция, называемая полноэкранным (или в терминах маркетингового термина "бесконечность" ). В этом режиме приложение также охватывает часть дисплея, где находятся кнопки "домой/назад". Обычные приложения не покрывают эту область, оставляя ее черной. Но родные Samsung покрывают эту область.

Вопрос: как добиться этого эффекта? Я имею в виду, какую декларацию манифеста или программный вызов (возможно, API прежнего использования Samsung) я должен использовать?

Ответ 1

Чтобы включить поддержку полного экрана Samsung Galaxy S8 и LG G6, добавьте в AndroidManifest.xml элемент <application>:

<meta-data android:name="android.max_aspect" android:value="2.1" />

Где значение 2.1 - соотношение сторон 18.5: 9 (по умолчанию ваше приложение по умолчанию использует максимальное соотношение для 16: 9 - 1.86). Дополнительная информация: Блог Android.

В качестве альтернативы вы можете установить для Application или Activity следующий атрибут:

android:resizeableActivity="true"

Поскольку в документах указано (ссылка):

Вам не нужно устанавливать максимальное соотношение сторон, если Андроид: атрибут resizeableActivity присваивается значение true. Если ваше приложение target API level 24 или выше, этот атрибут по умолчанию равен true.

Ответ 2

чтобы получить полный экран, вы должны переопределить метод onWindowFocusChanged и создать объект decorView и добавить в него флаги System_UI..

@Override
    public  void onWindowFocusChanged(boolean  hasFocus){
        super.onWindowFocusChanged(hasFocus);
        View decorView = getWindow().getDecorView();
        if(hasFocus){

        decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                    |View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY  // this flag do=Semi-transparent bars temporarily appear and then hide again
                    |View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN  // Make Content Appear Behind the status  Bar
                    |View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION  // it Make Content Appear Behind the Navigation Bar
                    |View.SYSTEM_UI_FLAG_FULLSCREEN  // hide status bar
                    |View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
        }
    }