文档章节

SDK#屏幕兼容性模式

LiangX
 LiangX
发布于 2016/09/19 16:37
字数 1636
阅读 21
收藏 0

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

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

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

         Version 1 (Android 1.6 - 3.1)

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

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

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

        Version 2 (Android 3.2 and greater)

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

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

        通常,运行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一样,这个设置还会强制开启屏幕兼容性模式,不允许用户禁掉它。

© 著作权归作者所有

共有 人打赏支持
LiangX
粉丝 22
博文 33
码字总数 12468
作品 0
朝阳
程序员
私信 提问
Android P 应用兼容常见错误及建议

从 2018 年 3 月初我们发布 Android P 开发者预览版以来,很多开发者都对当前常见应用在 Android P 上做了一些兼容性测试,我们在这里总结了一些常见的问题,以及它们发生的原因和建议的修改...

谷歌开发者
2018/04/25
0
0
Android SDK 3.2 发布

Google 刚刚发布了 Android SDK 3.2 版本,目前 API 级别是 r13。该版本主要特性有: 使用者特性: 优化对更多平板电脑的支持 改进一些固定屏幕大小的缩放兼容性 支持从 SD 卡上同步多媒体资...

红薯
2011/07/16
7.3K
6
从零到一,使用实时音视频 SDK 一起开发一款 Zoom 吧

Zoom(zoom.us)是一款受到广泛使用的在线会议软件。相信各位一定在办公、会议、聊天等各种场景下体验或者使用过,作为一款成熟的商业软件,Zoom 提供了稳定的实时音视频通话质量,以及白板、...

七牛云
2018/10/18
0
0
IntelliJ IDEA 11.1.3发布,支持Android 4.1 SDK

IntelliJ IDEA开发团队今天发布了IntelliJ IDEA 11.1分支的第3个维护版本。 该版本的主要改进包括: 支持最新的Android 4.1 SDK,并修复了一些bug 确保对Mac OS X 10.8的兼容性,支持视网膜屏...

oschina
2012/07/27
2.7K
13
SmartWatch2开发-Control API简介

Sony Control API Control API是Smart Extension APIs中的一部分。前面一篇讲到了Sony Extension API。Sony某些智能配件支持Control API。Control API让Extension可以完全控制配件,包括控制...

chenming
2013/12/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

(六)java b2b2c springcloud shop 多用户商城系统源码-分布式配置中心(Spring Cloud Config)

一、简介 在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件。在Spring Cloud中,有分布式配置中心组件spring cloud config ,它支持...

sccspuercode
28分钟前
1
0
OSChina 周六乱弹 —— 我都想和他们组成一个家庭了

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @Sharon啊 :分享王菲的单曲《流年》有生之年狭路相逢终不能幸免,手心突然忽然长出纠缠的曲线。 《流年》- 王菲 手机党少年们想听歌,请使劲...

小小编辑
今天
478
14
CentOS7利用systemctl添加自定义系统服务

CentOS7的服务systemctl脚本存放在:/usr/lib/systemd/,有系统(system)和用户(user)之分,需要开机不登陆就能运行的程序,存在系统服务里,即:/usr/lib/systemd/system目录下. CentOS7的每...

linuxprobe16
今天
2
0
RabbitMQ入门

RabbitMQ是一个由erlang开发的基于AMQP(Advanced Message Queue)协议的开源实现。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面都非常的优秀。是当前最主流的消息中间...

watermelon11
今天
20
0
今天的学习

自动加载:方法一 function __autoload( $className ){在这里,完成加载B这个类文件的工作。}class A{} //这是一个类$a1 = new A(); //这里没有自动加载的发生,因为A这个类...

墨冥
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部