적응형 앱은 전체 기기 화면, 크기 조절이 가능한 모든 크기의 디스플레이를 지원합니다. 멀티 윈도우 모드의 창, 세로 및 가로 방향, 접힌 창 폴더블 기기의 펼친 디스플레이입니다.
간단한 구성 설정 및 API 목록을 통해 적응형 빌드 있습니다. 하지만 일부 오래된 설정 및 API가 적응형 앱과 호환되지 않습니다. 피해야 합니다
크기 조정 가능 여부
적응형 앱은 앱 크기 조절 기능과 멀티 윈도우 모드를 지원합니다.
resizeableActivity
속성: <activity>
및
<application>
매니페스트 요소는 멀티 윈도우를 사용 설정 또는 사용 중지합니다.
Android 11 (API 수준 30) 이하에서 사용 가능합니다. Android 12 (API 수준 31) 및
높은 해상도의 대형 화면에서는 화면 크기에 관계없이 멀티 윈도우 모드를 지원합니다.
속성의 값을 제공합니다. 자세한 내용은 멀티 윈도우 모드 지원을 참고하세요.
앱을 사용 설정하여 멀티 윈도우, 멀티태스킹 시나리오에 참여하세요. 사용자 생산성과 만족도가 증가했습니다.
앱이 API 수준 24 미만을 타겟팅하는 경우 resizeableActivity="true"
를 설정합니다.
Android 7.0 (API)의 경우 기본적으로 true
입니다.
수준 24) 이상이 필요합니다.
API 수준에 resizeableActivity="false"
를 설정하지 마세요. 앱을 제외하지 않음
멀티 윈도우 모드와 관련된 사용 사례를
살펴보겠습니다
방향
적응형 앱은 디스플레이와 관계없이 세로 모드 및 가로 모드 방향을 지원합니다. 크기 또는 윈도잉 모드일 수 있습니다.
screenOrientation
매니페스트 설정은 활동 방향을 제한합니다.
앱 매니페스트에서 screenOrientation
설정을 제거합니다.
앱의 방향을 잠가도 창 크기 변경은 차단되지 않습니다. 앱:
멀티 윈도우 모드로 전환될 때나 기기를 접거나 펼칠 때 크기가 조절됨
또는 자유형 창의 크기를 조절할 때 생성됩니다. 앱이 기간의 변경사항을 지원해야 함
screenOrientation
속성 설정과 관계없이 모든 크기입니다.
활동 방향을 제한하지 않습니다. 방향을 잠그는 앱은 레터박스 처리됩니다. 대형 화면 기기 및 호환되지 않는 창 크기에서 발생합니다.
레터박스 처리된 앱은 다음 기간 동안 Google Play에서 검색 가능성이 낮아질 수 있습니다. 태블릿, 폴더블, ChromeOS 기기를 지원합니다.
가로세로 비율
화면과 창 크기가 다양하므로 가로세로 비율도 다릅니다(가로 모드부터 세로 모드까지, 좁음, 정사각형, 짧음, 넓음으로 설정할 수 있습니다
minAspectRatio
및 maxAspectRatio
매니페스트 설정은 다음을 제한합니다.
하드 코딩된 값에 대한 앱의 가로세로 비율을 나타냅니다.
상대적인 크기와 관계없이 디스플레이에 맞게 앱을 조정합니다.
앱에서 minAspectRatio
및 maxAspectRatio
설정 삭제
합니다. 또는 앱의 크기를 조절할 수 있고 가로세로 비율이 자체적으로 처리되는지 확인합니다.
크기 조절 가능 여부 섹션을 참고하세요.
앱의 상대적인 크기를 제어하려고 하지 마세요. 앱이 가로 세로 비율이 호환되지 않는 창 또는 화면이 앱이 레터박스 처리됩니다.
Android 14 (API 수준 34) 이상에서는 사용자가 앱 가로세로 비율을 재정의할 수 있습니다. 레터박스 처리된 앱을 확장하여 사용 가능한 디스플레이 영역을 채웁니다. 기기 호환 모드가 됩니다.
창 크기
다양한 디스플레이 크기에 맞게 레이아웃을 최적화하는 것이 적응형 디자인 적응형 앱은 기기가 아닌 앱 창 크기에 중점을 둡니다. 화면 크기 앱이 전체 화면인 경우 앱 창은 기기 화면입니다.
창 크기 클래스는 체계적인 방법으로 결정하고 분류하는 방법을 제공합니다. 앱 창의 크기와 같습니다. 레이아웃을 창으로 변경하여 앱 조정 앱의 크기 클래스를 변경하는 것입니다.
창 크기 클래스에 따라 앱 창 크기를 평가합니다.
창 크기 클래스를 확인하려면 currentWindowAdaptiveInfo()
를 사용합니다.
Compose Material 3 적응형 라이브러리의 최상위 함수입니다. 자세히 알아보기
자세한 내용은 적응형 앱 빌드를 참고하세요.
창 크기 클래스 정의와 빌드되었습니다 지원 중단된 API를 사용하여 창 크기를 계산하지 마세요.
지원 중단된 API
이전 플랫폼 API는 앱 창을 올바르게 측정하지 않습니다. 어떤 것은 기기 화면(일부는 시스템 장식 제외)
WindowManager#getCurrentWindowMetrics()
및
WindowMetrics#getBounds()
: 앱 창의 크기를 가져옵니다. 사용
WindowMetrics#getDensity()
: 디스플레이 밀도를 가져옵니다.
다음의 지원 중단된 Display
API를 사용하여 창 크기를 확인하지 마세요.
getSize()
: Android 11 (API 수준 30)에서 지원 중단됨getMetrics()
: Android 11 (API 수준 30)에서 지원 중단됨getRealSize()
: Android 12 (API 수준 31)에서 지원 중단됨getRealMetrics()
: Android 12 (API 수준 31)에서 지원 중단됨
Compose
Jetpack Compose는 적응형 UI 개발을 위해 설계되었습니다. XML 및 레이아웃 없음
파일, 리소스 한정자 없음 Kotlin 기반의 스테이트리스(Stateless) 컴포저블만
UI, 수정자를 설명하는 Column
, Row
, Box
등
UI에 동작을 추가하는 offset
, padding
, size
등입니다.
요소
Compose를 사용하여 빌드합니다. 최신 기능 및 출시에 대한 최신 정보를 확인하세요.
오래된 기술에 의존하지 마세요. 앱이 쓸모없게 되지 않도록 하세요.
Compose Material 3 적응형 라이브러리
Compose Material 3 적응형 라이브러리는 적응형 앱의 개발을 촉진하는 것을 목표로 합니다.
적응형 앱을 만들려면 다음 API를 사용하세요.
NavigationSuiteScaffold
: 탐색 메뉴와 탐색 메뉴 간에 전환합니다. 탐색 레일ListDetailPaneScaffold
: 목록-세부정보 표준 레이아웃을 구현합니다. 앱 창 크기에 맞게 레이아웃을 조정합니다.SupportingPaneScaffold
: 지원 창을 표준으로 구현합니다. 있습니다.
시간을 낭비하지 마세요. 개발자 생산성 향상을 놓치지 마세요 모두 Jetpack Compose 라이브러리에서 제공됩니다.
레이아웃
사용자는 앱이 추가 디스플레이 광고를 통해 사용 가능한 디스플레이 공간을 최대한 활용하기를 기대합니다. 기능이 강화됩니다.
적응형 앱은 디스플레이의 변화, 특히 앱 창의 크기 변경이나 기기 상태 변경
창 크기가 변경될 때 UI 구성요소를 변경하여 사용 가능한 있습니다. 예를 들어 좁게에 사용된 하단 탐색 메뉴를 바꿉니다. 중형 및 확장형 창의 세로 탐색 레일의 창 크기 모든 디스플레이에서 도달할 수 있도록 대화상자 위치를 변경합니다.
콘텐츠를 창으로 정리하여 다음과 같은 다중 창 레이아웃을 지원합니다. 동적 콘텐츠 표시를 위한 목록 세부정보 및 지원 창
콘텐츠 창을 사용하지 않는 경우 UI 요소를 확장하여 채우지 마세요.
표시합니다. 텍스트가 긴 것은 읽기 어렵습니다. 늘어남
디자인이 잘못된 것 같습니다. Modifier.fillMaxWidth
를 사용하는 경우
모든 디스플레이 크기에 적합한 동작이라고 가정합니다.
입력 기기
사용자는 앱과 상호작용하기 위해 단순히 터치스크린을 사용하지 않습니다.
적응형 앱은 외부 키보드, 마우스, 스타일러스를 지원하여 향상된 사용자 경험을 제공하고 사용자가 폼 팩터에서 생산성을 높일 수 있도록 있습니다.
Android 프레임워크의 내장된 기능을 키보드 탭 탐색과 마우스 또는 트랙패드 클릭, 선택, 스크롤을 지원합니다. 게시 앱의 단축키는 단축키 도우미에서 확인할 수 있습니다.
사용자는 Jetpack Material 3 라이브러리를 사용하여
스타일러스를 사용하는 TextField
구성요소
다른 입력 방법을 사용할 수 없도록 하지 마세요. 접근성 소개하지 않음 있습니다
요약
- Compose 및 Material 3 적응형 라이브러리로 앱 빌드
- 창 크기 클래스의 기본 레이아웃
- 다중 창 레이아웃 만들기
- 앱을 크기 조절 가능하게 지정
- 활동 방향을 잠그지 않음
- 가로세로 비율을 제한하지 않음
- 터치 이외의 입력 지원
- 지원 중단된 API 피하기
✓ 사용자가 기대하는 대로 행동합니다. 사용자가 매일 사용하는 다양한 기기에 맞게 앱을 최적화할 수 있습니다.
✗ 기다리지 마세요. 지금 시작하세요!