原文:http://android.eoe.cn/topic/android_sdk

注意:如果你在低于安卓3.0的版本上进行应用开发,但其在更大屏幕的设备(比如平板电脑)上显示正常时,你就需要禁用屏幕兼任模式来保持最佳用户体验。要学习如何快速禁用用户选项,请跳转至禁用屏幕兼任模式。

屏幕兼任模式是一种改善方法,用于不能正常适配大屏设备(如平板电脑)的情况。从安卓1.6开始,系统就能支持多种屏幕尺寸,并且调整应用布局的显示,来适应每一款屏幕。然而,如果在支持多种屏幕Supporting Multiple Screens的指引下,你的应用仍不能成功适配屏幕,其问题就很有可能就出在适配更大屏幕上。对于存在这种问题的应用,屏幕兼任模式可以让其在更大屏设备上得到改善。
目前有两个版本的屏幕兼任模式,它们稍有不同:

版本一(安卓1.6-3.1)

系统将应用UI显示为“邮票”式窗口。即,系统将应用的布局认定为适应普通尺寸手机(模拟320dp x 480dp的屏幕),窗口以外的屏幕部分显示为黑色背景。
该版本随安卓1.6的产生而出现,安卓1.6的设计就是仅适用于320dp x 480dp的原始尺寸。因为现在安卓1.5的设备很少使用了,几乎所有应用都在安卓1.6或更高的平台上开发,所以应该不会有版本一的屏幕兼任模式来适配更大屏幕。该版本差不多已经过时了。

http://developer.android.com/images/screens_support/compat-zoom-thumb.png

图1. 在安卓3.2平板电脑上,应用以屏幕兼任模式运行的情况。

http://developer.android.com/images/screens_support/compat-stretch-thumb.png

图2. 图1中的应用,在禁用屏幕兼任模式下的运行情况。

要禁用该版本的屏幕适配模式,你只需要设定android:minSdkVersionandroid:targetSdkVersion至 “4”或更高,或设置android:resizeable至“true”。

版本二(安卓3.2或更高)

系统按照在普通屏幕手机上的显示方式(大致模拟320dp x 480dp的屏幕)显示应用,然后进行放大,填满屏幕。实际上就是“拉大”应用布局,这通常会引起UI的伪迹或像素丢失。

该版本随着安卓3.2的产生而出现,在应用还没有实施支持多种屏幕Supporting Multiple Screens中所提及的技术时,该版本起到了进一步支持应用在最新设备上的正常显示的作用。

这样屏幕兼任模式就能一直启用,用户不可禁用。(下面的章节将会讨论如何声明支持大屏幕)。

http://developer.android.com/images/screens_support/compat-toggle.png

图3. 开关屏幕适配模式的弹出菜单(当前为禁用状态,仅正常调整)。

作为开发者,你应该掌握在何时该使用屏幕兼任模式。以下章节将告诉你,在安卓3.2或更高版本下,如何选择禁用或启用屏幕兼任模式来适配更大屏幕。

禁用屏幕兼任模式

如果你的应用最初是为低于3.0的版本开发的,而它能在更大屏幕上正常显示,那么你就应当禁用屏幕兼任模式,从而保证最佳用户体验。否则,用户也许会启用屏幕兼任模式,这样就会影响最佳的应用体验效果。

在默认下,当一下可选特性之一为true时,3.2或更高版本设备的屏幕兼任模式将可用:

· 将应用中android:minSdkVersionandroid:targetSdkVersion同时设为"10"或更低,并且使用元素,* 不要声明* 支持大屏。

· 将应用中 android:minSdkVersion或android:targetSdkVersion二者之一设定文"11"或更高,并且使用元素,* 声明其不支持* 大屏。

要想完全禁用屏幕兼任模式的用户选项并且移除系统栏上的图标,你可以:

  • ·最简单:*

在清单文件中,添加元素,指定android:xlargeScreens属性为“true”;

就这么简单。这样就声明了你的应用支持所有大屏幕尺寸,系统也会根据屏幕调整布局。不论你在属性中设定了什么值,它都会起作用。

  • ·简单,但有其他效果:*

在清单的元素中,设定android:targetSdkVersion为“11”或更高:

这种方法可声明应用支持安卓3.0,并且可以在更大屏幕(平板电脑等)上起作用。

谨慎:3.0或更高版本上,该方法也可启用UI的全息主题,启用时将在Activity上添加Action Bar,且移除系统栏上的选项菜单按钮。

如果在你改变此处以后,屏幕兼任模式仍然启用,请检查清单中的,确认其中没有设定为“false”的属性。最佳做法是使用元素,声明其支持不同屏幕尺寸,这样你就可以一直使用该元素了。

关于针对安卓3.0设备升级应用的更多信息,请见Optimizing Apps for Android 3.0.

启用屏幕兼任模式

当应用针对安卓3.2(API等级13)或更高时,你可以使用元素,针对某些屏幕启用或禁用屏幕兼任模式。

注意:屏幕兼任模式并不是一种最佳的选择——他会因缩放而导致UI的像素丢失和虚化。让应用在大屏手机上正常显示的最佳方法,请参见支持多种屏幕,并且为不同屏幕尺寸提供替换性选择。

在默认下,当设定android:minSdkVersion或android:targetSdkVersion二者之一为“11”或更高时,屏幕兼任模式将对用户不可用。若二者之一为true,且应用不能针对大屏进行适当调整时,你选择以下一种方式,来启用屏幕兼任模式:
·在清单文件中,添加 元素并且指定android:compatibleWidthLimitDp属性为“320”:

这表明,该应用“最小屏幕宽度”的最大值为320dp。通过该方法,任何大于此值的最小屏幕值都可将屏幕兼任模式设为用户的可选特性。

注意:现今,屏幕兼任模式进模拟屏幕为320dp宽,所以,如果android:compatibleWidthLimitDp的值大于320,屏幕兼任模式将不会在任何设备上启用。

·如果应用在针对大屏调整时出现功能性崩溃,所以你想强迫用户使用屏幕兼任模式(而不仅仅是提供这个选项),你可以使用android:largestWidthLimitDp属性。

这个属性和android:compatibleWidthLimitDp效果一样,除了强制启用屏幕兼任模式而不允许用户禁用。

Android基础知识之屏幕兼容模式的更多相关文章

  1. 【Xamarin开发 Android 系列 4】 Android 基础知识

    原文:[Xamarin开发 Android 系列 4] Android 基础知识 什么是Android? Android一词的本义指“机器人”,同时也是Google于2007年11月5日宣布的基于Li ...

  2. Android基础知识之API等级介绍

    原文:http://android.eoe.cn/topic/android_sdk :可以让开发者通过一个表示API级别的整数来描述程序在android平台上的兼容性,系统会将与系统本身提供的API ...

  3. Android基础知识(一)

    前言 前言 从软件测试最终目的发现问题缺陷来看,Findyou比较认同一个观念,测试的能力大致可以划分成三个能力层次:发现问题.定位问题.预防问题.有机会探讨一下这个分类. 发现问题各种方式方法,比如 ...

  4. Android基础知识总结

    四大组件之一活动 活动状态 运行状态:活动处于栈顶 暂停状态:活动不处于栈顶,但仍然可见 停止状态:完全不可见 销毁状态:离开返回栈 生存期 onCreate() onStart():不可见到可见调用 ...

  5. FTP基础知识 FTP port(主动模式) pasv(被动模式) 及如何映射FTP

    您是否正准备搭建自己的FTP网站?您知道FTP协议的工作机制吗?您知道什么是PORT方式?什么是PASV方式吗?如果您不知道,或没有完全掌握,请您坐下来,花一点点时间,细心读完这篇文章.所谓磨刀不误砍 ...

  6. Android基础知识巩固:关于PendingIntent和广播

    平时使用广播的场合比较多,但细节的东西,看过了也没有总结,以至于某些场合有小问题,还是要把原理和属性搞清楚才能运用自如. 其实也是自己比较懒,先看别人的blog,有个概念再去官网看英文的能好理解一些. ...

  7. android开发学习---linux下开发环境的搭建&& android基础知识介绍

    一.配置所需开发环境 1.基本环境配置 JDK 5或以上版本(仅有JRE不够) (http://www.oracle.com/technetwork/java/javase/downloads/ind ...

  8. Android基础知识06—活动的四大启动模式

    ------ 活动的启动模式 ------ 在实际项目中应该根据特定的需求为每个活动指定恰当的启动模式. 四种启动模式: standard . singleTop . singleTask . sin ...

  9. android基础知识13:AndroidManifest.xml文件解析

    注:本文转载于:http://blog.csdn.net/xianming01/article/details/7526987 AndroidManifest.xml文件解析. 1.重要性 Andro ...

随机推荐

  1. 转-ubuntu清理卸载wine的残余项目

    背景:前段时间,装了wine试用了一下,感觉实在没啥意思就卸载了.但是卸载以后发现还有些尾巴碍眼,如打开文件时右键菜单里就会有“使用notepad打开”的选项,虽然没有什么别的问题,但是看着碍眼.所以 ...

  2. http put post请求区别

    1.RESTful API REST: Representational State Transfer url 对应服务器上的一种资源,e.g. 数据,图片等,所以url 中只含有名词,通过HTTP动 ...

  3. 用户从输入URL到看到网页发生了什么?

    一.在浏览器地址栏输入URL 二.浏览器查看缓存1.如果资源未缓存,发起新请求如果已缓存,检验是否处于有效期,资源处于有效期内直接提供给客户端,否则与服务器进行验证.2.检验有效期通常有两个HTTP头 ...

  4. SSM实战——秒杀系统之DAO层实体定义、接口设计、mybatis映射文件编写、整合Spring与Mybatis

    一:DAO实体编码 1:首先,在src目录下,新建org.myseckill.entity包,用于存放实体类: 2:实体类设计 根据前面创建的数据库表以及映射关系,创建实体类. 表一:秒杀商品表 对应 ...

  5. IOS-异常处理

    http://blog.csdn.net/ndscoahz/article/details/50866229 http://www.cnblogs.com/snail-007/p/4564422.ht ...

  6. 〖Linux〗转换Socks Proxy为Http Proxy

    使用工具,privoxy,官网: http://www.privoxy.org/ socks5 proxy设定方法: autossh -CgNfD  0.0.0.0:1080 vps-lxb sock ...

  7. 【Linux】常见Linux默认的shell

    常见的操作系统下的shell: Linux下默认的shell是Bourne Again shell(bash) Solaris和FreeBSD下默认的是Bourne shell(sh) AIX系统下默 ...

  8. 安装xenapp后,非管理员连接RDP出现桌面当前不可用的解决方法

    安装完xenapp后,非管理员帐号就不能远程登录到2008服务器. 修改方法如下:1.启动 Citrix AppCenter展开citrix资源.Xenapp.<场地>.策略,右面的窗格切 ...

  9. AWVS扫描工具使用教程

    上文AppScan扫描工具-工作原理&操作教程有写到Web安全漏洞扫描工具之一的APPScan,除此,还有另外一款国内使用比较主流的Web安全漏洞扫描工具——AWVS.相较于大容量的AppSc ...

  10. Xcode使用小技巧-filter查找功能和查看最近修改的文件

    今天偶然发现了关于Xcode的一个小技巧: 1.查看最近修改的文件 2.使用filter查找制定文件 没错,就是下面这个东西,很容易忽略的一个小工具,在Xcode左下角位置. 通过这个,我们能够在整个 ...