반응형
1. Edge-to-Edge란?
Edge-to-Edge는 앱 콘텐츠가 시스템 바(상태 바, 네비게이션 바, 캡션 바) 영역까지 확장되어, 화면 전체를 활용하는 UI 방식입니다. Android 15(API 35) 이상을 타겟팅하면, 앱이 별도의 설정 없이도 자동으로 Edge-to-Edge 모드로 동작하게 됩니다^1^3^5.
2. SDK 35 마이그레이션 시 변화
- 자동 적용: Android 15 이상 기기에서 targetSdkVersion 35 이상으로 빌드된 앱은 Edge-to-Edge가 강제 적용됩니다. 기존처럼 시스템 바 영역에 자동 패딩이 들어가지 않고, 앱 콘텐츠가 화면 끝까지 표시됩니다^1^3^5.
- 시스템 바 투명화: 상태 바와 네비게이션 바가 투명(또는 반투명)하게 처리되어, 앱 UI가 시스템 바 아래까지 확장됩니다^2^4^6.
- UI 겹침 이슈: TopAppBar, BottomNavigationBar, FAB 등 주요 UI 컴포넌트가 시스템 바와 겹칠 수 있습니다. 이로 인해 버튼이 눌리지 않거나, 텍스트가 가려지는 문제가 발생할 수 있습니다^1.
3. 마이그레이션 핵심 체크리스트
- 인셋(WindowInsets) 처리
시스템 바와 겹치는 UI 요소에 적절한 패딩을 주어야 합니다. 단말마다 시스템 바 크기가 다르므로, 고정값이 아닌 인셋 값을 동적으로 적용해야 합니다^1.
ViewCompat.setOnApplyWindowInsetsListener(view) { v, insets ->
val statusBar = insets.getInsets(WindowInsetsCompat.Type.statusBars()).top
val navigationBar = insets.getInsets(WindowInsetsCompat.Type.navigationBars()).bottom
v.setPadding(0, statusBar, 0, navigationBar)
insets
}
- Material3(Compose) 등 최신 컴포넌트 활용
최신 Material 컴포넌트는 인셋 처리를 자동으로 지원합니다. 커스텀 뷰나 레거시 레이아웃은 직접 인셋을 적용해야 합니다. - enableEdgeToEdge() 함수
Android 14 이하 버전 호환을 위해서는androidx.activity:activity-ktx
의enableEdgeToEdge()
를 사용해 수동 적용이 필요합니다.
Android 15 이상에서는 별도 호출 없이 자동 적용됩니다^2^4.
4. 마이그레이션 단계별 가이드
- targetSdkVersion을 35로 올린다.
- 앱 전반의 UI가 시스템 바와 겹치지 않는지 점검한다.
- 필요한 곳에 인셋을 적용해 UI 겹침을 해결한다.
- Android 14 이하 지원이 필요하다면 enableEdgeToEdge()를 onCreate에서 호출한다.
5. 마이그레이션 시 주의사항
- 고정 패딩 대신 WindowInsets를 사용해야 다양한 단말에서 안전하게 대응할 수 있습니다^6.
- 시스템 바 색상 제어가 제한되므로, 앱의 디자인 시스템을 점검해야 합니다.
- UI 테스트를 통해 모든 화면에서 콘텐츠가 정상적으로 표시되는지 꼼꼼히 확인해야 합니다.
Android 15(API 35) 이상을 타겟팅하면 Edge-to-Edge가 강제로 적용되어, 인셋 처리 없이 기존 방식으로 개발된 앱은 일부 UI가 시스템 바에 가려질 수 있습니다. 마이그레이션 시 반드시 인셋 처리를 점검하세요^1^6.
참고:
⁂
반응형
'안드로이드 개발' 카테고리의 다른 글
Android Compose에서 퍼미션 요청하기 (0) | 2025.06.05 |
---|---|
Android 개발에서 Edge-to-Edge란? (0) | 2025.06.04 |
Eclipse, IntelliJ에서 Live Templates를 이용한 빠른 레이아웃 구성 (0) | 2014.04.24 |