对于第一代运行 Android 3.0 的平板电脑,声明平板电脑 的正确方式是将它们放在有 xlarge 配置限定符的目录(例如 res/layout-xlarge/)中。为适应其他类型的平板电脑和屏幕 尺寸 — 特别是 7 英寸平板电脑 — Android 3.2 引入了为更具体的屏幕尺寸指定资源 的新方式。新技术基于布局需要的空间量 (例如 600dp 宽),而不是尝试让您的布局容纳通用化的尺寸组 (例如超大)。

使用通用化的尺寸组时,为 7 英寸平板电脑设计很棘手的原因在于, 7 英寸平板电脑在技术上与 5 英寸手机属于同一个组(组)。虽然 这两种设备在尺寸上似乎很接近,但用于 应用 UI 的空间量明显不同,用户交互的方式也是如此。因此,7 英寸和 5 英寸 屏幕不一定使用相同的布局。为便于您为这两种屏幕提供不同的 布局,Android 现在允许您 根据实际适用于应用布局的宽度和/或高度指定布局资源( 以 dp 单位数指定)。

例如,在设计要用于平板电脑样式设备的布局之后,您可能 发现该布局在屏幕宽度小于 600dp 时不适用。此阈值 于是变成平板电脑布局需要的最小尺寸。因此,您现在可以指定应仅当至少有 600dp 宽度供应用的 UI 使用时才使用这些布局资源。

应选择一个宽度并将其设计为最小尺寸,或者在布局设计完成后测试 其支持的最小宽度。

注:请记住,这些新尺寸 API 使用的所有数据是密度独立的像素 (dp) 值,您的布局尺寸也应始终 使用 dp 单位定义,因为您关注的是系统 考虑屏幕密度后可用的屏幕空间量(与使用原始像素分辨率相反)。如需了解 密度独立像素的更多信息,请参阅本文档前面的术语和概念 。

使用新尺寸限定符

表 2 摘要列出了您可以根据 布局可用空间指定的不同资源配置。与传统的屏幕尺寸组(小、 正常、大和超大)相比,这些新的限定符可用于更多地控制 应用支持的屏幕尺寸。

注:您使用这些限定符指定的尺寸 不是实际屏幕尺寸。更确切地说,尺寸是 可用于 Activity 窗口的宽度或高度(dp 单位)。Android 系统 可能将某些屏幕用于系统 UI(例如屏幕底部的系统栏或 顶部的状态栏),因此有些屏幕可能不适用于您的布局。因此, 您声明的尺寸应与 Activity 需要的尺寸具体相关 — 系统 在声明向您的布局提供的空间量时会计算系统 UI 使用的任何空间。 另请注意,操作栏被视为 应用的窗口空间的一部分,但您的布局未声明此事,因此会减少 您的布局可用的空间,您在设计时必须考虑进去。

表 2. 屏幕尺寸的新配置限定符 (在 Android 3.2 中引入)。

屏幕配置 限定符值 说明
smallestWidth sw<N>dp

示例:
sw600dp
sw720dp

屏幕的基本尺寸,由可用屏幕区域的最小尺寸指定。 具体来说,设备的 smallestWidth 是屏幕可用高度和宽度的最小尺寸(您也可以将其视为屏幕的“最小可能宽度”)。无论屏幕的当前方向如何,您均可使用此限定符确保应用 UI 的可用宽度至少为 <N>dp。

例如,如果布局要求屏幕区域的最小尺寸始终至少为 600 dp,则可使用此限定符创建布局资源 res/layout-sw600dp/。仅当可用屏幕的最小尺寸至少为 600dp 时,系统才会使用这些资源,而不考虑 600dp 所代表的边是用户所认为的高度还是宽度。smallestWidth 是设备的固定屏幕尺寸特性;设备的 smallestWidth 不会随屏幕方向的变化而改变。

设备的 smallestWidth 将屏幕装饰元素和系统 UI 考虑在内。例如,如果设备的屏幕上有一些永久性 UI 元素占据沿 smallestWidth 轴的空间,则系统会声明 smallestWidth 小于实际屏幕尺寸,因为这些屏幕像素不适用于您的 UI。

这可替代通用化的屏幕尺寸限定符(小、正常、大、超大), 可让您为 UI 可用的有效尺寸定义不连续的数值。 使用 smallestWidth 定义一般屏幕尺寸很有用,因为宽度 通常是设计布局时的驱动因素。UI 经常会垂直滚动,但 对其水平需要的最小空间具有非常硬性的限制。可用的宽度也是 确定是否对手机使用单窗格布局或是对平板电脑使用多窗格布局 的关键因素。因此,您可能最关注每部 设备上的最小可能宽度。

可用屏幕宽度 w<N>dp

示例:
w720dp
w1024dp

指定资源应该使用的最小可用宽度(dp 单位) — 由 <N> 值定义。当屏幕的方向在横屏与竖屏之间切换时,系统对应的 宽度值将会变化,以 反映 UI 可用的当前实际宽度。

这对于确定是否使用多窗格布局往往很有用,因为即使是在 平板电脑设备上,您也通常不希望竖屏像横屏一样 使用多窗格布局。因此,您可以使用此功能指定布局需要的最小宽度,而 无需同时使用屏幕尺寸和方向限定符。

可用屏幕高度 h<N>dp

示例:
h720dp
h1024dp
等等

指定资源应该使用的最小屏幕高度(dp 单位) — 由 <N> 值定义。当屏幕的方向在横屏与竖屏之间切换时,系统 对应的高度值将会变化,以 反映 UI 可用的当前实际高度。

使用此方式定义 布局需要的高度很有用,它与使用 w<N>dp 定义 所需宽度的方式相同,无需同时使用屏幕尺寸和方向限定符。 但大多数应用不需要此限定符,考虑到 UI 经常垂直滚动, 因此高度更弹性,而宽度更刚性。

虽然使用这些限定符似乎比使用屏幕尺寸组更复杂,但 当您确定 UI 的要求后,它实际上应该更简单。在设计 UI 时, 您主要关注的可能是应用在 手机样式 UI 与使用多窗格的平板电脑样式 UI 之间切换时的实际尺寸。此确切的精确时间 取决于特定设计 — 可能平板电脑布局需要 720dp 宽度, 但 600dp、480dp 或这两者之间的某个值就够了。使用表 2 中的这些限定符 可以控制布局切换时的精确尺寸。

如需有关这些尺寸配置限定符的更多讨论,请参阅 提供资源文档。

配置示例

为帮助您针对不同的设备类型确定某些设计,下面提供了一些 常见的屏幕宽度值:

  • 320dp:常见手机屏幕(240x320 ldpi、320x480 mdpi、480x800 hdpi 等)。
  • 480dp:中间平板电脑,例如 Streak (480x800 mdpi)。
  • 600dp:7 英寸平板电脑 (600x1024 mdpi)。
  • 720dp:10 英寸平板电脑(720x1280 mdpi、800x1280 mdpi 等)。

利用表 2 中的尺寸限定符,您的应用可以使用要用于宽度和/或高度的 的任何值,在用于手机和平板电脑的不同布局资源之间切换。例如, 如果 600dp 是平板电脑布局支持的最小可用宽度,您可以提供以下两 组布局:

res/layout/main_activity.xml           # For handsets
res/layout-sw600dp/main_activity.xml   # For tablets

在此情况下,可用屏幕空间的最小宽度必须是 600dp,才可 应用平板电脑布局。

对于要进一步自定义 UI 以区分不同尺寸 (例如 7 英寸和 10 英寸平板电脑)的其他情况,您可以定义其他最小宽度布局:

res/layout/main_activity.xml           # For handsets (smaller than 600dp available width)
res/layout-sw600dp/main_activity.xml   # For 7” tablets (600dp wide and bigger)
res/layout-sw720dp/main_activity.xml   # For 10” tablets (720dp wide and bigger)

请注意,上面两组示例资源使用“最小宽度”限定符 sw<N>dp,用于指定屏幕两边的最小值,而不管设备 当前的方向如何。因此,使用 sw<N>dp 是指定 布局可用于整体屏幕尺寸的简便方法,它会忽略屏幕的方向。

但在某些情况下,可能 必须确定布局当前可用的精确宽度或高度。例 如,如果是并排显示两个片段的双窗格布局,则只要 屏幕提供至少 600dp 的宽度(无论设备是横屏还是竖屏), 您可能就要使用该布局。在此情况下,您的资源可能与以下所示类似:

res/layout/main_activity.xml         # For handsets (smaller than 600dp available width)
res/layout-w600dp/main_activity.xml  # Multi-pane (any screen with 600dp available width or more)

请注意,第二组使用“可用宽度”限定符 w<N>dp。这 样,一部设备可能实际使用两种布局,具体取决于屏幕的方向(如果 可用的宽度在一个方向上至少为 600dp,而在另一个方向上小于 600dp)。

如果您关注可用高度,便可使用 h<N>dp 限定符执行同样的操作。或者,如果您需要很具体,甚至可以结合 w<N>dp 与 h<N>dp 限定符。

声明屏幕尺寸支持

在对不同的屏幕尺寸实现您的布局后,在 清单文件中声明您的应用支持哪些屏幕相当重要。

与用于屏幕尺寸的新配置限定符一起,Android 3.2 为 <supports-screens> 清单元素引入了新的属性:

android:requiresSmallestWidthDp
指定需要的最小 smallestWidth。smallestWidth 是必须为您的应用 UI 提供的 屏幕空间的最短尺寸(dp 单位)—即 可用屏幕的两个尺寸中的最短者。因此,为使设备 与您的应用兼容,设备的 smallestWidth 必须等于或大于此 值。(通常,无论屏幕的当前方向如何, 此值都是布局支持的“最小宽度”。)

例如,如果您的应用只用于最小可用宽度为 600dp 的平板电脑样式设备:

<manifest ... ><supports-screens android:requiresSmallestWidthDp="600" />...
</manifest>

但是,如果您的应用支持 Android 支持的所有屏幕尺寸(小至 426dp x 320dp),则无需声明此属性,因为应用 需要的最小宽度就是任何设备上可以实现的最小宽度。

注意:Android 系统不关注此 属性,因为它不影响应用在运行时的行为,而是被用于 在服务(例如 Google Play)上过滤您的应用。但是,Google Play 目前不支持此属性用于过滤(在 Android 3.2 上),因此如果您的应用不支持 小屏幕,您应继续使用其他尺寸属性。

android:compatibleWidthLimitDp
此属性可让您指定用户支持的最大“最小宽度”,将屏幕兼容性模式用作 用户可选的功能 。如果设备可用屏幕的最小边大于您在这里的值, 用户仍可安装您的应用,但提议在屏幕兼容性模式下运行。默认 情况下,屏幕兼容性模式会停用,并且您的布局照例会调整大小以 适应屏幕,但按钮会显示在系统栏中,可让用户打开和关闭屏幕兼容性 模式。

注:如果您的应用可针对大 屏幕正确调整大小,则无需使用此属性。建议不要使用此 属性,而是按照本文档的 建议,确保您的布局针对较大屏幕调整大小。

android:largestWidthLimitDp
此属性可让您指定应用支持的最大“最小宽度”来强制启用屏幕兼容性模式。 如果设备可用屏幕的最小 边大于您在这里的值,应用将在屏幕 兼容性模式下运行,且用户无法停用该模式。

注:如果您的应用可针对大 屏幕正确调整大小,则无需使用此属性。建议不要使用此 属性,而是按照本文档的 建议,确保您的布局针对较大屏幕调整大小。

注意:针对 Android 3.2 及更高版本开发时,您 应改为将旧屏幕尺寸属性与上列 属性结合使用。同时使用新属性和旧尺寸属性可能导致 非预期的行为。

如需了解每个属性的更多信息,请跟随上面各自的链接。

android-支持多种屏幕[声明适用于 Android 3.2 的平板电脑布局] 七相关推荐

  1. 创建支持多种屏幕尺寸的Android应用

    负责人:冰凝 原文链接:http://developer.android.com/guide/practices/screens_support.html Android涉及各种各样的支持不同屏幕尺寸 ...

  2. android支持多种屏幕

    术语和概念 屏幕尺寸 实际的物理尺寸,测量屏幕的对角线. 为简单起见,Android的组中的所有实际的屏幕尺寸分为四个广义大小:小,正常,大,超大. 屏幕像素密度 屏幕的物理区域内的像素的数量,通常简 ...

  3. ym——Android怎样支持多种屏幕

    转载请注明本文出自Cym的博客(http://blog.csdn.net/cym492224103),谢谢支持! 原文链接:http://developer.android.com/guide/pra ...

  4. Android如何支持多种屏幕

    支持多屏 Android涉及各种各样的支持不同屏幕尺寸和密度的设备.对于应用程序,Android系统通过设备和句柄提供了统一的开发环境,大部分工作是校正每一个应用程序的用户界面到它显示的屏上.与此同时 ...

  5. ym——Android如何支持多种屏幕

    转载请注明本文出自Cym的博客(http://blog.csdn.net/cym492224103),谢谢支持! 原文链接:http://developer.android.com/guide/pra ...

  6. android适配性报告,关于Android的多种屏幕适配

    严格来说,作为读者,你应该带着批判性质的眼光来看这篇文章,因为这篇文章是一个尚未通读Android官方开发资料<Supporting Multiple Screens>的纯产品人员所写,相 ...

  7. android 布局 不同屏幕大小,如何创建支持不同屏幕尺寸的Android应用

    Supporting Different Screens Android用两种常规属性来分类设备屏幕:尺寸和像素密度.作为开发者,你应当预料到你的android应用程序将会被安装到不同屏幕尺寸和像素密 ...

  8. 如何创建支持不同屏幕尺寸的Android应用(转载)

    2019独角兽企业重金招聘Python工程师标准>>> 源地址:http://wiki.eoe.cn/page/Supporting_Different_Screens Suppor ...

  9. 分享-RK3399支持多种屏幕接口如何进行屏幕切换控制

    本文硬件平台以飞凌嵌入式OK3399-C开发板为基础进行讲解,其它RK3399产品,由于各个厂家设置不同会有所差异,请参考使用.本文详细介绍了RK3399开发板屏幕切换控制的两种方式,uboot菜单动 ...

最新文章

  1. linux系统开机静态分配ip地址
  2. Django之BBS博客项目
  3. Vue.js:监听属性
  4. intValue()的用法
  5. 前端基础HTML5CSS3动画
  6. Ext.js4.x 的面板中嵌入UEditor编辑器
  7. Linux ls命令:查看目录下文件
  8. 小程序禁止左右拖动_网课视频快进小技巧
  9. 无人驾驶(ncnn学习)
  10. eclipse开发servlet,HttpServletRequest报红叉解决方案
  11. eclipse 闪退原因
  12. 修复APP的BUG,热修复的知识点和大厂的相关资料汇总
  13. XGBoost如何画出树分裂图,用代码绘制多棵CART回归树
  14. DOM系列之scroll系列
  15. C语言学习--01 认识数据类型
  16. win10家庭版解决“管理员已阻止你运行此应用”
  17. [IOS]swift如何换行
  18. Unity处理MP3流播放
  19. 身体语言密码_《身体语言密码》总结:简介篇
  20. 数据治理解决方案 PPT

热门文章

  1. CAD2023下载安装教程
  2. seq2seq文本翻译的例子
  3. 关于静态代码块的执行顺序,很简单的一道题,应该所有人都会吧?
  4. 设计模式之 — 抽象工厂模式
  5. 蓝牙HC-05上电自动互联(最详细教程)
  6. 计算机网络(严伟 潘爱民)通过课后题总结学习网络 --持续更新
  7. 《FFmpeg Basics》中文版-01-FFmpeg基本介绍
  8. CIO访谈实录:2016里约奥运会CIO伊丽·雷森迪
  9. MQL--量化交易编程语言
  10. 大数据行业面试注意这几点,让你招招“制敌”