最近在做一个开发者入门的专题,因此一直在搜索关于入门开发的知识和资料,希望能够给开始学习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. 机器学习 101 Mahout 简介 建立一个推荐引擎 使用 Mahout 实现集群 使用 Mahout 实现内容分类 结束语 下载资源

      机器学习 101 Mahout 简介 建立一个推荐引擎 使用 Mahout 实现集群 使用 Mahout 实现内容分类 结束语 下载资源 相关主题   在信息时代,公司和个人的成功越来越依赖于迅速 ...

  2. 如何使用Python-GnuPG和Python3 实现数据的解密和加密

    介绍 GnuPG包提供用于生成和存储加密密钥的完整解决方案.它还允许您加密和签名数据和通信. 在本教程中,您将创建一系列使用Python 3和python-gnupg模块的脚本.这些脚本允许您对多个文 ...

  3. Linux文本编辑命令

    sort 排序工具,比较排序(根据字典排序) -t 指定分隔符(默认是空格) -k 指定第几域排序(默认第一域) -n 以数字大小排序 -r 逆向排序 -v 去掉重复行 -o 输出到文件中 -c 测试 ...

  4. <每日一题>题目12:列表解析及zip、dict函数的简单应用

    ''' 分析: 1.列表解析:迭代机制的一种应用 语法: [expression for iter_val in iterable] [expression for iter_val in itera ...

  5. ps photoshop

    PS-前端切图教程(切jpg图和切png图) 参考线显示和隐藏:ctrol+h alt+v+e或者打开标尺然后从点击标尺就能拖拽出来,删除也是拖到标尺附近就删除 显示.隐藏标尺:ctrol+R 显示网 ...

  6. JS流程控制语句 重复重复(for循环)语句结构: for(初始化变量;循环条件;循环迭代) { 循环语句 }

    重复重复(for循环) 很多事情不只是做一次,要重复做.如打印10份试卷,每次打印一份,重复这个动作,直到打印完成.这些事情,我们使用循环语句来完成,循环语句,就是重复执行一段代码. for语句结构: ...

  7. 解决Mysql因内存不足启动失败的问题

    参考:https://www.jb51.net/article/136432.htm 一.查看内存 free -h free -m 二.解决方法: 1.增加swap交换空间解决问题: dd if=/d ...

  8. LeetCode第一题—— Two Sum(寻找两数,要求和为target)

    题目描述: Given an array of integers, return indices of the two numbers such that they add up to a speci ...

  9. python 简单的图片比较

    # by movie on 2019/12/18 from PIL import Image from PIL import ImageChops path1 = 'images/trumpA689. ...

  10. 【JZOJ3337】wyl8899的TLE

    description wyl8899今天也很刻苦的在做老师布置下来的题目! 这一天老师布置的题目是这样的: 给出两个仅含小写字母的字符串A和B,输出最大的k,使得A[1..k]是B的子串. A和B的 ...