最近在做一个开发者入门的专题,因此一直在搜索关于入门开发的知识和资料,希望能够给开始学习Android开发的朋友提供指导性参考。今天找到了一篇不错的技术文章。

  语法:

<supports-screensandroid: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"/>

  包含于:

  说明:

  指定应用程序支持的屏幕尺寸,并对大于程序支持的屏幕启用屏幕兼容模式。总是用本元素来指定程序支持的屏幕尺寸是非常重要的。

  所谓应用程序“支持”的屏幕尺寸,是指程序能够自动缩放来填充整个屏幕。通常系统提供的缩放功能可以适用于大多数应用程序,不必做什么额外的调整工作就能让程序在屏幕更大的手持设备上正常运行。但是常常要利用替代布局资源来优化用户界面以适应各种屏幕尺寸。比如,为了区别在平板设备和手持设备上的运行,可能需要修改activity的布局。

  然而,如果程序为适应不同的屏幕尺寸进行缩放后不能正常运行,可以利用元素的属性进行限制,使得程序只能在小屏幕上运行,或使用系统的屏幕兼容模式来缩放用户界面以适应较大的屏幕。如果没有考虑大屏幕的设计并且正常的缩放不能获得理想的结果,屏幕兼容模式将会通过仿真正常尺寸的屏幕和中等屏幕密度来确定用户界面的缩放比例,然后进行缩放来填充整个屏幕。注意这会导致用户界面的像素化和模糊,因此最好是为大屏幕对用户界面进行优化。

  注意:自Android 3.2引入了新的属性:android:requiresSmallestWidthDp、android:compatibleWidthLimitDp和android:largestWidthLimitDp。如果是开发Android 3.2以上版本的应用程序,应该使用这些属性来声明对屏幕尺寸的支持,而不是用基于普通屏幕尺寸的属性。

  关于支持各种屏幕尺寸、避免使用屏幕兼容模式的详情,请参阅支持多种屏幕。

  属性:

  android:resizeable

  指明应用程序是否根据不同的屏幕尺寸进行缩放。如果设为否,则在较大屏幕上系统将以屏幕兼容模式运行应用程序。

  本属性已过时。为了帮助程序从Android 1.5升级为1.6才引入本属性,当时第一次引入了对多种屏幕的支持。不应再使用本属性。

  android:smallScreens

  指明应用程序是否支持较小屏幕。较小的屏幕是指小于“normal”(传统的HVGA)大小的屏幕。不支持小屏幕的应用程序将在外部服务(比如Android Market)中禁止用于小屏幕设备,因为只有很少一部分平台能让程序运行在小屏幕上。缺省值是“true”。

  android:normalScreens

  指明应用程序是否支持“normal”屏幕尺寸。传统意义上指的是中等密度的HVGA 屏幕,但低密度的WQVGA和高密度的WVGA一般也被视为是正常尺寸。缺省属性是“true”。

  android:largeScreens

  指明应用程序是否支持大屏幕尺寸。大屏幕是指明显比“normal”手持设备屏幕更大的尺寸。虽然依赖于系统的缩放也能全屏显示,但为了更好的用户体验可能需要对程序组件进行特定的处理。

  本属性的缺省值依版本而各不相同,因此最好是一直都明确声明这个属性。注意设为“false”将总是启用屏幕兼容模式。

  android:xlargeScreens

  指明应用程序是否支持超大屏幕尺寸。超大屏幕是指明显比“large”屏幕更大的尺寸,比如平板设备(或更大),虽然依赖于系统的缩放也能全屏显示,但为了更好的用户体验可能需要对程序组件进行特定的处理。

  本属性的缺省值依版本而各不相同,因此最好是一直都明确声明这个属性。注意设为“false”将总是启用屏幕兼容模式。

  本属性自API level 9引入。

  android:anyDensity

  指明应用程序是否包含适用于任何屏幕密度的资源。

  对于支持Android 1.6 (API level 4)以上版本的应用程序而言,本属性缺省值是“true”。除非绝对确认程序必须要能运行,不应设为“false”。只有应用程序要直接操作位图时(详情参阅支持多种屏幕文档),才可能需要禁用此选项。

  android:requiresSmallestWidthDp

  指定程序所需的smallestWidth最小值。smallestWidth是指可被程序用户界面使用的屏幕可用空间的最小值(单位为dp)——指可用屏幕两边中最短的那条边长。为了保证与应用程序兼容,设备的smallestWidth必须大于等于本属性值。(通常此值对应于布局layout所支持的“最小宽度”,而与屏幕当前的方向无关。)

  例如,典型的手持设备的最小宽度是320dp,7英寸的平板设备的最小宽度是600dp,10英寸的平板设备的最小宽度是720dp。因为这些值即为屏幕可用空间的最小值,所以一般也即是smallestWidth的值。

  在计算屏幕上的组件排列和系统用户界面大小时会与本属性值进行比较。例如,如果设备屏幕上需要显示一些永久性的用户界面元素,这些元素占用的屏幕位置对于其它用户界面元素是不可用的,通过对这些元素尺寸进行计算,系统声明的设备smallestWidth会比实际屏幕尺寸要小些。因此,应该用layout所需的最小宽度来设置此值,而与屏幕的方向无关。

  如果应用程序能在小屏幕上正确缩放(最低是small尺寸或最小宽度320dp),那就不需要用到本属性。否则,就应该为最小屏幕宽度标识符设置本属性来匹配应用程序所需的最小尺寸。

  警告:Android系统并不关心本属性,因此它不会影响程序运行时的表现。它是用于为诸如Android Market之类的服务启用过滤功能。不过,Android Market 当前还不支持对这个属性的过滤(Android 3.2),因此如程序不支持小屏幕的话还应继续使用其它屏幕尺寸的属性来进行限制。

  本属性自API level 13引入。

  android:compatibleWidthLimitDp

  通过指定程序支持的“最小屏幕宽度”的最大值,本属性可启用屏幕兼容模式作为用户可选项。如果设备可用屏幕的最小边长大于在此设置的值,用户将仍可以安装程序,但会运行在屏幕兼容模式。缺省情况下,屏幕兼容模式将被关闭,layout将如常缩放至全屏显示,但系统状态栏中会出现一个按钮,用户可以用此按钮来开关屏幕兼容模式。

  如果应用程序能兼容所有的屏幕尺寸,layout也能正确缩放,那就不需要用到本属性。

  注意:目前屏幕兼容模式只能在手持设备上仿真320dp宽度的屏幕,因此android:compatibleWidthLimitDp大于320时屏幕兼容模式将不会生效。

  本属性自API level 13引入。

  android:largestWidthLimitDp

  通过指定程序支持的“最小屏幕宽度”的最大值,本属性可强制开启屏幕兼容模式。如果设备屏幕的最小边长大于本属性值,应用程序将运行在屏幕兼容模式,且用户无法将其关闭。

  如果应用程序能兼容所有的屏幕尺寸,layout也能正确缩放,那就不需要用到本属性。不然也应优先考虑使用android:compatibleWidthLimitDp属性。仅当应用程序缩放到大屏幕时会崩溃,屏幕兼容模式是用户使用的唯一方式,才会用到android:largestWidthLimitDp属性。

  注意:目前屏幕兼容模式只能在手持设备上仿真320dp宽度的屏幕,因此android:largestWidthLimitDp大于320时屏幕兼容模式将不会生效。

  本属性自API level 13引入。

  引入于:

  API Level 4

  参阅:

  · 支持多种屏幕

  · DisplayMetrics

supports-screensandroid的更多相关文章

  1. Tomcat version 6.0 only supports J2EE 1.2, 1.3, 1.4, and Java EE 5 Web modules

    在eclipse里面配置tomcat时候遇到的问题: Tomcat version 6.0 only supports J2EE 1.2, 1.3, 1.4, and Java EE 5 Web mo ...

  2. Nuget自己打包引用的时候出现错误:Package is not compatible with netcoreapp1.0 (.NETCoreApp,Version=v1.0). Package 1.0.1 supports: net (.NETFramework,Version=v0.0)

    Nuget自己打包引用的时候出现错误:Package is not compatible with netcoreapp1.0 (.NETCoreApp,Version=v1.0). Package ...

  3. The listener supports no services解决一例

    The listener supports no services解决一例   Listener动态监听静态监听注册实例 今天做Advacned Replication实验的时候碰到一个问题,启动目标 ...

  4. Can't find keyplane that supports type 4 for keyboard iPhone-Portrait-NumberPad; using 3876877096_Portrait_iPhone-Simple-Pad_Default

    在Xcode6下的模拟器点击UITextField控件显示键盘时会显示如下错误提示: Can’t find keyplane that supports type 4 for keyboard iPh ...

  5. [mysql] ERROR 1862 (HY000): Your password has expired. To log in you must change it using a client that supports expired passwords.

    今天安装mysql遇到这样一个问题: ERROR 1862 (HY000): Your password has expired. To log in you must change it using ...

  6. Supports BorlandIDEServices

    Delphi: procedure SetKeystrokeDebugging(Debugging: Boolean); var Dialog: IOTAKeyboardDiagnostics beg ...

  7. 教程-Supports判断接口(Instance)是否支持

    function TCommandEnabledController.GetCommandVisible(const ACommandName: string): Boolean; var I: In ...

  8. Widget only supports Widgets as children

    Widget only supports Widgets as children https://www.baidu.com/s?wd=Widget%20only%20supports%20Widge ...

  9. Javascript检测浏览器对CSS属性的支持 /* supports */

    //检测浏览器对CSS属性的支持 supports = (function() { var div = document.createElement('div'), vendors = 'Khtml ...

  10. [原理][源代码解析]spring中@Transactional,Propagation.SUPPORTS,以及 Hibernate Session,以及jdbc Connection关系---转载

    问题: 一. 1. Spring 如何处理propagation=Propagation.SUPPORTS? 2. Spring 何时生成HibernateSession ? 3. propagati ...

随机推荐

  1. AutoMapper 在你的项目里飞一会儿

    先说说DTO DTO是个什么东东? DTO(Data Transfer Object)就是数据传输对象,说白了就是一个对象,只不过里边全是数据而已. 为什么要用DTO? 1.DTO更注重数据,对领域对 ...

  2. 集中式日志分析平台 - ELK Stack - 安全解决方案 X-Pack

    大数据之心 关注  0.6 2017.02.22 15:36* 字数 2158 阅读 16457评论 7喜欢 9 简介 X-Pack 已经作为 Elastic 公司单独的产品线,前身是 Shield, ...

  3. PAT甲级——A1113 Integer Set Partition

    Given a set of N (>) positive integers, you are supposed to partition them into two disjoint sets ...

  4. 基于token的验证

    认证.权限和限制 身份验证是将传入请求与一组标识凭据(例如请求来自的用户或其签名的令牌)相关联的机制.然后 权限 和 限制 组件决定是否拒绝这个请求. 简单来说就是: 认证确定了你是谁 权限确定你能不 ...

  5. JAVA基础_自定义泛型

    泛型的来源 在Java中,泛型借鉴了C++的模版函数,从而引入了泛型. C++泛型 int add(int x,int y){ return x + y; } float add(float x.fl ...

  6. 026_JDBC

    JDBC简介 JDBC(Java DataBase Connectivity,Java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编 ...

  7. 通过ID获取元素 注:获取的元素是一个对象,如想对元素进行操作,我们要通过它的属性或方法。

    通过ID获取元素 学过HTML/CSS样式,都知道,网页由标签将信息组织起来,而标签的id属性值是唯一的,就像是每人有一个身份证号一样,只要通过身份证号就可以找到相对应的人.那么在网页中,我们通过id ...

  8. 【BZOJ3223】【luoguP3391】文艺平衡树

    description 您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作:翻转一个区间,例如原有序序列是5 4 3 2 1,翻转区间是[2,4]的话,结果是5 2 3 ...

  9. eval()方法与str()方法

    eval()方法与str()方法 #_author:Administrator#date:2019/10/31 a={ 'q':{'xxx':3456}}#将一个字典转换成一个字符串a=str(a)p ...

  10. Ubuntu usb设备端口号绑定

    1.将串口设备插入USB口,通过lsusb查看端口信息.例如: ID 1a86:7523 表示usb设备的ID(这个ID由芯片制造商设置,可以唯一表示该设备) 1a86 usb_device_desc ...