<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通常很重要。例如,与在手机设备上运行时相比,您可能希望在平板电脑上修改活动的布局。
但是,如果在调整大小以适应不同的屏幕大小时应用程序无法正常工作,则可以使用<supports-screens>元素的属性来控制是将应用程序分发到较小的屏幕还是将其UI放大(“缩放” “)使用系统的屏幕兼容模式适应更大的屏幕。当您没有设计更大的屏幕尺寸并且正常的调整大小无法获得适当的结果时,屏幕兼容模式将通过模拟正常大小的屏幕和中等密度来缩放您的UI,然后放大以使其填满整个屏幕。请注意,这会导致UI的像素化和模糊,因此如果您针对大屏幕优化UI,则会更好。
注意:Android 3.2引入了新属性:android:requiresSmallestWidthDp,android:compatibleWidthLimitDp和android:largestWidthLimitDp。如果您正在为Android 3.2及更高版本开发应用程序,则应使用这些属性来声明屏幕大小支持,而不是基于通用屏幕大小的属性。
有关如何正确支持不同屏幕大小的更多信息,以便您可以避免在应用程序中使用屏幕兼容模式,请阅读支持多个屏幕。
属性:
android:resizeable
指示应用程序是否可针对不同的屏幕大小进行调整。默认情况下,此属性为true。如果设置为false,系统将在大屏幕上以屏幕兼容模式运行您的应用程序。
不推荐使用此属性。它被引入以帮助应用程序从Android 1.5过渡到1.6,当时首次引入了对多个屏幕的支持。你不应该使用它。
android:smallScreens
指示应用程序是否支持较小的屏幕外形。小屏幕被定义为具有比“普通”(传统HVGA)屏幕更小的宽高比的屏幕。对于来自外部服务(例如Google Play)的小屏幕设备,不支持小屏幕的应用程序将无法使用,因为平台几乎无法使这样的应用程序在较小的屏幕上工作。默认情况下这是“真实的”。
android:normalScreens
指示应用程序是否支持“正常”屏幕格式因子。传统上,这是HVGA中密度屏幕,但WQVGA低密度和WVGA高密度也被认为是正常的。默认情况下,此属性为“true”。
android:largeScreens
指示应用程序是否支持更大的屏幕外形。大屏幕被定义为比“普通”手机屏幕大得多的屏幕,因此可能需要对应用程序部分进行一些特别注意以充分利用它,尽管它可能依赖于系统调整大小以填充屏幕。
这个版本的默认值实际上在某些版本之间有所不同,因此如果您始终显式声明此属性,则更好。请注意,将其设置为“false”通常会启用屏幕兼容模式。
android:xlargeScreens
指示应用程序是否支持超大屏幕外形。 xlarge屏幕被定义为比“大”屏幕(例如平板电脑(或更大)更大)的屏幕,并且可能需要特别注意应用程序的部分才能充分利用它,尽管它可能依赖于调整大小由系统填充屏幕。
这个版本的默认值实际上在某些版本之间有所不同,因此如果您始终显式声明此属性,则更好。请注意,将其设置为“false”通常会启用屏幕兼容模式。
此属性是在API级别9中引入的。
android:anyDensity
指示应用程序是否包含适应任何屏幕密度的资源。
对于支持Android 1.6(API级别4)及更高级别的应用程序,默认情况下这是“true”,除非您完全确定应用程序必须运行,否则不应将其设置为“false”。唯一可能需要禁用此功能的是您的应用程序直接操作位图(有关详细信息,请参阅支持多屏幕文档)。
android:requiresSmallestWidthDp
指定所需的最小smallestWidth。 smallestWidth是屏幕空间的最短维度(以dp为单位),必须可供应用程序UI使用 - 也就是说,可用屏幕的两个维度中最短的。因此,为了使设备与您的应用程序兼容,设备的smallestWidth必须等于或大于此值。 (通常,您为此提供的值是布局支持的“最小宽度”,而不管屏幕的当前方向如何。)
例如,典型的手机屏幕具有320dp的最小宽度,7“平板电脑具有600dp的最小宽度,而10”平板电脑具有720dp的最小宽度。这些值通常是最小宽度,因为它们是屏幕可用空间的最短尺寸。
与您的值进行比较的大小考虑了屏幕装饰和系统UI。例如,如果设备在显示器上有一些持久性UI元素,系统会将设备的smallestWidth声明为小于实际屏幕大小的那个,因为这些UI元素是因为UI不可用的屏幕像素。因此,无论屏幕的当前方向如何,您使用的值都应该是布局所需的最小宽度。
如果您的应用程序针对较小的屏幕尺寸正确调整大小(缩小到小尺寸或最小宽度为320dp),则无需使用此属性。否则,您应该使用此属性的值,该值与应用程序用于最小屏幕宽度限定符(sw <N> dp)的最小值匹配。
注意:Android系统不关注此属性,因此它不会影响应用程序在运行时的行为方式。相反,它用于为您的应用程序启用Google Play等服务的过滤功能。但是,Google Play目前不支持此属性进行过滤(在Android 3.2上),因此如果您的应用程序不支持小屏幕,则应继续使用其他大小属性。
android:compatibleWidthLimitDp
此属性允许您通过指定应用程序设计的最大“最小屏幕宽度”来启用屏幕兼容模式作为用户可选功能。如果设备可用屏幕的最小侧面大于此处的值,则用户仍可以安装您的应用程序,但可以在屏幕兼容模式下运行它。默认情况下,屏幕兼容模式被禁用,您的布局会像往常一样调整大小以适应屏幕,但系统栏中有一个按钮,允许用户打开和关闭屏幕兼容模式。
如果您的应用程序与所有屏幕尺寸兼容并且其布局正确调整大小,则无需使用此属性。
注意:目前,屏幕兼容模式仅模拟宽度为320dp的手机屏幕,因此如果android:compatibleWidthLimitDp的值大于320,则不应用屏幕兼容模式。
此属性是在API级别13中引入的。
android:largestWidthLimitDp
此属性允许您通过指定应用程序设计的最大“最小屏幕宽度”来强制启用屏幕兼容性模式。如果设备可用屏幕的最小边大于此处的值,则应用程序将在屏幕兼容模式下运行,用户无法将其禁用。
如果您的应用程序与所有屏幕尺寸兼容并且其布局正确调整大小,则无需使用此属性。否则,您应该首先考虑使用android:compatibleWidthLimitDp属性。只有当您的应用程序在调整大屏幕时功能被破坏时才应使用android:largestWidthLimitDp属性,并且屏幕兼容模式是用户应该使用您的应用程序的唯一方式。
注意:目前,屏幕兼容模式仅模拟宽度为320dp的手机屏幕,因此如果android:largestWidthLimitDp的值大于320,则不应用屏幕兼容模式。
此属性是在API级别13中引入的。
引入于:
API Level 4
参阅:
- Supporting Multiple Screens
DisplayMetrics