Android 3.2 API

API 级别13

Android 3.2 (HONEYCOMB_MR2) 是一个增量平台版本,新增了 为用户和开发者提供各种实用功能以下部分简要介绍了相关内容 新功能和开发者 API。

对于开发者,Android 3.2 平台以 可下载组件该可下载平台包括: Android 库和系统映像,以及一组模拟器皮肤和 。要开始针对 Android 3.2 进行开发或测试,请执行以下操作: 使用 Android SDK 管理器将该平台下载到您的 SDK 中。

平台亮点

新用户功能

  • 针对更广泛的平板电脑进行优化

    Android 3.2 包含针对整个系统的各种优化 以确保在更广泛的平板电脑设备上提供卓越的用户体验。

  • 适用于固定尺寸应用的兼容性缩放功能

    Android 3.2 引入了一个新的兼容性缩放模式,可提供 为用户提供一种在大屏设备上查看固定尺寸应用的新方式。此新模式提供了 像素缩放的替代方案来替代标准界面拉伸, 这种广告适合在较大的屏幕尺寸(例如平板电脑)上投放。新模式是 用户可通过系统栏中的菜单图标访问 兼容性支持。

  • 从 SD 卡同步媒体

    在支持 SD 卡的设备上,用户现在可以直接加载媒体文件 从 SD 卡转移到使用这些文件的应用。借助系统工具 供应用从系统媒体库访问。

新的开发者功能

  • 用于管理屏幕支持的扩展 API

    Android 3.2 针对平台的屏幕支持 API 引入了扩展,以便 为开发者提供了更多方式来管理应用界面, 采用 Android 的手机。该 API 包含新的资源限定符和 清单属性,可让您更精确地 控制 应用以不同的尺寸展示 尺寸类别。

    为了确保固定尺寸的应用和存储空间有限的应用尽可能呈现最佳显示效果 该平台还提供了新的缩放功能,支持各种屏幕尺寸, 兼容模式,在较小的屏幕区域上呈现界面,然后进行缩放 以填满屏幕上的可用空间如需详细了解 屏幕支持 API 及其提供的控件,请参阅下文。

API 概览

屏幕支持 API

Android 3.2 引入了新的屏幕支持 API,可让您 控制其应用在不同尺寸屏幕上的显示方式。 此 API 基于现有的屏幕支持 API 构建,包括平台的 通用屏幕密度模型, 按尺寸来定位特定屏幕范围 密度无关像素单位(例如 600dp 或 720dp),而不是 按广义屏幕尺寸(例如大屏幕或特大屏幕)

在设计应用的界面时,您仍然可以依靠平台 提供密度抽象化,这意味着应用无需 补偿设备之间实际像素密度的差异。您 您可以根据水平或垂直方向的距离来设计应用界面 可用空间。该平台使用三个新的 特性:smallestWidthwidthheight

  • 屏幕的 smallestWidth 是其基本最小尺寸, 以密度无关像素(“dp”)为单位进行测量。屏幕高度或 是两者中较短的一个。对于纵向屏幕, smallestWidth 通常基于其宽度,而在横向模式下,它基于宽度 高度。在任何情况下,smallestWidth 都源自 且该值无论屏幕方向如何都不会改变。smallestWidth 对应用来说非常重要,因为它代表了可能的最短宽度, 需要绘制应用界面的位置,不包括屏幕区域 预留的资源。
  • 相比之下,屏幕的宽度高度则代表 应用布局当前可用的水平或垂直空间(测量尺寸) 以“dp”为单位广告单元,不包括系统预留的屏幕区域。宽度和 当用户在横向模式之间切换时,屏幕的高度会发生变化 和纵向。

新的屏幕支持 API 旨在让您管理应用界面 根据当前屏幕的 smallestWidth 定义。您还可以管理 根据需要根据当前宽度或高度显示界面。为此,该 API 提供这些工具:

  • 新增资源限定符,用于将布局和其他资源定位到 minimum smallestWidth、width 或 height
  • 新的清单属性,用于指定应用的最大 屏幕兼容性范围

此外,应用仍然可以查询系统并管理界面和 与之前的平台版本一样。

由于新 API 可让您更直接地通过 smallestWidth 定位屏幕, 宽度、高度和高度,这有助于您了解 不同屏幕类型的特征。下表提供了一些 样本,以“dp”为单位单位。

表 1. 典型设备(具有密度) 和尺寸(以 dp 为单位)。

类型 密度(通用) 尺寸 (dp) 最小宽度 (dp)
基准电话 mdpi 320x480 320
小屏平板电脑/大屏手机 mdpi 480x800 480
7 英寸平板电脑 mdpi 600x1024 600
10英寸平板电脑 mdpi 800x1280 800

以下部分详细介绍了新的屏幕限定符 和清单属性。有关如何使用屏幕的完整信息 支持 API,请参阅支持多种 屏幕

为屏幕支持新增了资源限定符

Android 3.2 中的新资源限定符可让您更好地定位布局 各种屏幕尺寸您可以使用限定符创建资源, 特定最小 smallestWidth、当前宽度或 当前高度(以密度无关像素为单位)。

新的限定符包括:

  • swNNNdp - 指定将要加载的最小 smallestWidth 应该使用的资源(以“dp”为单位)单位。如上所述, 无论屏幕方向如何,屏幕的 smallestWidth 是恒定的。示例: sw320dpsw720dpsw720dp
  • wNNNdphNNNdp - 指定最小值 资源应使用的宽度或高度(以“dp”为单位)单位。如 屏幕的宽度和高度是相对于 屏幕,并随方向的改变而改变。示例: w320dpw720dph1024dp

您还可以根据需要创建多个重叠的资源配置。 例如,您可以标记一些资源,以便在宽度超过 480 的任意屏幕中使用 dp,其他用于宽度大于 600 dp,其他用于宽度大于 720 dp。时间 多个资源配置都适用于给定屏幕,则系统 选择最匹配的配置。为了精确控制 指定屏幕上会加载哪些资源,则可使用一个 限定符,也可以结合使用多个新的或现有的限定符。

根据前面列出的典型维度,下面列举了一些示例来说明 可以使用新的限定符:

res/layout/main_activity.xml   # For phones
res/layout-sw600dp/main_activity.xml   # For 7” tablets
res/layout-sw720dp/main_activity.xml   # For 10” tablets
res/layout-w600dp/main_activity.xml   # Multi-pane when enough width
res/layout-sw600dp-w720dp/main_activity.xml   # For large width

旧版本的平台将忽略新的限定符,因此您可以 请根据需要进行混合,以确保您的应用在任何设备上都能完美呈现。在这里 示例如下:

res/layout/main_activity.xml   # For phones
res/layout-xlarge/main_activity.xml   # For pre-3.2 tablets
res/layout-sw600dp/main_activity.xml   # For 3.2 and up tablets

有关如何使用新限定符的完整信息,请参阅使用新限定符 尺寸限定符

新增了用于实现屏幕尺寸兼容性的清单属性

该框架提供了一组新的 <supports-screens> 清单属性, 您可以管理应用对不同屏幕尺寸的支持情况。 具体而言,您可以指定应用支持的最大和最小屏幕 以及运行时所在的最大屏幕 而不需要系统的新屏幕 兼容模式。与上述资源限定符一样,新的 指定应用支持的屏幕范围, 由 smallestWidth 指定。

用于支持屏幕的新清单属性包括:

  • android:compatibleWidthLimitDp="numDp" - 这 属性可以指定 无需兼容模式即可运行如果当前屏幕大于 指定的值,系统将以普通模式显示应用, 允许用户通过 。
  • android:largestWidthLimitDp="numDp" - 这 属性可以指定 运行如果当前屏幕大于指定的值, 系统会强制应用进入屏幕兼容性模式,以确保最佳 当前屏幕上显示的内容
  • android:requiresSmallestWidthDp="numDp" - 这 属性可指定应用所需的最小 smallestWidth 运行。如果当前屏幕小于指定的值,系统会 认为应用与设备不兼容,但不会阻止它 无法安装和运行

注意:Google Play 目前不进行过滤 应用。将支持过滤功能 在后续平台版本中添加的功能。需要 根据屏幕尺寸进行过滤可以使用现有的 <supports-screens> 属性。

有关如何使用新属性的完整信息,请参阅声明 屏幕尺寸支持

屏幕兼容模式

Android 3.2 为应用提供了新的屏幕兼容模式 明确声明它们不支持 运行应用的系统这个新的“缩放”功能模式就是像素缩放, 以较小的屏幕区域呈现应用,然后将像素调整为 填满当前屏幕。

默认情况下,系统会为应用提供屏幕兼容性模式作为用户选项 所需的资源。用户可以使用可用的控件来开启和关闭缩放模式 。

因为新的屏幕兼容性模式可能并不适合 则平台允许应用使用清单将其停用 属性。被应用停用后,系统不会提供“缩放”兼容性 模式作为一种选项供用户在应用运行时使用。

注意:如需了解有关如何 如需控制应用中的兼容模式,请参阅 Android 设备上的适用于大屏设备的新模式一文。 开发者博客。

针对 720p 电视和类似设备的全新屏幕密度

为了满足在 720p 电视或类似电视设备上运行的应用的需求 Android 3.2 引入了一种新的广义密度, tvdpi,约为 213 dpi。应用可以查询 densityDpi 中的新密度,并且可以使用 新的 tvdpi 限定符,用于标记电视资源和 类似设备。例如:

res/drawable-tvdpi/my_icon.png   # Bitmap for tv density

一般情况下,应用应该不需要使用此密度。特殊情况 当需要输出 720p 的屏幕时,可以缩放界面元素 由平台自动管理

界面框架

  • fragment <ph type="x-smartling-placeholder">
      </ph>
    • 新的 Fragment.SavedState 类用于保存状态 从 fragment 实例检索到 saveFragmentInstanceState()
    • 新方法 saveFragmentInstanceState() 会保存 指定的 Fragment。此状态稍后可在创建新实例时使用 与当前状态匹配的 Fragment 的
    • 新方法 setInitialSavedState() 用于设置首次构建 Fragment 时的初始保存状态。
    • 新的 onViewCreated() 回调方法会通知 Fragment: onCreateView() 但还未将任何已保存状态恢复到视图中之前。
    • isDetached() 方法决定了 Fragment 已明确与界面分离。
    • 新建attach()detach() 方法可让应用在界面中重新附加或分离 fragment。
    • 新的 setCustomAnimations() 重载方法可让您设置特定动画 为进入/退出操作而运行的资源,特别是在 弹出返回堆栈现有实现未考虑 ,以了解 fragment 在弹出返回堆栈时的不同行为。
  • ActivityInfo 和 ApplicationInfo 中的屏幕尺寸信息 <ph type="x-smartling-placeholder">
  • 用于从 WindowManager 获取显示屏尺寸的帮助程序 <ph type="x-smartling-placeholder">
  • 新增公开“全息”样式 <ph type="x-smartling-placeholder">
      </ph>
    • 该平台现在提供各种公开的“全息”图像,样式 用于文本、操作栏微件和标签页等。请参阅 如需查看完整列表,请R.style
  • LocalActivityManagerActivityGroupLocalActivityManager 现已弃用
    • 新应用应使用 Fragment 而不是这些类。接收者 继续在旧版本平台上运行,您可以使用 v4 支持 库(兼容性库),在 Android SDK 中提供。v4 支持 库提供了一个 Fragment API 版本,该版本向下兼容 Android 1.6(API 级别 4)。
    • 对于针对 Android 3.0(API 级别)开发的应用 11) 或更高版本,则通常使用新版界面在界面中显示标签页 ActionBar.newTab() 和相关 API 用于将标签页放置在操作栏区域内。

媒体框架

  • 使用平台媒体提供程序 (MediaStore) 的应用现在可以直接从 可拆卸 SD 卡(如果设备支持)。应用还可以 使用 MTP API 直接与 SD 卡文件交互。

图形

IME 框架

  • 新增了 getModifiers() 方法: 检索辅助键的当前状态。

USB 框架

  • 新增了 getRawDescriptors() 方法: 检索设备的原始 USB 描述符。您可以使用 方法,即通过更高级别的 API 访问不支持的描述符, 级别 API。

网络

电话

核心实用程序

新功能常量

平台添加了新的硬件功能常量,您可以声明这些常量, 应用清单中,以告知 Google 等外部实体 试玩所需的硬件和软件功能。您声明这些 和 <uses-feature> 清单元素中的其他功能常量。

Google Play 会根据 <uses-feature> 属性过滤应用,以确保应用只提供给满足其要求的设备。

  • 针对横向或纵向要求的功能常量

    Android 3.2 引入了新的功能常量,允许应用指定其是需要横向显示、纵向显示还是两者均需显示。声明这些常量表示应用不得安装在不提供相关屏幕方向的设备上。相反,如果未声明其中一个或两个常量,则表示应用对未声明的屏幕方向没有偏好,可以安装在不提供这些屏幕方向的设备上。

    在横向和纵向屏幕方向中都能正常运行的典型应用通常不需要声明屏幕方向要求。相反,主要针对一种屏幕方向设计的应用(例如针对电视设计的应用)可以声明其中一个常量,以确保不提供该屏幕方向的设备无法使用它。

    如果清单文件中声明的任何 activity 以特定屏幕方向运行, android:screenOrientation 属性,那么这也声明了应用 需要该方向

  • 其他功能常量 <ph type="x-smartling-placeholder">

API 差异报告

如需详细了解 Android 3.2(API 级别 13),请参阅 API 差异报告

API 级别

Android 3.2 平台提供了 框架 API。Android 3.2 API 分配了整数标识符 - 13 - 即 存储在系统本身中。此标识符称为“API 级别”,允许 正确确定应用是否与 然后再安装应用程序。

要在您的应用中使用 Android 3.2 中引入的 API,请执行以下操作: 您需要根据此 API 中提供的 Android 库 Android 3.2 SDK 平台。您可以根据自己的需求 可能 还需要添加一个 android:minSdkVersion="13" 属性添加到应用的 <uses-sdk> 元素中, 清单。

有关详情,请参阅什么是 API 水平?