디스플레이 컷아웃은 일부 기기에서 디스플레이 표면으로 확장되는 영역입니다. 에지 투 에지 환경을 제공하는 동시에 기기 전면에 중요한 센서를 위한 공간을 제공합니다.
Android는 Android 9 (API 수준 28) 이상을 실행하는 기기에서 디스플레이 컷아웃을 지원합니다. 그러나 기기 제조업체는 Android 8.1 이하를 실행하는 기기에서도 디스플레이 컷아웃을 지원할 수 있습니다.
이 페이지에서는 컷아웃 영역(컷아웃이 포함된 디스플레이 표면의 에지 투 에지 사각형)을 사용하는 방법을 포함하여 Compose에서 컷아웃이 있는 기기 지원을 구현하는 방법을 설명합니다.
기본 사례
API 수준 34 이하를 타겟팅하는 앱 또는 enableEdgeToEdge
를 호출하지 않는 활동은 앱이 디스플레이 컷아웃이 포함된 시스템 표시줄에 그리는 경우가 아니라면 기본적으로 컷아웃 영역에 그려지지 않습니다.
Android 15 이상을 실행하는 기기에서 API 수준 35 이상을 타겟팅하는 앱 또는 enableEdgeToEdge
를 호출하는 활동은 잘린 영역으로 그립니다.
즉, LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT
, LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES
, LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER
는 Android 15 이상을 실행하는 기기에서 API 수준 35 이상을 타겟팅하는 앱의 비플로팅 창에 대해 LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS
로 해석됩니다.
잘라내기 정보를 수동으로 처리
컷아웃 영역이 세밀한 터치 인식이 필요한 중요한 텍스트, 컨트롤 또는 양방향 요소를 가리지 않도록 하려면 컷아웃 정보를 처리해야 합니다 (컷아웃 영역의 터치 민감도가 더 낮을 수 있음). 콘텐츠를 겹치거나 잘라낼 수 있으므로 잘라내기를 처리하는 동안 상태 표시줄 높이를 하드코딩하지 마세요. 대신 다음 방법 중 하나로 잘라내기를 처리하세요.
WindowInsets.displayCutout
,WindowInsets.safeContent
또는WindowInsets.safeDrawing
사용LocalView.current.rootWindowInsets.displayCutout
를 사용하여 잘라낸 부분Path
객체에 액세스
Compose의 경우 displayCutout
, safeContent
또는 safeDrawing
를 사용하여 컴포저블에서 잘라내기 인셋을 처리하는 것이 좋습니다. 이 접근 방식을 사용하면 필요한 경우 디스플레이 노출 영역 패딩을 준수하거나 필요하지 않은 경우에는 무시할 수 있습니다.
Canvas(modifier = Modifier.fillMaxSize().windowInsetsPadding(WindowInsets.displayCutout)) { drawRect(Color.Red, style = Stroke(2.dp.toPx())) }
콘텐츠가 컷아웃으로 렌더링되는 방식 테스트하기
앱의 모든 화면과 경험을 테스트해야 합니다. 가능하다면 다양한 유형의 컷아웃이 있는 기기에서 테스트합니다. 컷아웃이 있는 기기가 없는 경우 Android 9 이상을 실행하는 모든 기기 또는 에뮬레이터에서 일반적인 컷아웃 구성을 다음과 같이 시뮬레이션할 수 있습니다.
- 개발자 옵션을 사용 설정합니다.
- 개발자 옵션 화면에서 드로잉 섹션까지 아래로 스크롤하고 컷아웃이 있는 디스플레이 시뮬레이션을 선택합니다.
- 컷아웃 유형을 선택합니다.
추천 서비스
- 참고: JavaScript가 사용 중지되어 있으면 링크 텍스트가 표시됩니다.
- Compose의 창 인셋
- 그래픽 수정자
- 단락 스타일 지정