Заставка Flutter не скрывает нижнюю панель

Я добавил заставку в свое приложение Flutter (на стороне Android), например:

Открываем файл values ​​/ styles.xml и добавляем следующее:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar">
        <!-- Show a splash screen on the activity. Automatically removed when
             Flutter draws its first frame -->

        <!--following 2 lines modified by me-->

        <item name="android:windowBackground">@drawable/splash_screen</item>
        <item name= "android:windowFullscreen">true</item>
    </style>
</resources>

Однако, когда я запускаю приложение на реальном устройстве, заставка показывает странное поведение:

Я не уверен, сколько секунд отображается заставка, но, например, предположим, что она длится 3 секунды, ну, в первые 1 или 1,5 секунды нижняя часть экрана выглядит так, показывая нижние программные кнопки:

введите здесь описание изображения

По истечении этих 1 или 1,5 секунды нижняя полоса исчезнет, ​​а экран-заставка будет отображаться, как и ожидалось, еще 1 или 1,5 секунды, после чего приложение запустится.

Как исправить, чтобы заставка с самого начала покрывала весь экран?


person codeKiller    schedule 17.07.2019    source источник


Ответы (1)


In MainActivity.java

напишите это:

@Override
public void onWindowFocusChanged(boolean hasFocus) {
    super.onWindowFocusChanged(hasFocus);
    this.getWindow().getDecorView().setSystemUiVisibility(
            View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                    | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                    | View.SYSTEM_UI_FLAG_FULLSCREEN
                    | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                    | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                    | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
}
person Junsu Cho    schedule 17.07.2019
comment
где AppCompatActivity? когда я открываю сторону Android проекта flutter, я просто вижу класс MainActivity: FlutterActivity () .... - person codeKiller; 17.07.2019
comment
Я сделал несколько тестов. Определенно вам нужно использовать решение, предложенное @rollcake. Необходимо переопределить onWindowFocusChanged в MainActivity.java - person Roberto Manfreda; 17.07.2019
comment
извините, но я не могу найти MainActivity.java, это проект Flutter, а не чистый Android, Android-часть проекта flutter и просто открывает MainActivity.kl, который не расширяет AppCompatActivity .... пожалуйста, объясните подробнее - person codeKiller; 17.07.2019