<supports-screens>

문법:
<supports-screens android:resizeable=["true"| "false"]
                  android:smallScreens=["true" | "false"]
                  android:normalScreens=["true" | "false"]
                  android:largeScreens=["true" | "false"]
                  android:xlargeScreens=["true" | "false"]
                  android:anyDensity=["true" | "false"]
                  android:requiresSmallestWidthDp="integer"
                  android:compatibleWidthLimitDp="integer"
                  android:largestWidthLimitDp="integer"/>
포함된 위치:
<manifest>
설명

애플리케이션에서 지원하는 화면 크기를 지정하고 사용하는 화면이 애플리케이션에서 지원하는 화면보다 큰 경우 화면 호환 모드를 사용 설정할 수 있게 합니다. 애플리케이션에서 항상 이 요소를 사용하여 애플리케이션에서 지원하는 화면 크기를 지정하는 것이 중요합니다.

참고: 화면 호환 모드에서는 애플리케이션을 실행하지 않는 것이 좋습니다. 확대/축소로 인해 UI에 픽셀화 및 블러가 발생합니다. 대형 화면에서 애플리케이션이 잘 작동하도록 하려면 화면 호환성 개요를 따르고 다양한 화면 크기용 대체 레이아웃을 제공하세요.

애플리케이션에서 크기를 올바로 조절하여 전체 화면을 채우는 경우 특정 화면 크기를 '지원'하는 것입니다. 대부분의 애플리케이션에서는 시스템에서 적용하는 일반 크기 조절이 잘 작동하므로 핸드셋 기기보다 큰 화면에서 애플리케이션을 작동하기 위해 추가 작업을 할 필요가 없습니다.

하지만 대체 레이아웃 리소스를 제공하여 다양한 화면 크기에 맞게 애플리케이션의 UI를 최적화하는 것이 중요한 경우도 있습니다. 예를 들어 핸드셋 기기에서 실행할 때와 태블릿에서 실행할 때를 비교하여 활동의 레이아웃을 수정할 수 있습니다.

하지만 다양한 화면 크기에 맞게 크기를 조절했을 때 애플리케이션이 제대로 작동하지 않으면 <supports-screens> 요소의 속성을 사용하여 애플리케이션을 더 작은 화면에만 배포할지 아니면 시스템의 화면 호환 모드를 사용하여 더 큰 화면에 맞게 앱의 UI를 확장('확대/축소')할지 제어할 수 있습니다.

큰 화면 크기에 맞게 설계하지 않았고 일반 크기 조절을 통해 적절한 결과를 얻지 못하는 경우 화면 호환 모드는 일반 화면 크기와 중밀도를 에뮬레이션하여 UI를 확장합니다. 그런 다음 전체 화면을 채우도록 확대합니다. 이 경우 UI의 픽셀화와 블러가 발생하므로 대형 화면에 맞춰 UI를 최적화하는 것이 좋습니다.

참고: Android 3.2에는 android:requiresSmallestWidthDp, android:compatibleWidthLimitDp, android:largestWidthLimitDp라는 새로운 속성이 도입되었습니다. Android 3.2 이상 버전용 애플리케이션을 개발하는 경우 일반화된 화면 크기 기반 속성 대신 이러한 속성을 사용하여 화면 크기 지원을 선언하세요.

화면 호환 모드 정보

화면 호환 모드는 큰 화면 크기를 활용하도록 적절하게 설계되지 않은 앱을 위한 마지막 수단입니다. 이 모드는 사용자 환경을 저하할 수 있으므로 앱을 실행하기에 좋은 모드는 아닙니다. 앱이 실행되는 기기 버전에 따라 두 가지 버전의 화면 호환 모드가 있습니다.

Android 버전 1.6~3.1에서는 애플리케이션이 '우표'만한 작은 창에서 실행됩니다. 320dpx480dp 화면을 에뮬레이션하고 화면의 나머지 영역을 검은색 테두리로 채웁니다.

Android 3.2 이상에서는 시스템에서 320dpx480dp 화면에서와 같이 레이아웃을 그린 다음 확장하여 화면을 채웁니다. 이로 인해 UI에 블러와 픽셀화 같은 아티팩트가 종종 발생합니다.

다양한 화면 크기를 올바로 지원하여 애플리케이션에서 화면 호환 모드를 사용하지 않도록 하는 방법에 관한 자세한 내용은 화면 호환성 개요를 참고하세요.

속성:
android:resizeable
애플리케이션에서 다양한 화면 크기에 맞게 크기를 조절할 수 있는지 여부를 나타냅니다. 이 속성은 기본적으로 "true"입니다. "false"로 설정하면 시스템이 대형 화면에서 화면 호환 모드로 애플리케이션을 실행합니다.

이 속성은 지원 중단되었습니다. 여러 화면 지원이 처음 도입되었을 때 Android 1.5에서 1.6으로의 애플리케이션 전환을 지원하기 위해 도입된 속성으로, 사용하지 마세요.

android:smallScreens
애플리케이션에서 '소형' 화면 폼 팩터를 지원하는지 여부를 나타냅니다. 소형 화면은 '일반' 화면 또는 기존 HVGA 화면보다 가로세로 비율이 작은 화면으로 정의됩니다. 소형 화면을 지원하지 않는 애플리케이션은 플랫폼에서 이러한 애플리케이션을 더 작은 화면에서 작동하도록 할 수 있는 작업이 거의 없으므로 Google Play와 같은 외부 서비스의 소형 화면 기기에서 사용할 수 없습니다. 기본적으로 "true"입니다.
android:normalScreens
애플리케이션에서 '일반' 화면 폼 팩터를 지원하는지 여부를 나타냅니다. 기존에는 일반 화면이 HVGA 중밀도 화면이지만 WQVGA 저밀도 및 WVGA 고밀도도 일반으로 간주됩니다. 이 속성은 기본적으로 "true"입니다.
android:largeScreens
애플리케이션에서 '대형' 화면 폼 팩터를 지원하는지 여부를 나타냅니다. 대형 화면은 '일반' 핸드셋 화면보다 훨씬 큰 화면으로 정의됩니다. 따라서 대형 화면을 잘 사용하려면 애플리케이션 측에서 특별히 주의해야 할 수 있습니다. 하지만 시스템의 크기 조절을 사용하여 화면을 채울 수도 있습니다.

기본값은 버전마다 다르므로 이 속성을 명시적으로 선언하는 것이 좋습니다. "false"로 설정하면 일반적으로 화면 호환 모드가 사용 설정됩니다.

android:xlargeScreens
애플리케이션에서 '초대형' 화면 폼 팩터를 지원하는지 여부를 나타냅니다. 초대형 화면은 태블릿이나 더 큰 기기와 같이 '대형' 화면보다 훨씬 큰 화면으로 정의됩니다. 초대형 화면을 잘 사용하려면 애플리케이션 측에서 특별히 주의해야 할 수 있습니다. 하지만 시스템의 크기 조절을 사용하여 화면을 채울 수도 있습니다.

기본값은 버전마다 다르므로 이 속성을 명시적으로 선언하는 것이 좋습니다. "false"로 설정하면 일반적으로 화면 호환 모드가 사용 설정됩니다.

API 수준 9에서 도입된 속성입니다.

android:anyDensity
애플리케이션에 모든 화면 밀도를 처리할 수 있는 리소스가 포함되어 있는지 여부를 나타냅니다.

Android 1.6(API 수준 4) 이상을 지원하는 애플리케이션에서는 기본적으로 "true"입니다. 애플리케이션이 작동하는 데 꼭 필요하다고 확신하지 않는 한 "false"로 설정하지 마세요. 앱에서 비트맵을 직접 조작하는 경우에만 이를 사용 중지해야 할 수 있습니다. 자세한 내용은 화면 호환성 개요를 참고하세요.

android:requiresSmallestWidthDp
앱에 필요한 최소 smallestWidth를 지정합니다. smallestWidth는 애플리케이션 UI에 사용할 수 있어야 하는 가장 짧은 화면 공간 크기(dp 단위)입니다. 즉, 사용 가능한 화면의 두 크기 중 가장 짧은 값입니다.

기기가 애플리케이션과 호환되는 것으로 간주되려면 기기의 smallestWidth가 이 값보다 크거나 같아야 합니다. 일반적으로 이를 위해 제공하는 값은 화면의 현재 방향과 관계없이 레이아웃에서 지원하는 '가장 작은 너비'입니다.

예를 들어 일반적인 핸드셋 화면의 smallestWidth는 320dp이고 7인치 태블릿의 smallestWidth는 600dp이며 10인치 태블릿의 smallestWidth는 720dp입니다. 이러한 값은 화면에서 사용 가능한 공간의 가장 짧은 크기이므로 일반적으로 smallestWidth입니다.

값이 비교되는 크기는 화면 장식 및 시스템 UI를 고려합니다. 예를 들어 기기의 디스플레이에 영구 UI 요소가 있는 경우 시스템에서는 기기의 smallestWidth를 실제 화면 크기보다 작게 선언합니다. 이러한 UI 요소는 UI에 사용할 수 없는 화면 픽셀이기 때문입니다.

애플리케이션이 '작은' 크기 또는 320dp의 최소 너비까지 더 작은 화면 크기로 올바르게 조절되는 경우 이 속성을 사용할 필요가 없습니다. 제대로 조절되지 않으면 최소 화면 너비 한정자(sw<N>dp)에 애플리케이션에서 사용하는 가장 작은 값과 일치하는 값을 이 속성에 사용합니다.

주의: Android 시스템은 이 속성에 주의를 기울이지 않으므로 이 속성은 런타임에 애플리케이션의 동작 방식에 영향을 미치지 않습니다. 대신 이 속성은 Google Play와 같은 서비스에서 애플리케이션의 필터링을 사용 설정하는 데 사용됩니다. 그러나 Google Play에서는 현재 Android 3.2에서 필터링하는 데 이 속성을 지원하지 않으므로 애플리케이션이 소형 화면을 지원하지 않으면 다른 크기 속성을 계속 사용합니다.

API 수준 13에서 도입된 속성입니다.

android:compatibleWidthLimitDp
이 속성을 사용하면 애플리케이션이 설계된 '최소 화면 너비' 최댓값을 지정하여 화면 호환 모드를 사용자 선택사항 기능으로 사용하도록 설정할 수 있습니다. 기기의 사용 가능한 화면에서 가장 작은 측면이 여기 나온 값보다 큰 경우에도 사용자는 애플리케이션을 설치할 수 있지만 화면 호환 모드로 애플리케이션을 실행하라는 안내를 받습니다.

기본적으로 화면 호환 모드는 사용 중지되며 레이아웃은 평소처럼 화면에 맞게 크기가 조절됩니다. 사용자가 화면 호환 모드를 전환할 수 있는 버튼이 시스템 표시줄에 제공됩니다.

애플리케이션이 모든 화면 크기와 호환되고 레이아웃 크기가 적절히 조절되는 경우 이 속성을 사용할 필요가 없습니다.

참고: 현재 화면 호환 모드는 너비가 320dp인 핸드셋 화면만 에뮬레이션하므로 android:compatibleWidthLimitDp 값이 320보다 큰 경우 화면 호환 모드가 적용되지 않습니다.

API 수준 13에서 도입된 속성입니다.

android:largestWidthLimitDp
이 속성을 사용하면 애플리케이션이 설계된 '최소 화면 너비' 최댓값을 지정하여 화면 호환 모드를 강제로 사용하도록 설정할 수 있습니다. 기기의 사용 가능한 화면에서 가장 작은 측면이 여기 나온 값보다 큰 경우 애플리케이션은 화면 호환 모드로 실행되며 이때 사용자에게는 이를 사용 중지할 방법이 없습니다.

애플리케이션이 모든 화면 크기와 호환되고 레이아웃 크기가 적절히 조절되는 경우 이 속성을 사용할 필요가 없습니다. 그 외의 경우에는 먼저 android:compatibleWidthLimitDp 속성을 사용해 보세요. 대형 화면에 맞게 크기를 조절했을 때 애플리케이션 기능이 작동하지 않고 화면 호환 모드가 애플리케이션을 사용할 수 있는 유일한 방법인 경우에만 android:largestWidthLimitDp 속성을 사용하세요.

참고: 현재 화면 호환 모드는 너비가 320dp인 핸드셋 화면만 에뮬레이션하므로 android:largestWidthLimitDp 값이 320보다 큰 경우 화면 호환 모드가 적용되지 않습니다.

API 수준 13에서 도입된 속성입니다.

도입 수준:
API 수준 4
참고 항목: