전체 화면 디스플레이를 사용하면 앱이 시스템 표시줄(상태 표시줄, 캡션 표시줄, 탐색 메뉴) 뒤에 UI를 그려 더 몰입감 있는 사용자 환경을 구현할 수 있습니다. Android 15 (API 수준 35) 이상을 실행하는 기기를 타겟팅하는 경우 기본적으로 더 넓은 화면이 적용됩니다.
모든 Android 버전에서 콘텐츠를 더 넓은 화면으로 올바르게 표시하려면 다음 설정 단계를 따르세요. 이 단계를 따르지 않으면 앱이 시스템 표시줄 뒤에 단색을 그리거나 터치 키보드(IME) 전환과 동기화하여 콘텐츠에 애니메이션을 적용하지 않을 수 있습니다.
1. 더 넓은 화면 표시 사용 설정
이전 Android 버전에서 더 넓은 화면을 사용 설정하려면 Activity.onCreate() 메서드에서 enableEdgeToEdge()를 호출합니다.
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
...
}
기본적으로 enableEdgeToEdge()는 시스템 표시줄을 투명하게 만듭니다. 단, 3버튼 탐색 모드에서는 더 나은 대비를 위해 탐색 메뉴에 반투명 스크림을 적용합니다. 시스템 아이콘과 스크림의 색상은 시스템의 밝은 테마 또는 어두운 테마에 따라 조정됩니다.
2. windowSoftInputMode 구성
활동의 AndroidManifest.xml 항목에서 android:windowSoftInputMode="adjustResize"을 설정합니다. 이 설정을 사용하면 앱이 IME 인셋을 수신할 수 있으므로 터치 키보드가 표시되거나 사라질 때 패딩으로 레이아웃을 조정할 수 있습니다.
<!-- In your AndroidManifest.xml file: -->
<activity
android:name=".ui.MainActivity"
android:label="@string/app_name"
android:windowSoftInputMode="adjustResize"
android:theme="@style/Theme.MyApplication"
android:exported="true">
...
</activity>
3. 인셋을 사용하여 중복 처리
더 넓은 화면을 사용 설정하면 앱의 일부 콘텐츠와 UI 요소가 시스템 표시줄 뒤에 그려질 수 있습니다. 중요한 요소나 대화형 요소가 시스템 표시줄에 가려지거나 시스템 동작과 겹치지 않도록 인셋을 처리해야 합니다.
인셋은 시스템 UI 또는 시스템 동작과 교차하는 화면 부분을 설명합니다. 더 넓은 화면을 위해 고려해야 하는 주요 인셋 유형은 다음과 같습니다.
- 시스템 표시줄 인셋: 시스템 표시줄이 표시되는 영역을 나타냅니다. 시스템 표시줄에 UI가 가려지지 않도록 하려면 이를 사용하세요.
- 디스플레이 컷아웃 인셋: 기기 화면에 실제 컷아웃 (예: 카메라 노치)이 있는 영역을 나타냅니다.
Compose에서는 눈금자, 패딩 수정자 또는 인셋 크기 수정자를 사용하여 인셋을 처리할 수 있습니다. 자세한 안내는 창 인셋 정보를 참고하세요.
고급 주제
더 고급의 더 넓은 화면 사용 사례는 다음을 고려하세요.
몰입형 모드
동영상이나 지도와 같은 일부 콘텐츠는 시스템 표시줄이 숨겨진 완전한 몰입형 환경에서 이점을 얻습니다. WindowInsetsControllerCompat를 사용하여 시스템 표시줄을 숨길 수 있습니다.
val windowInsetsController =
WindowCompat.getInsetsController(window, window.decorView)
// Hide the system bars.
windowInsetsController.hide(WindowInsetsCompat.Type.systemBars())
// Show the system bars.
windowInsetsController.show(WindowInsetsCompat.Type.systemBars()) For example, use either `Scaffold`,
시스템 표시줄 색상 및 아이콘
더 넓은 화면으로 전환하면 시스템 표시줄 뒤에 앱의 배경이 표시될 수 있으므로 대비를 개선하기 위해 시스템 표시줄 아이콘 색상을 조정해야 할 수 있습니다.
상태 표시줄 아이콘을 밝게 또는 어둡게 변경하려면 WindowInsetsControllerCompat를 사용하세요.
// Set status bar icons to dark
WindowCompat.getInsetsController(window, window.decorView)
.isAppearanceLightStatusBars = true
// Set status bar icons to light
WindowCompat.getInsetsController(window, window.decorView)
.isAppearanceLightStatusBars = false
시스템 표시줄 보호
enableEdgeToEdge()에서는 기본 투명 또는 반투명 시스템 표시줄을 제공하지만 이를 맞춤설정해야 할 수 있습니다. Android 시스템 표시줄 디자인 안내 및 전체 화면 디자인 안내를 참고하여 투명 표시줄과 반투명 표시줄을 언제 사용할지 결정하세요.
3버튼 탐색 메뉴를 반투명이 아닌 완전한 투명으로 만들려면 대비 강제 적용을 사용 중지하면 됩니다.
window.isNavigationBarContrastEnforced = false
자세한 내용은 시스템 표시줄 보호 정보를 참고하세요.
대화상자
전체 화면 대화상자를 더 넓은 화면으로 표시하려면 대화상자의 onStart() 메서드에서 WindowCompat.enableEdgeToEdge를 호출하세요.
class MyAlertDialogFragment : DialogFragment() {
override fun onStart(){
super.onStart()
dialog?.window?.let { WindowCompat.enableEdgeToEdge(it) }
}
...
}