<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>
说明:
使您能够指定应用支持的屏幕尺寸,并为比应用支持的最大屏幕还大的屏幕启用屏幕兼容模式。请务必始终在应用中使用此元素指定应用支持的屏幕尺寸。

注意:建议不要在屏幕兼容模式下运行应用,因为它会因缩放而导致界面中出现像素化和模糊。让应用在大屏幕上正常运行的正确方法是遵循支持多种屏幕指南,并为不同尺寸的屏幕提供备用布局。

如果应用可以适当调整大小以填充整个屏幕,那么它就“支持”指定的屏幕尺寸。由系统应用的标准大小调整方式对于大多数应用来说效果不错,您无需执行任何额外操作即可让应用在比手机更大的屏幕上运行。不过,通常需要通过提供备用布局资源来优化应用的界面,以适应不同的屏幕尺寸。例如,与在手机上运行时相比,您可能需要修改 Activity 在平板电脑上的布局。

不过,如果应用在调整大小以适应不同的屏幕尺寸时效果不佳,您可以使用 <supports-screens> 元素的属性来控制是将应用分发到较小的屏幕,还是使用系统的屏幕兼容模式放大(“缩放”)界面以适应较大的屏幕。如果您未针对较大屏幕尺寸进行设计,并且标准大小调整方式无法达到理想的效果,则屏幕兼容模式会通过模拟标准尺寸屏幕和中密度然后再放大来缩放界面,以使其填充整个屏幕。请注意,这会导致界面像素化和变模糊,因此最好针对大屏幕优化界面。

注意:Android 3.2 引入了新属性:android:requiresSmallestWidthDpandroid:compatibleWidthLimitDpandroid:largestWidthLimitDp。如果您要针对 Android 3.2 及更高版本开发应用,则应使用这些属性(而不是基于通用屏幕尺寸的属性)声明屏幕尺寸支持。

屏幕兼容模式简介

只有在万不得已时,才可以针对无法充分利用较大屏幕尺寸的应用使用屏幕兼容模式。建议不要在此模式下运行应用,因为它会导致用户体验不佳。屏幕兼容模式有两种不同的版本,具体取决于运行应用的设备版本。

在 Android 版本 1.6 至 3.1 中,系统会在“邮票式”窗口中运行您的应用。它会模拟 320dp x 480dp 屏幕,并用黑色边框填充屏幕的剩余区域。

在 Android 3.2 及更高版本上,系统会像在 320dp x 480dp 屏幕上一样绘制布局,然后将其放大以填充屏幕。这通常会导致界面中出现模糊和像素化之类的失真。

如需详细了解如何正确支持不同的屏幕尺寸以免在应用中使用屏幕兼容模式,请参阅支持多种屏幕一文。

属性:
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 是必须为应用界面提供的屏幕空间的最短边尺寸(以 dp 为单位),也是可用屏幕的两个尺寸中的最短尺寸。因此,为了使设备与您的应用兼容,设备的 smallestWidth 必须等于或大于此值。(通常,您为此属性提供的值是布局支持的“最小宽度”,无论当前屏幕方向如何。)

例如,典型手机屏幕的 smallestWidth 为 320dp,7 英寸平板电脑的 smallestWidth 为 600dp,10 英寸平板电脑的 smallestWidth 为 720dp。这些值通常为 smallestWidth,因为它们是屏幕可用空间的最短边尺寸。

与您的值进行比较的尺寸将屏幕装饰和系统界面都考虑在内。例如,如果设备的屏幕上有一些永久性界面元素,则系统会将设备的 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
另请参阅: