앱 방향, 가로세로 비율, 크기 조절 가능 여부

Android 앱은 스마트폰, 태블릿, 폴더블, Chromebook, 자동차, TV, XR 등 모든 종류의 기기에서 실행됩니다. 이러한 다양한 환경에 적응하려면 앱이 모든 기기 폼 팩터와 디스플레이 크기를 지원해야 합니다.

Android 16 (API 수준 36)을 사용하면 앱이 화면 방향, 가로세로 비율, 크기 조절 가능성에 대한 앱 제한을 재정의하여 다양한 폼 팩터와 디스플레이 크기에 맞게 조정할 수 있습니다. 재정의는 최소 너비가 600dp를 초과하는 기기에 적용되며 다음을 정의합니다.

  • 태블릿
  • 대형 화면 폴더블의 내부 디스플레이
  • 데스크톱 창 모드 (모든 폼 팩터)

API 수준 36을 타겟팅하는 앱은 크기를 조절할 수 있으며 디스플레이의 최소 너비가 600dp 이상인 경우 멀티 윈도우 모드 (resizeableActivity="true"와 동일)로 전환할 수 있습니다.

Android 16 이전에는 앱이 펼쳐진 대형 화면 기기에서 레터박스 처리되지만 Android 16을 타겟팅하는 경우에는 전체 화면으로 표시됩니다. 앱이 레터박스 처리된 화면이 아닌 전체 화면일 때 더 많은 뉴스 항목을 표시합니다.
그림 1. 이전에 대형 화면 기기 (왼쪽)에서 레터박스 처리된 개발자 뉴스 피드는 Android 16(오른쪽)을 타겟팅할 때 전체 화면으로 실행됩니다.

Android 16은 기기 방향, 가로세로 비율, 디스플레이 크기에 관한 사용자 환경설정을 준수하여 사용자 환경을 최적화하는 일관된 적응형 앱 디자인 모델을 시행합니다.

변경사항

대형 화면에서 Android 16 (API 수준 36)을 타겟팅하는 앱의 경우 다음 매니페스트 속성과 API가 무시됩니다.

속성 또는 API 무시된 값
screenOrientation portrait, landscape, reversePortrait, reverseLandscape, sensorPortrait, sensorLandscape, userPortrait, userLandscape
resizeableActivity 모두
minAspectRatio 모두
maxAspectRatio 모두
setRequestedOrientation()

getRequestedOrientation()
portrait, landscape, reversePortrait, reverseLandscape, sensorPortrait, sensorLandscape, userPortrait, userLandscape

예외

Android 16 변경사항의 예외는 다음과 같습니다.

  • sw600dp보다 작은 디스플레이 (대부분의 휴대전화, 플립형 스마트폰, 대형 화면 폴더블의 외부 디스플레이)

  • android:appCategory 플래그를 기반으로 하는 게임

    Android App Bundle 및 Play 앱 서명을 사용하여 게임을 게시하면 Google Play에서 플래그를 관리하고 App Bundle의 이점을 자동으로 제공할 수 있습니다. 앱 매니페스트 개요도 참고하세요.

  • 사용자가 가로세로 비율 설정에서 앱의 기본 동작을 선택함

선택 해제

API 수준 36 동작을 선택 해제하려면 PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY 매니페스트 속성을 선언합니다.

특정 활동을 선택 해제하려면 <activity> 요소에서 속성을 설정합니다.

<activity ...>
    <property
        android:name="android.window.PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY"
        android:value="true" />
    ...
</activity>

앱 전체에서 선택 해제하려면 <application> 요소에서 속성을 설정합니다.

<application ...>
    <property
        android:name="android.window.PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY"
        android:value="true" />
    ...
</application>

테스트

앱이 Android 16 변경사항의 영향을 받는지 테스트하려면 Android 스튜디오에서 Pixel Tablet 및 Pixel Fold 시리즈 에뮬레이터를 사용하고 앱의 모듈 build.gradle 파일에서 targetSdkPreview = "Baklava"를 설정하세요.

또는 UNIVERSAL_RESIZABLE_BY_DEFAULT 플래그를 사용 설정하여 테스트 기기에서 앱 호환성 프레임워크를 사용합니다 (호환성 프레임워크 도구 참고).

Espresso 테스트 프레임워크와 Jetpack Compose 테스트 API를 사용하여 테스트를 자동화할 수 있습니다.

일반적인 문제

기기 방향, 가로세로 비율 또는 앱 크기 조절 가능 여부를 제한하는 앱은 Android 16에서 겹치는 레이아웃과 같은 디스플레이 문제가 발생할 수 있습니다.

휴대전화, 폴더블, 태블릿, Chromebook, 자동차 디스플레이 또는 XR에서 최적의 사용자 환경을 제공하려면 반응형 및 적응형으로 앱을 빌드하세요.

  • UI 구성요소 늘리기 피하기: 표준 세로 모드 휴대전화 화면에 맞게 설계된 레이아웃은 다른 가로세로 비율을 수용할 수 없을 가능성이 높습니다. 예를 들어 디스플레이의 전체 너비를 채우는 UI 요소는 가로 모드 방향에서 늘어난 것처럼 표시됩니다. 늘어나지 않도록 구성요소에 최대 너비를 추가합니다.

  • 스크롤하도록 레이아웃 사용 설정: 레이아웃이 스크롤되지 않으면 사용자가 가로 모드 방향에서 화면 밖의 버튼이나 기타 UI 요소에 액세스하지 못할 수 있습니다. 디스플레이 높이와 관계없이 모든 콘텐츠에 액세스할 수 있도록 앱 레이아웃이 스크롤되도록 사용 설정합니다.

  • 세로 모드와 가로 모드에서 카메라 호환성 보장: 카메라 센서에 대해 특정 가로세로 비율과 방향을 가정하는 카메라 뷰파인더 미리보기는 비규격 디스플레이에서 미리보기가 늘어나거나 뒤집힐 수 있습니다. 방향 변경 시 뷰파인더가 올바르게 회전하는지 확인합니다. 뷰파인더가 센서 가로세로 비율과 다른 UI 가로세로 비율에 맞게 조정되도록 사용 설정합니다.

  • 창 크기 변경 중에 상태 유지: 방향 및 가로세로 비율 제한을 삭제하면 사용자가 앱을 사용하는 방식(예: 기기 회전, 접기, 펼치기 또는 멀티 윈도우 또는 데스크톱 창 모드에서 앱 크기 조절)에 따라 앱 창 크기가 자주 변경될 수 있습니다. 방향 변경 및 창 크기 조절과 같은 구성 변경으로 인해 기본적으로 활동이 다시 생성됩니다. 최적의 사용자 환경을 보장하려면 구성 변경 중에 앱 상태를 보존하여 앱이 데이터 (예: 양식 입력)를 유지하고 사용자가 컨텍스트를 유지할 수 있도록 하세요.

  • 창 크기 클래스 사용: 기기별 맞춤설정 없이 다양한 창 크기와 가로세로 비율을 지원합니다. 창 크기가 자주 변경된다고 가정합니다. 창 크기 클래스를 사용하여 창 크기를 특성화한 다음 적절한 적응형 레이아웃을 적용합니다.

  • 반응형 레이아웃 빌드: 창 크기 클래스 내에서 반응형 레이아웃은 디스플레이 크기의 변경사항에 맞게 조정되어 항상 최적의 앱 프레젠테이션을 만듭니다.

타임라인

  • Android 16 (2025): 모든 방향 및 가로세로 비율과 앱 크기 조절 지원은 API 수준 36을 타겟팅하는 앱의 대형 화면 기기(가장 작은 화면 너비 600dp 이상)의 기준 환경입니다. 그러나 개발자는 선택 해제할 수 있습니다.

  • 2026년 Android 출시: 모든 방향 및 가로세로 비율 지원과 앱 크기 조절 가능 여부는 API 수준 37을 타겟팅하는 앱의 대형 화면 기기 (가장 작은 화면 너비 600dp 이상)의 기준 환경이 됩니다. 개발자는 선택 해제할 수 없습니다.

대상 API 수준 대상 기기 개발자 선택 해제 허용됨
36 (Android 16) 대형 화면 기기 (가장 작은 화면 너비 >= 600dp)
37 (예상됨) 대형 화면 기기 (가장 작은 화면 너비 >= 600dp) 아니요

특정 API 수준을 타겟팅하는 기한은 앱 스토어마다 다릅니다. Google Play에서는 2026년 8월부터 앱이 API 수준 36을, 2027년 8월부터 API 수준 37을 타겟팅하도록 요구합니다.

추가 리소스