작성코드👀
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
'Android' 카테고리의 다른 글
[안드로이드] 웹뷰(WebView)(2) - 접근과 제어 (0) | 2023.01.03 |
---|---|
[안드로이드] 웹뷰(WebView)(1) - 앱 브라우저에서 호출 (0) | 2022.12.26 |
[안드로이드] 아래에서 올라오는 다이얼로그 - BottomSheetDialogFragment (0) | 2022.12.14 |
[안드로이드] Spannable로 글자마다 다른 설정! (0) | 2022.12.13 |
[안드로이드] 에러 'compileDebugJavaWithJavac' task and 'compileDebugKotlin' task jvm target compatibility should be set to the same Java version. 해결 (0) | 2022.12.07 |