Android fullscreen-immersive

Hi, first post here!

I can’t setup sdl2 on android so it handles correctly fullscreen-immersive.
I can start the app in immersive mode but once the nav bar is shown I can’t hide it. Except by “resuming” the app. Because the events are “eaten” at another level.

I do setup immersive-fullscreen by adding this to my (own extended) Activity class

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

    private void hideSystemUI() {
        // Enables regular immersive mode.
        // For "lean back" mode, remove SYSTEM_UI_FLAG_IMMERSIVE.
        // Or for "sticky immersive," replace it with SYSTEM_UI_FLAG_IMMERSIVE_STICKY
        View decorView = getWindow().getDecorView();
        //View decorView = findViewById(android.R.id.content);
        decorView.setSystemUiVisibility(
                View.SYSTEM_UI_FLAG_IMMERSIVE
                        // 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 nav bar and status bar
                        | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                        | View.SYSTEM_UI_FLAG_FULLSCREEN);
    }

But i wonder now if sdl2 is not featuring it already? That would be great as many games need immersive-fullscreen.

thx

Hey I know I’m 5 years late, but I was looking too. Answer: do it on the C++ side…

SDL_SetWindowFullscreen(window, SDL_WINDOW_FULLSCREEN);

If you want fullscreen on macOS/linux/windows use

SDL_SetWindowFullscreen(window, SDL_WINDOW_FULLSCREEN_DESKTOP);

1 Like

You should use SDL_WINDOW_BORDERLESS | SDL_WINDOW_FULLSCREEN_DESKTOP flags on android if you want fullscreen and hide the navigation buttons too (immersive mode)

window = SDL_CreateWindow( "SDL VK TRI TEST", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED,  WIDTH, HEIGHT,
                                   SDL_WINDOW_VULKAN | SDL_WINDOW_FULLSCREEN_DESKTOP |SDL_WINDOW_BORDERLESS);

Without the SDL_WINDOW_FULLSCREEN_WINDOW_BORDERLESS flag

With SDL_WINDOW_FULLSCREEN_WINDOW_BORDERLESS | SDL_WINDOW_FULLSCREEN_DESKTOP flags

2 Likes