더 넓은 화면 설정

전체 화면 디스플레이를 사용하면 앱이 시스템 표시줄(상태 표시줄, 캡션 표시줄, 탐색 메뉴) 뒤에 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) }
    }
    ...
}