SDK#屏幕兼容性模式

        若是你在Android3.0版本或低于Android3.0版本下开发了一款应用,并且它可以在大屏幕上(如平板电脑)合理的调整尺寸,为了保持更好的用户体验,你应该禁掉屏幕兼容性模式。android

        从Android1.6开始,安卓已支持各类屏幕尺寸,而且为了适配每种屏幕作了不少工做去改变应用布局的大小。可是,若是你的应用没有按照Supporting Multiple Screens指南行事,就可能在大屏幕上遇到麻烦,对于这种问题的应用程序,屏幕兼容性模式可让应用程序在大屏幕上表现的更好用一些。布局

        有两个版本的屏幕兼容性模式,它们略有不一样:spa

         Version 1 (Android 1.6 - 3.1)设计

        系统在一个“邮票“窗口上绘制应用的UI,也就是说,系统绘制应用的布局与在正常大小的手机相同(模拟一个320dp*480dp的屏幕),屏幕剩余的空间由布局周围的黑色边框填充。code

        这介绍了 Android 1.6 处理仅为 320dp x 480dp 的原始屏幕大小而设计的应用程序。由于只有不多的活跃的android设备仍然在运行 Android 1.5,大部分的应用在 Android 1.6 或更高版本上被开发,不该该在大屏幕上开启这个版本的兼容性模式,这个版本被认为是过期的。xml

        要禁掉这个版本的屏幕兼容模式,只须要简单地设置android:minSdkVersion或者android:targetSdkVersion为4(Android1.6),或者设置android:resizeable为true。ip

        Version 2 (Android 3.2 and greater)开发

        系统绘制应用布局同在正常尺寸的手机(大约模拟320dp*480dp的屏幕),而后放大来填充屏幕,这最终会让你的布局变得更大,这会致使UI的失真.get

        这个版本是在Android 3.2引入的,进一步协助大屏幕设备上的应用(没有遵守Supporting Multiple Screens指南的应用)。it

        一般,运行Android3.2或者更高Android版本的大屏幕设备,当应用没有在manifest文件中显示的声明它支持大屏幕设备时,容许用户开启屏幕兼容性模式。在这种状况下,一个向外箭头样子的图标会出如今系统bar的时钟的旁边,(据自测,4.4.4版本的平板没有这个icon,4.1.1版本的有),容许用户切换屏幕兼容性模式,如图,一个应用能够显式地声明它不支持大屏幕,这样,屏幕兼容性模式老是开启的,用户不能禁掉他。做为开发者,你能够控制应用什么时候开启屏幕兼容性模式。

Disabling Screen Compatibility Mode

        若是你主要在Android3.0(SDK Level 11)以前开发应用,可是你的应用能够恰当地为大屏幕调整布局大小,为了维护最佳的用户体验,你应该禁止掉屏幕兼容性模式。不然,用户可能开启屏幕兼容性模式,以一个不太理想的方式来体验你的应用。

        默认地,当如下条件知足时,运行Android 3.2及以上版本的设备的屏幕兼容性模式,对用户是一个可选择的特性:

  • 你的应用已经设置android:minSdkVersion和android:targetSdkVersion为“10”或者更低的版本,而且没有使用<supports-screens>元素显式地声明支持大屏幕。
  • 你的应用已经设置android:minSdkVersion或者android:targetSdkVersion为“11”或者更高版本,而且使用<supports-screens>元素显式地声明不支持大屏幕

        要彻底地禁掉屏幕兼容性模式用户选项,移除系统bar上的图标,你能够按照下面的方式作:

  • 最简单的方式

        在你的manifest文件中,增长<supports-screens>元素,而且指定android:xlargeScreens属性为“true”<supports-screens android:xlargeScreens="true" />
        这声明了你的应用支持所有的大屏幕尺寸,因此,系统总会调整你的布局尺寸来适应屏幕,这与你在<uses-sdk>元素中设置的值无关。

  • 简单,可是会有其余的影响:

        在你的manifest的<uses-sdk>元素中,设置android:targetSdkVersion为“11”或者更高<uses-sdk android:minSdkVersion="4" android:targetSdkVersion="11" />
        这声明了你的应用支持Android3.0,而Android3.0是为大屏幕设备如tablets设计的。

        注意:当运行在Android3.0或者更高的版本时,系统会为你的UI开启Holographic主题,为Activity增长Action Bar,在系统bar上移除Options Menu 按钮。

        若是屏幕兼容性模式仍然开启,检查你的manifest的<supports-screens>元素,确保没有属性设置为“false”。最佳实践是老是使用<supports-screens>元素显式地声明对不一样尺寸屏幕的支持。

Enabling Screen Compatibility Mode

        当你的应用针对Android3.2(API level 13)或者更高Android版本,能够经过<supports-screens>元素的属性设置,来影响某些屏幕是否开启屏幕兼容性模式。

        注意:屏幕兼容性模式并非一个应用想运行的模式—由于布局放大会致使UI的模糊。要让你的应用在大屏幕上表现良好,最恰当的方式是遵照Supporting Multiple Screens指导,而且为不用的屏幕尺寸提供可替换的布局。

        默认地,当你设置了android:minSdkVersion或者android:targetSdkVersion为“11”(或者更高)属性时,屏幕兼容性模式对于用户是不可用的。若是你的应用没有为大屏幕适当的调整大小,你能够选择开启屏幕兼容性模式,采用如下方式:

  • 在manifest文件中,增长<supports-screens>元素而且指定android:compatibleWidthLimitDp属性的值为"320"
<supports-screens android:compatibleWidthLimitDp="320" />

        这表示你的应用设计的目标最大的"最小屏幕宽度”为320dp。这种方式,任何设备最小的宽度大于这个值会提供屏幕兼容性模式做为用户可选特性。

        注意:目前,屏幕兼容性模式只能模拟320dp宽的手机,因此屏幕兼容性模式不能应用于android:compatibleWidthLimitDp的值大于320dp的设备。

  • 若是为大屏幕调整布局尺寸时,你的应用出现问题,而且,你想强制用户处于屏幕兼容性模式(而不是简单的提供一个选项),你可使用android:largestWidthLimitDp 属性。
<supports-screens android:largestWidthLimitDp="320" />

        这个设置与android:compatibleWidthLimitDp同样,这个设置还会强制开启屏幕兼容性模式,不容许用户禁掉它。

相关文章
相关标签/搜索