개발새발 - IT 기술블로그
article thumbnail

 

작성코드👀

 

Java

 // 몰입모드로 전환됩니다
    public void FullScreenMode() {
        getWindow().getDecorView().setSystemUiVisibility(
                View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                        | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                        | View.SYSTEM_UI_FLAG_IMMERSIVE
                        | View.SYSTEM_UI_FLAG_FULLSCREEN
                        | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
        );
    }

    // 몰입모드에서 시스템 네비게이션바만 보여줍니다
    private void ShowNavBarOnly() {
        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_IMMERSIVE
        );
    }

 

 

Kotlin

// 몰입모드로 전환됩니다
private fun FullScreenMode() {
    window.decorView.systemUiVisibility = (
    View.SYSTEM_UI_FLAG_IMMERSIVE
            or View.SYSTEM_UI_FLAG_LAYOUT_STABLE
            or View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
            or View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
            or View.SYSTEM_UI_FLAG_FULLSCREEN
            )
}

// 몰입모드에서 시스템 네비게이션바만 보여줍니다
private fun ShowNavBarOnly() {
    window.decorView.systemUiVisibility = (
    View.SYSTEM_UI_FLAG_LAYOUT_STABLE
            or View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
            or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
            or View.SYSTEM_UI_FLAG_IMMERSIVE
            )
}

개요

 

시스템 UI가 방해되는 영상 플레이어, 게임, 갤러리 같은 앱은 사용자가 제어를 원하지 않는 경우, 시스템 UI를 숨겨주는 것이 몰입에 도움이 됩니다. 

 

예를들어 아래와 같이 영상이 재생되면 시스템UI컨트롤 위젯을 숨겨주고, 사용자가 제어 및 이동을 원할 경우 다시 보여주는 식으로 구현 할 수 있습니다.

 

 

 

그럼 코드의 역할을 살펴보겠습니다.

 

 

코드소개

 

시스템 UI의 가시성을 설정합니다

getWindow().getDecorView().setSystemUiVisibility(...)

 

 

안드로이드의 전체화면 옵션 중 하나로, immersive 모드는 화면의 가장자리를 스와이프 했을 때 컨트롤러가 보여지며 화면이 리사이즈 되는것을 (네비게이션 바 만큼 화면이 밀리는 현상을) 막습니다. 아래 옵션들을 같이 사용합니다

View.SYSTEM_UI_FLAG_IMMERSIVE
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION

 

 

상단 상태바하단 네비게이션바를 숨깁니다

View.SYSTEM_UI_FLAG_FULLSCREEN
View.SYSTEM_UI_FLAG_HIDE_NAVIGATION

 

 

만약 UI가 갱신되지 않는다면 requestLayout으로 갱신 할 수 있습니다.

getWindow().getDecorView().requestLayout();

 

 

결론

 

이번엔 흔히 몰입모드라고 하는 꽉찬화면을 만드는 방법에 대해서 알아보았습니다.

 

자세한 내용은 아래 공식 홈페이지를 참고하세요🙆

 

 

참고

https://developer.android.com/training/system-ui/immersive?hl=ko#java/

 

전체 화면 모드 사용 설정  |  Android 개발자  |  Android Developers

전체 화면 모드 사용 설정 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 동영상, 게임, 이미지 갤러리, 책, 프레젠테이션 슬라이드 같은 콘텐츠를 이용하기

developer.android.com

 

 

예제소스

https://github.com/tekken5953/MoviePlayerApp

 

GitHub - tekken5953/MoviePlayerApp: Android Java Movie Player with ExoPlayer

Android Java Movie Player with ExoPlayer. Contribute to tekken5953/MoviePlayerApp development by creating an account on GitHub.

github.com