<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 요소가 있는 경우 이러한 UI 요소는 UI에 사용할 수 없는 화면 픽셀이므로 시스템에서는 이를 고려하여 기기의 smallestWidth를 실제 화면 크기보다 작게 선언합니다. 따라서 사용하는 값은 화면의 현재 방향에 관계없이 레이아웃에서 필요한 최소 너비여야 합니다.

애플리케이션이 작은 크기 또는 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
참고 항목