注意: 随着 Android 9.0 (API level 28) 的发布,支持库有一个新版本,称为 AndroidX,它是 Jetpack 的一部分。AndroidX 库包含现有的支持库,并且还包括最新的 Jetpack 组件。
您可以继续使用支持库。历史工件(版本 27 及更早版本,打包为 android.support.*
)将保留在 Google Maven 上。但是,所有新的库开发都将在 AndroidX 库中进行。
我们建议在所有新项目中使用 AndroidX 库。您也应考虑将现有项目迁移到 AndroidX。
支持库提供了广泛的类,用于构建应用,从基本应用组件、用户界面微件到媒体处理、再到电视应用组件。其中许多类是向后兼容的实现,但有些本身就是新特性。
本文档概述了支持库中可用的重要特性类别,以及在构建应用时应了解的特定类。
要了解如何将支持库代码添加到您的应用开发项目中,请参阅支持库设置。要了解如何在项目中包含特定的支持库软件包,请参阅支持库软件包。
应用组件
这些支持库类提供了重要的核心平台特性的向后兼容实现。这些实现通常扩展了类的早期版本,以处理平台近期版本中添加的新方法和特性。其中一些类是框架 API 的完整静态实现。
- Activity
ActivityCompat
- 包含 Activity 近期关键特性的向后兼容实现,例如运行时权限和动画过渡。FragmentActivity
- 提供 Activity 使用支持库版本Fragment
和Loader
API 的向后兼容实现。AppCompatActivity
- 为早期设备提供 Material Design 颜色主题、微件着色和应用栏支持。使用此类需要您使用Theme.AppCompat
主题以获得一致的视觉呈现。
Fragment
- 提供框架Fragment
类的独立实现。此类必须与FragmentActivity
一起使用。ContextCompat
- 为Context
类近期版本中引入的特性提供支持,包括权限支持、文件访问和颜色信息。IntentCompat
- 为Intent
类近期版本中引入的特性提供支持,包括用于选择和启动特定 Activity 的方法。Loader
- 提供框架Loader
类的静态实现,并且是AsyncTaskLoader
和CursorLoader
支持类的基类。Preference
- 此类及其子类以向后兼容的方式提供了应用设置用户界面的实现。ContentResolverCompat
- 为ContentResolver
类近期版本中引入的特性提供支持,特别是支持取消进行中的查询的query()
方法。
用户界面
这些支持库类提供关键用户界面微件和行为的实现,并帮助您在早期设备上创建更现代的应用界面。其中一些微件仅通过支持库提供。
通用布局容器
这些支持类提供了可以适应不同设计用例的用户界面容器。
RecyclerView
- 创建一个用于显示长列表的布局,使用一种策略来避免高内存消耗。此类允许您在更大的数据集中创建有限的窗口视图,从而避免在显示列表时消耗大量内存。有关使用RecyclerView
的更多信息,请参阅列表视图指南。ViewPager
- 提供一个布局,允许用户左右翻页查看数据。GridLayout
- 提供一种布局,其中子视图排列在矩形网格中,支持连续单元格的任意跨度和灵活的空间分布。此类提供了 Android 4.0 (API level 14) 中引入的GridLayout
类的向后兼容版本。PercentFrameLayout
和PercentRelativeLayout
- 提供支持子视图和内容基于百分比的尺寸和边距的布局。
注意: ViewPager
、RecyclerView
、PercentFrameLayout
和 PercentRelativeLayout
类仅在支持库中提供。
专用布局容器
这些支持类提供了特定布局模式的兼容实现,例如可以从屏幕边缘拉出的抽屉视图、滑动面板以及列表中的嵌套列表。
DrawerLayout
- 创建一种布局,允许交互式的抽屉视图从视图窗口边缘拉出。SlidingPaneLayout
- 提供一种水平的多窗格布局,用于应用用户界面的顶层,创建能够平滑适应各种屏幕尺寸的布局,在较大屏幕上展开,在较小屏幕上折叠以适应空间。NestedScrollView
- 一种支持嵌套其他滚动视图的滚动布局,允许您创建包含额外的子列表的列表。这些嵌套列表可以包含与父列表独立地水平或垂直滚动的项目。SwipeRefreshLayout
- 提供一种布局,支持通过手指滑动刷新列表或其他布局中的数据。
视图、对话框和微件
支持库提供了许多用于在布局中显示内容和提供用户交互元素的类。
CardView
- 支持库中的自定义类,用于创建 Material Design 风格的显示卡片。此类基于 FrameLayout,带有圆角和阴影。AppCompatDialogFragment
- 通过扩展DialogFragment
并使用AppCompatDialog
提供风格一致的对话框。NotificationCompat
- 以向后兼容的方式支持较新的通知样式。SearchView
- 提供一个类,供用户输入搜索查询并向搜索提供商提交请求,主要用于应用栏。
Material Design
支持库提供了许多用于实现 Material Design 用户界面建议的类。
CoordinatorLayout
- 提供包含 Material Design 组件和行为的布局的顶层容器。此类也可以用作与一个或多个子视图进行特定交互的容器。AppBarLayout
- 提供 Material Design 的应用栏概念的许多滚动特性的实现。FloatingActionButton
- 创建浮动按钮,用于显示特殊类型的推广操作。此 Material Design 用户界面元素显示为一个浮在应用用户界面上方的圆形图标。有关更多信息,请参阅添加浮动操作按钮。DrawerLayout
- 创建一个导航抽屉——一个显示应用主导航菜单的 UI 面板。当用户从屏幕左边缘滑动手指或点击应用栏中的抽屉图标时,它会出现。有关更多信息,请参阅创建导航抽屉。TabLayout
- 提供用于显示选项卡式页面的布局。此微件设计用于与ViewPager
类一起使用。Snackbar
- 提供一个微件,用于通过Snackbar 弹窗显示关于某项操作的轻量级反馈。
图形
android.support.graphics.drawable
软件包提供了对矢量可绘制对象的支持。通过使用矢量可绘制对象,您可以用一个在 XML 中定义的矢量图形替换多个 PNG 资源。
VectorDrawableCompat
在 API level 9 及更高版本上提供了对矢量可绘制对象的支持。AnimatedVectorDrawableCompat
在 API level 11 及更高版本上提供了对动画矢量可绘制对象的支持。
无障碍功能
android.support.v4.view.accessibility
软件包提供了实现 API level 14 及更高版本中引入的无障碍特性的兼容类,这些类允许无障碍服务观察和识别用户与屏幕上显示的项目之间的交互。
ExploreByTouchHelper
- 在表示视图般逻辑项目集合的自定义 View 中提供无障碍支持。
媒体播放
Android 支持库为运行早于 Android 4.1 (API level 16) 版本平台的设备提供了媒体路由器功能的向下移植。这些类允许在连接的 Android 设备上控制媒体播放。
MediaRouter
- 使应用能够控制媒体频道和流从当前设备到外部扬声器和目标设备的路由。MediaControllerCompat
- 允许应用与正在进行的媒体会话交互。应用可以通过此机制提供媒体控制按钮,并向会话发送其他播放命令。MediaSessionCompat
- 提供媒体播放的远程控制接口,实现与其他应用或独立设备中的媒体控制器、音量键、媒体按钮和传输控制的交互。
电视应用
Android SDK 提供了支持大屏幕等外形规格及其相关控制器的库。应用可以依赖适当的支持库,以便在各种平台版本上提供功能,并可以在外部屏幕、扬声器和其他目标设备上提供内容。
Wear 应用
Android SDK 提供了支持手表的库。这些库为用户佩戴手表时可用的应用提供了功能。
实用工具
Android 支持库提供了许多框架中未内置的特性。这些库提供了一系列应用可以使用的实用工具。