- 语法:
-
<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:requiresSmallestWidthDp
、android:compatibleWidthLimitDp
和android: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
- 另请参阅:
本页面上的内容和代码示例受内容许可部分所述许可的限制。Java 和 OpenJDK 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2024-08-20。
[]
[]
{
"last_modified": "最后更新时间 (UTC):2024-08-20。",
"state": ""
}