Полноэкранный и иммерсивный режим Sticky. Android Студия и LibGDX - PullRequest
1 голос
/ 13 апреля 2020

Я занимаюсь разработкой игры, и я хочу, чтобы она была в Иммерсивном стикере и полноэкранном режиме , я использовал код, предоставленный веб-страницей Android разработчики: https://developer.android.com/training/system-ui/immersive?hl=es_419#EnableFullscreen

Теперь я реализовал код следующим образом (класс AndroidLauncher):

@Override
public void onWindowFocusChanged(boolean hasFocus) {
    super.onWindowFocusChanged(hasFocus);
    if (hasFocus) {
        hideSystemUI();
    }
}

private void hideSystemUI() {
    View decorView = getWindow().getDecorView();
    decorView.setSystemUiVisibility(
            View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
                    // Set the content to appear under the system bars so that the
                    // content doesn't resize when the system bars hide and show.
                    | View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                    | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                    | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                    // Hide the navbar and status bar
                    | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                    | View.SYSTEM_UI_FLAG_FULLSCREEN);
}

Я использовал Android 9 (уровень API 28) и технически он работает, Пользовательский интерфейс телефона скрыт, но сверху есть черное пространство.

enter image description here enter image description here

Я хочу заполнить приложение весь экран, но только нижняя часть заполнена, а верхняя часть пуста, я не хочу, чтобы экран масштабировался при отображении пользовательского интерфейса телефона. Я использую LibGDX, и я не знаю, есть ли что-то делать. Это AndroidManifest. xml:

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:isGame="true"
    android:appCategory="game"
    android:label="@string/app_name"
    android:theme="@style/GdxTheme" >
    <activity
        android:name="arrive.further.game.AndroidLauncher"
        android:label="@string/app_name" 
        android:screenOrientation="portrait"
        android:configChanges="keyboard|keyboardHidden|navigation|orientation|screenSize|screenLayout">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

1 Ответ

0 голосов
/ 13 апреля 2020

Для тех, кто еще не сталкивался с этим, есть простой способ достичь этого в одной строке кода, используя объект AndroidApplicationConfiguration:

В вашем AndroidLauncher классе:

public class AndroidLauncher extends AndroidApplication {
    @Override
    protected void onCreate (Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        AndroidApplicationConfiguration config = new AndroidApplicationConfiguration();

        config.useImmersiveMode = true;

        initialize(new YourGame(), config);
    }
}
...