本页详细介绍了之前的支持库软件包版本。如需了解最新的支持库版本,请参阅支持库的最新修订版本。
修订版 26.0.0 测试版 2
(2017 年 6 月)
请注意,26.0.0-beta2 是一个预发布版本。其 API Surface 可能会发生更改,且不一定包含最新稳定版支持库中的功能或 bug 修复。
重要提示:支持库现在可以通过 Google 的 Maven 制品库获取。您无需从 SDK 管理器下载支持代码库。如需了解详情,请参阅支持库设置。
新增 API
- 新增了
JobIntentService
类,可帮助开发者以符合新的 Android O 后台执行限制要求的方式调度任务。
API 差异
bug 修复
- Android O SDK 弃置导致 TextView 中的斜体丢失
- 连接到 MediaBrowserServiceCompat 时出现 Null 指针异常
- TextInputLayout 必须在 onProvideAutofillStructure() 上设置提示
- 在 Android O 上使用 TextView 自动调整大小时出现堆栈溢出
修订版 26.0.0 测试版 1
(2017 年 5 月)
请注意,26.0.0-beta1 是一个预发布版本。其 API Surface 可能会发生更改,且不一定包含最新稳定版支持库中的功能或 bug 修复。
重要提示:支持库现在可以通过 Google 的 Maven 制品库获取。您无需从 SDK 管理器下载支持代码库。如需了解详情,请参阅支持库设置。
重要变更
- 移除了
FragmentActivity.setSupportMediaController()
和FragmentActivity.getSupportMediaController()
。请使用新的静态MediaControllerCompat.setMediaController()
和MediaControllerCompat.getMediaController()
方法。 - 现在,当用户选择已经选择的项时,
BottomNavigationView
会调用onNavigationItemReselected()
,而不是调用onNavigationItemSelected()
。 findViewById()
方法的所有实例现在会返回<T extends View> T
,而不是View
。此项变更会产生以下影响:- 这可能导致现有代码的返回类型不明确,例如,如果同时存在
someMethod(View)
和someMethod(TextView)
接受findViewById()
调用的结果。 - 使用 Java 8 源语言时,如果返回类型不受限制(例如
assertNotNull(findViewById(...)).someViewMethod())
),则需要显式转换为View
。 - 非最终
findViewById()
方法(例如Activity.findViewById()
)的替换方法需要更新其返回类型。
- 这可能导致现有代码的返回类型不明确,例如,如果同时存在
新增 API
-
FragmentManager
和Fragment
具有isStateSaved()
方法,可用于查询是否允许某事务执行而不丢失状态。这对于在执行任何事务之前检查何时处理onClick()
事件尤为有用。 AnimatedVectorDrawableCompat
支持路径动作。通过路径动作,一个对象 Animator 可以基于一个路径同时更改两个属性;该路径在 Animator 的 XML 中指定为android:pathData
。- 基于物理特性的动画:
- 新增了
FlingAnimation
,支持使用初始速度添加动画效果并平滑减速。 DynamicAnimation
的子类支持为任何对象的自定义属性添加动画效果。SpringAnimation
和FlingAnimation
现在都可以为浮点值添加动画效果,而无需View
或Object
与之关联。
- 新增了
-
XML 中的字体支持:
-
ResourcesCompat.getFont
允许加载可与TextView.setTypeface()
配合使用的字体资源(包括字体系列 XML)。 - 使用 AppCompat 时,TextView 支持通过
android:fontFamily
XML 属性指定字体资源或字体系列 XML。 - 使用 XML 字体系列创建具有不同样式和粗细的字体系列。(如果您使用支持库类执行此操作,请使用
app:
属性和android:
属性)。
-
- 可下载的字体:
- 新增了
FontsContractCompat
,可让您向字体提供程序请求字体,而不是将其捆绑在应用中。 - 字体也可以在 XML 中请求,并在布局中使用。
- 新增了
-
表情符号兼容性库:
-
EmojiCompat
可处理给定的CharSequence
并添加EmojiSpans
。 -
EmojiTextView
和其他 widget 显示表情符号。 -
FontRequestEmojiCompatConfig
,用于向字体提供程序请求表情符号字体。
-
-
自动调整 TextView 的大小:
TextViewCompat
中新增了方法以及 XML 属性,用于控制TextView
中的自动调整大小。
- 支持跳转的 Leanback 播放控件:
-
- 新增了
PlaybackTransportRowPresenter
,可使用 SeekBar 呈现播放控件。 - 新增了
PlaybackTransportControlGlue
,可与PlaybackTransportRowPresenter
搭配使用且支持跳转。 - 为应用新增了基类
PlaybackSeekDataProvider
,以便为PlaybackTransportControlGlue
提供跳转缩略图。
- 新增了
- Preferences Data Store:
-
PreferenceDataStore
现在允许您实现自己的偏好设置存储,通过Preference
和PreferenceManager
中的新方法进行设置。
-
已知问题
- 与 Google Play 服务的可下载字体和表情符号兼容性集成仅适用于 Google Play 服务 v11 及更高版本,目前可通过 Google Play 服务 Beta 版计划获取。
bug 修复
-
MediaBrowserCompat.search()
API 不起作用(AOSP 问题 262170) -
ViewCompat.postInvalidateOnAnimation()
会抛出异常(AOSP 问题 80146) -
针对已销毁的 Activity 中的 fragment 调用
onActivityCreated()
-
在预提取期间,
RecyclerView.isComputingLayout()
应返回 true -
当
Fade
过渡中断或反转时,View
会从头开始播放动画。(修复从 Android 框架移植时出现的问题)。 -
Transition.Fade
忽略View
的初始 Alpha 版本(AOSP 问题 221820)
修订版 26.0.0 Alpha 版 1
(2017 年 3 月)
请注意,26.0.0-alpha1 是一个预发布版本。其 API Surface 可能会发生更改,且不一定包含最新稳定版支持库中的功能或 bug 修复。
重要变更
注意:最低 SDK 版本已提高至 14。因此,我们弃用了仅用于实现与 API 14 以下级别兼容性的许多 API。这些 API 的客户端应该迁移到其等效框架,正如每个弃用 API 对应的参考页面中所述。
- support-percent 模块已弃用。此模块的客户端应该迁移到新的 ConstraintLayout 微件,此微件作为 SDK 管理器中的单独工件提供。
- support-fragment 模块不再依赖于 support-media-compat 模块。
新增 API
新增了许多类、方法和常量,为 O 预览版中添加的平台 API 提供向后兼容性支持。
IME_FLAG_NO_PERSONALIZED_LEARNING
:IME 可以监听具有私密模式的应用(例如浏览器)的“不学习”标记。此功能有助于 IME 了解应用是否处于私密模式,以便在应用处于私密模式时停用其学习或自适应功能。
如需查看 25.2.0 和 26.0.0-alpha1 之间 API 变更的完整列表,请参阅支持库 API 差异报告。
bug 修复
- 在某些情况下,简单的
AutoTransition
动画可能会被视图“跳跃”中断。(AOSP 问题 221816)
修订版 25.4.0
(2017 年 6 月)
重要提示:支持库现在可以通过 Google 的 Maven 制品库获取。您无需从 SDK 管理器下载支持代码库。如需了解详情,请参阅支持库设置。
重要变更
- 在
FragmentManager
状态更改期间,不允许执行executePendingTransactions()
、commitNow()
、popBackStackImmediate()
及类似的事务调用。事务的可重入执行不安全,FragmentManager
现在会在其状态更改期间强制执行此操作。 - 在发布此支持库版本的同时,我们还发布了 MultiDex 1.0.2 版。此版本包含以下重要变更:
- 允许对插桩测试 APK 进行多 dex 处理。
- 废弃了 MultiDexTestRunner(应改用 AndroidJUnitRunner)。
- 提供更好的保护,以防应用进行一些不良的归档提取管理。
- 修复了可能导致临时文件被放弃的 bug。
- 在并发进程中完成时,可加快安装速度。
- 修复 API 19 和 20 上的安装 bug。
新增的和修改后的 API
AnimatedVectorDrawableCompat
支持路径变形和路径插值。通过路径变形,形状可以从一个路径(指定为 android:valueFrom
)更改为另一个路径(指定为 android:valueTo
),以提供复杂且具有吸引力的视觉效果。通过路径插值,可以将 AnimatedVectorDrawableCompat
的插值器指定为路径(在插值器的 XML 中指定为 android:pathData
)。
API 差异
修复的问题
- 连接到 MediaBrowserServiceCompat 时出现 Null 指针异常
- MediaBrowserCompat.search() API 不起作用(AOSP 问题 262170)
- 25.3.0 中损坏的 BrowseFragment onItemClicked 回调
- 在 25.3.1 中的 VerticalGridView 中上下滚动时出现 NullPointerException
- SimpleArrayMap.allocArrays() 中的 ClassCastException
修订版 25.3.1
(2017 年 3 月)
修复的问题
SwitchCompat
要求的最低 SDK 版本为 14 或更高版本。(AOSP 问题 251302)- 基于物理特性的动画
updateListener
会跳过第一帧。 BottomNavigationView
标签动画损坏。
修订版 25.3.0
(2017 年 3 月)
重要变更
从 Gradle 构建时,支持库版本元数据会自动添加到 AndroidManifest.xml
,从而简化了公开 build 中的版本跟踪。例如:
<meta-data android:name="android.support.VERSION" android:value="25.3.0" />
废弃
此版本中废弃了许多方法和类。这些已废弃的 API 将在未来的版本中移除,开发者应停止使用它们。如需详细了解如何停止使用特定 API,请参阅其文档。
ExifInterface
- 布尔值方法
getLatLong(float[])
已被弃用。请改用新方法getLatLong()
,该方法不接受任何参数并返回double[]
。 mediacompat
PlaybackStateCompat.Builder.setErrorMessage(CharSequence)
已废弃。请改用新方法setErrorMessage(int, CharSequence)
,系统会向其传递错误代码和可选说明。EXTRA_SUGGESTION_KEYWORDS
已弃用。请改用MediaBrowserCompat
搜索功能。v7.recyclerview
LinearLayoutManager.getInitialItemPrefetchCount()
已重命名为LinearLayoutManager.getInitialPrefetchItemCount()
。旧名称仍然受支持,但将在未来的版本中移除。
新增的和修改后的 API
appcompat-v7
- 新方法
ActionBarDrawerToggle.setDrawerSlideAnimationEnabled(boolean)
可简化停用抽屉式导航栏切换图标动画的过程。 customtabs
- 添加了对消息通道的支持。如需了解详情,请参阅
CustomTabsService.requestPostMessageChannel()
和CustomTabsService.postMessage()
参考文档。 dynamic-animation
- 基于物理特性的全新动画库,提供一组 API,用于构建动态响应用户输入的动画。
leanback-v17
- 添加了对视差背景的支持。如需了解详情,请参阅
Parallax
参考。 - 添加了用于在 TV 界面上选择时间的
TimePicker
微件。 mediacompat
- 添加了搜索功能。如需了解详情,请参阅
MediaBrowserCompat.search()
和MediaBrowserServiceCompat.onSearch()
参考文档。 - 添加了对随机播放和重复模式的支持。如需了解详情,请参阅
MediaSessionCompat.setRepeatMode()
和setShuffleModeEnabled()
参考文档。
修复的问题
StaggeredGridLayoutManager
会抛出IllegalArgumentException
(AOSP 问题 230295)RecyclerView
预提取无法正确处理附加但未显示在屏幕上的RecyclerView
- Robolectric 无法识别
LinearLayout
- 在
Activity
被销毁时,无法针对其 Fragment 正确调用onActivityCreated()
AppCompatImageView
构造函数导致ArrayIndexOutOfBoundsException
Call.Details
Activity 过渡中的界面性能较差
修订版 25.2.0
(2017 年 2 月)
重要变更
修复的问题
- 此版本修复了使用 A2DP 设备和媒体路由 API 可能会导致设备无响应而需要重新启动的严重 Mediarouter 问题。
FragmentManager.FragmentLifecycleCallbacks
类现在是静态类。
修复的问题
- 通过屏幕镜像展示幻灯片演示文稿会导致设备断开 Wi-Fi 连接
- 媒体按钮无法正确处理未使用
setMediaButtonReceiver()
自行注册的媒体应用 -
字符串资源出现
VectorDrawable
错误(AOSP 问题 232407) - 如果文本由 XML 设置,则
TextInputLayout
会叠加提示和文本(AOSP 问题 230171) MediaControllerCompat
中的内存泄漏(AOSP 问题 231441)-
RecyclerViewLayoutTest.triggerFocusSearchInOnRecycledCallback()
崩溃 - 在回收视图持有者时,
RecyclerView
发生崩溃(AOSP 问题 225762) getAllowGeneratedReplies()
针对WearableExtender
内的操作错误地返回 false
修订版 25.1.1
(2017 年 1 月)
重要提示:支持库修订版 25.1.1 和 25.1.0 中的 android.support.v7.media.MediaRouter
类存在一个已知错误。如果您的应用使用 v7 MediaRouter
,则应更新到支持库修订版 25.2.0,该版本修复了此错误。
重要变更
-
Fragment 事务现在可以在事务内部和事务之间进行优化。优化 fragment 事务操作可以消除取消的操作。例如,假设同时执行两个事务,一个添加 fragment A,另一个将 fragment A 替换为 fragment B。在这种情况下,第一个操作可能会被取消,只添加了 fragment B。这意味着 fragment A 可能不会经历创建/销毁生命周期。
此优化的副作用是 fragment 的状态更改可能与预期顺序不符。例如,假设一个事务添加 fragment A,另一个事务添加 fragment B,第三个事务移除 fragment A。如果不进行优化,则 Fragment B 可能会认为在创建过程中 Fragment A 也会存在,因为 Fragment A 将在添加 Fragment B 后移除。通过优化,Fragment B 无法确定在创建 B 时 Fragment A 是否存在,因为 Fragment A 的创建和销毁可能会被优化移除。
此优化默认处于停用状态。要启用优化,请调用
FragmentTransaction.setAllowOptimization(true)
。 - Fragment 现在可以使用
Fragment.postponeEnterTransition()
和Fragment.startPostponedEnterTransition()
推迟其转换和动画,直到准备就绪。此 API 类似于与 Activity 过渡配合使用的Activity.postponeEnterTransition()
和Activity.startPostponedEnterTransition()
。
修复的问题
-
MediaSessionCompatTest
失败并显示IllegalArgumentException
-
在 25.1.0 中未调用
DetailsFragment.installTitleView()
- Fragment 事务在退出时保留重影视图(AOSP 问题 230679)
-
BottomNavigationView
需要项图标和文本之间留出间距(AOSP 问题 230653) - 新的
PlaybackFragment
和PlaybackSupportFragment
中缺少选定的监听器 -
从支持库版本 25.1.0 开始,
TextInputLayout
焦点在模拟器中未正确更改(AOSP 问题 230461) - 无法替换
BottomNavigationView
的菜单(AOSP 问题 230343) -
带有
StaggeredGridLayoutManager
的RecyclerView
在使用完整跨度项时发生崩溃(AOSP 问题 230295) - 使用
setCallback(null)
时,MediaSessionCompat
中发生崩溃 -
PlaybackGlueHostOld
和PlaybackSupportGlueHostOld
在播放行更改时不通知回调 -
PlaybackOverlayFragment
示例/test
无法开始播放 -
RecyclerViewFocusRecoveryTest
在 API 15 上失败 - “屏幕截图”行聚焦在屏幕顶部
-
RecyclerViewLayoutTest.triggerFocusSearchInOnRecycledCallback()
在 API 15 上发生崩溃 -
onSubactionClicked()
中的setActions()
无法使用 -
在回收一些视图持有者时,
RecyclerView
发生崩溃
修订版 25.1.0
(2016 年 12 月)
重要提示:支持库修订版 25.1.1 和 25.1.0 中的 android.support.v7.media.MediaRouter
类存在一个已知错误。如果您的应用使用 v7 MediaRouter
,则应更新到支持库修订版 25.2.0,该版本修复了此错误。
重要变更
- 通过提示内部
RecyclerView
widget 的布局管理器,需要准备多少项才能在屏幕上滚动,嵌套RecyclerView
widget(例如,水平滚动列表的垂直滚动列表)的客户端可以显著提升性能。调用LinearLayoutManager.setInitialPrefetchItemCount(N)
,其中 N 是每个内部项可见的视图数。例如,如果您的内部水平列表一次显示至少 3 个半项视图,您可以通过调用LinearLayoutManager.setInitialPrefetchItemCount(4)
提升性能。这样做可以让RecyclerView
在外部RecyclerView
滚动时尽早创建所有相关视图,从而显著减少滚动期间的卡顿现象。 - 废弃了
FragmentActivity.setSupportMediaController()
和FragmentActivity.getSupportMediaController()
。请使用新的静态MediaControllerCompat.setMediaController()
和MediaControllerCompat.getMediaController()
方法。 - 如果客户端通过 appcompat 色调调节(例如
appcompat:buttonTint
)指定了微件色调调节,则客户端负责提供所有必要的状态(例如“已停用”“已按下”等)。这与使用框架色调调节时指定微件色调调节的方式一致。
新增的和修改后的 API
- 添加了 ExifInterface 支持库。此库取消了对从 JPEG 和原始格式的文件中读取 Exif 信息以及在 JPEG 图片文件上设置 Exif 信息的支持。
- 重构了
Snackbar
,以允许应用显示自定义内容。BaseTransientBottomBar
是提供常规滑动和动画行为的新基类。 - 添加了新的 leanback.media 软件包,其中包含用于将媒体播放器集成到 Android TV 应用的辅助类。
- 向 v7 Preference 支持库添加了具有可自定义布局和属性的
SeekBarPreference
。 - 向 v4 支持库添加了
ArraySet
类。此类对应于 API 级别 23 中引入的框架ArraySet
类。 RecyclerView
RecyclerView 项预提取改进:- 通过嵌套
RecyclerView
预提取,可以从另一个滚动RecyclerView
内的RecyclerView
预提取内容,并通过 API 控制完成的预提取量: - 为自定义
LayoutManager
对象添加了 API,实现这些 API 即可在滚动和投掷期间启用预提取 - 改进了预提取,以在帧之间的时间内仅执行尽可能多的创建/绑定工作
- 通过嵌套
修复的问题
- 显示/隐藏密码未通过无障碍功能测试。
- Appcompat 不遵循 Android L 之前设备上的
state_enabled
。 - 向
RecyclerView
添加了焦点恢复机制。这还修复了在使用方向键导航(例如在 Android TV 设备上)时偏好设置 fragment 无法聚焦的支持。 - Leanback:BrowseFragment 在头文件处于停用状态及适配器为空的情况下发生崩溃。
- Appcompat:
AlertDialog
太宽。 InputContentInfoCompat
在应该调用releasePermission()
时调用requestPermission()
。MediaBrowserCompat
发生崩溃。- 当可见性设置为
GONE
时,CoordinatorLayout 会测量/布局视图。 - 在低于 24 的 API 级别上,无法对
AnimatedVectorDrawableCompat
进行色调调节 - Leanback 库触发虚假的 lint 错误
- Palette 库导致每个 API 级别的测试失败
RecyclerView
在 Leanback 上未通过测试- 在回收视图持有者时,
RecyclerView
发生崩溃(AOSP 问题 225762) - 未对返回堆栈中的 fragment 调用
Fragment.onDestroy()
CollapsingToolbarLayout
纱罩在收起时不绘制CoordinatorLayout.offsetChildByInset()
会抛出IllegalArgumentException
- 为
RecyclerView
项添加动画效果,使其分离内部RecyclerView
,防止将来再次进行预提取 - 附加的
RecyclerView
项无法进行嵌套预提取 - 在第一次布局期间,系统会舍弃嵌套的
RecyclerView
项的预提取数据 - 如果两个拖动事件到达同一位置,
RecyclerView
预提取会失败 RecyclerView
应在 RenderThread 进行渲染时推测性布局- 转换为可绘制对象的夜间配置颜色资源并不总是从资源缓存中正确清除
FloatingActionButton
:以编程方式设置 BackgroundTintList 不起作用(AOSP 问题 227428)TextInputLayout
:没有为 ErrorView 设置字体(AOSP 问题 227803)- 在 API 级别低于 23 的情况下,
TextInputLayout
始终回退到浅色错误颜色(AOSP 问题 221992) FloatingActionButton
在指针离开时显示为已按下
AOSP 问题跟踪器中提供了一个完整的公开 bug 修复列表。
废弃
此版本中弃用了很多方法和类。这些已废弃的 API 将在未来的版本中移除,开发者应停止使用它们。如需详细了解如何停止使用特定 API,请参阅其文档。
-
android.support.design.widget
-
android.support.v17.leanback.app
BackgroundManager.getDefaultDimLayer()
BackgroundManager.getDimLayer()
BackgroundManager.setDimLayer()
MediaControllerGlue.MediaControllerGlue(Context,PlaybackOverlayFragment,int[])
MediaControllerGlue.MediaControllerGlue(Context,PlaybackOverlayFragment,int[],int[])
PlaybackControlGlue.PlaybackControlGlue(Context,PlaybackOverlayFragment,int[])
PlaybackControlGlue.PlaybackControlGlue(Context,PlaybackOverlayFragment,int[],int[])
PlaybackControlGlue.getFragment()
PlaybackControlGlue.getOnItemViewClickedListener()
PlaybackControlGlue.onRowChanged()
PlaybackControlGlue.pausePlayback()
PlaybackControlGlue.skipToNext()
PlaybackControlGlue.skipToPrevious()
PlaybackControlGlue.startPlayback()
PlaybackControlSupportGlue
PlaybackOverlayFragment
PlaybackOverlaySupportFragment
-
android.support.v17.leanback.widget
-
android.support.v4.app
FragmentActivity.getSupportMediaController()
FragmentActivity.setSupportMediaController()
修订版 25.0.1
(2016 年 11 月)
修复的问题
TextInputLayout
密码切换开关现在默认处于停用状态,以避免不必要地覆盖开发者指定的结束可绘制对象。您可以通过passwordToggleEnabled
XML 属性手动启用该模式。BottomNavigationView
项现在是单行,符合 Material 规范。- 如果布局管理器为 null,
RecyclerView
会在预提取期间崩溃。 BottomNavigationView
高度现已正确设置。(AOSP 问题 226182)- 在以编程方式添加菜单项时,
BottomNavigationView
发生崩溃。(AOSP 问题 225731) - 修复了
TextInputLayout
左右复合可绘制对象。(AOSP 问题 225836) - 在回收视图持有者时,
RecyclerView
发生崩溃。(AOSP 问题 225762) - Leanback:在分屏视图中,TalkBack 经常显示“null”一词。
RecyclerView
:Android Studio 中呈现问题。(AOSP 问题 225753)- 在
onNavigationItemSelected()
返回 false 之后,BottomNavigationView
仍会将菜单项显示为选中状态。(AOSP 问题 225898) - ForwardingListener 会抛出
NoSuchMethodError
。(AOSP 问题 225647) TextInputEditText
在 IME 提取模式下不显示提示。(AOSP 问题 221880)
AOSP 问题跟踪器中提供了一个完整的公开 bug 修复列表。
修订版 25.0.0
(2016 年 10 月)
重要变更
ContextCompat
构造函数已受保护。此类不应公开实例化,但可以通过面向更高 API 级别的支持库进行扩展。ActivityCompat
构造函数已受到保护。此类不应公开实例化,但可以通过面向更高 API 级别的支持库进行扩展。getReferrer(Activity)
已变为静态。-
移除了
android.support.design.widget.CoordinatorLayout.Behavior.isDirty(CoordinatorLayout, V)
。此方法的所有客户端实现都应被移除。 -
移除了
android.support.v4.media.session.MediaSessionCompat.obtain(Context, Object)
。应该改为使用更合适的命名方法fromMediaSession()
。 -
移除了
android.support.v4.media.session.MediaSessionCompat.QueueItem.obtain(Object)
。应该改为使用更合适的命名方法MediaSessionCompat.QueueItem#fromQueueItem
。 -
移除了
android.support.v7.widget.Space
。应该改为使用android.support.v4.widget.Space
。
新增 API
-
android.support.design.widget.BottomNavigationView
类会实现 Material Design 规范中的底部导航栏模式。 - 新的
android.support.v13.view.inputmethod
软件包中包含用于访问在 API 级别 13 之后引入的android.view.inputmethod.InputConnection
功能的类。 -
android.v7.widget.RecyclerView.DividerItemDecoration
类为项之间的垂直或水平分隔线提供了基本实现。 android.support.v7.app.NotificationCompat
、DecoratedCustomViewStyle
和DecoratedMediaCustomViewStyle
中新增了装饰样式,反映了平台 API 24 中添加的类。
修复的问题
AOSP 问题跟踪器中提供了一个完整的公开 bug 修复列表。
修订版 24.2.1
2016 年 9 月
修复的问题:
FloatingActionButton
无法再锚定到CoordinatorLayout
的间接子项。(AOSP 问题 220250)- 使用
fitsSystemWindows=true
时,CollapsingToolbarLayout
内的图片无法正确缩放。(AOSP 问题 220389) - 在
Snackbar
显示出来并被关闭时,CoordinatorLayout
会抛出IndexOutOfBoundsException
。(AOSP 问题 220762) TextInputLayout
无法解析错误文本颜色。(AOSP 问题 220305)BatchedCallback.onMoved()
会调用BatchedCallback.onInserted()
。(AOSP 问题 220309)TextInputLayout
会替换右侧复合可绘制对象。(AOSP 问题 220728)
AOSP 问题跟踪器中提供了一个完整的公开 bug 修复列表。
修订版 24.2.0
2016 年 8 月
版本 24.2.0 包含以下变更:
注意:版本 24.2.0 移除了对 Android 2.2(API 级别 8)及更低版本的支持。仅用于这些系统版本的类和方法现在标记为已废弃,不应再使用。这些已废弃的类和方法可能会在未来版本中移除。
v4 支持库拆分
在此版本中,v4 支持库拆分为几个较小的模块:
-
support-compat
-
为新框架 API 提供兼容性封装容器,如
Context.getDrawable()
和View.performAccessibilityAction()
。 -
support-core-utils
-
提供多种实用程序类,例如
AsyncTaskLoader
和PermissionChecker
。 -
support-core-ui
-
实现各种与界面相关的组件,例如
ViewPager
、NestedScrollView
和ExploreByTouchHelper
。 -
support-media-compat
-
向后移植媒体框架的部分,包括
MediaBrowser
和MediaSession
。 -
support-fragment
-
向后移植 fragment 框架。此模块依赖于
support-compat
、support-core-utils
、support-core-ui
和support-media-compat
。
为了实现向后兼容,如果您在 Gradle 脚本中列出 support-v4
,则 APK 将包含所有这些模块。不过,为了缩减 APK 大小,我们建议您只列出应用所需的特定模块。
API 更新
- 使用自定义标签页的客户端可以控制是否应打开免安装应用。(请注意,免安装应用尚未正式发布。)如需启用或停用免安装应用,请调用
CustomTabsIntent.Builder.setInstantAppsEnabled()
或指定EXTRA_ENABLE_INSTANT_APPS
。默认情况下,当免安装应用可用时,“自定义标签页”将默认启用该功能。 TextInputLayout
添加了对 Material Design 规范中的 显示/隐藏密码的支持。- 新的
android.support.transition
软件包将过渡框架向后移植到 API 级别 14 及更高级别。如需了解详情,请参阅android.support.transition
参考文档。 - Custom Tabs 支持库添加了对在辅助工具栏中使用
RemoteViews
的支持。现有的setToolbarItem()
方法现已废弃。 AppCompatResources
添加了通过使用新的getDrawable()
方法从资源 ID 加载<vector>
(适用于 API 级别 9 及更高级别)或<animated-vector>
(适用于 API 级别 11 及更高级别)的功能。CoordinatorLayout
现在支持定义边衬区视图,并指定其他视图应避开边衬区视图。这样,应用就可以复制行为模式,类似于FloatingActionButton
移出Snackbar
的方式,但适用于任何任意视图子项。如需了解详情,请参阅LayoutParams.insetEdge
和LayoutParams.dodgeInsetEdges
参考文档。- 新的
DiffUtil
类可以计算两个集合之间的差异,并且可以分派适合RecyclerView.Adapter
使用的更新操作列表。 -
添加了
RecyclerView.OnFlingListener
,以支持响应快滑的自定义行为。SnapHelper
类提供专门用于贴靠子视图的实现,LinearSnapHelper
类会扩展此实现,以提供类似于ViewPager
的居中对齐的贴靠行为。 - 自定义标签页库现在允许客户端通过调用
CustomTabsIntent.setAlwaysUseBrowserUI()
请求标准浏览器界面,而不是自定义标签页界面。如果浏览器默认采用自定义标签页界面,但用户已表示更喜欢使用标准浏览器界面,则此行为非常有用。
行为变更
- 如果您使用 appcompat 库的日间/夜间功能,现在每当日间/夜间模式发生变化时(无论是由于一天中的时段还是由于对
AppCompatDelegate.setLocalNightMode()
的调用),系统都会自动重新创建 Activity。 - 如果状态栏是半透明的,
Snackbar
现在会在导航栏后面绘制。
MediaRouter 库
蓝牙设备不再列为媒体路由。将音频路由到蓝牙设备现在仅在 Android 系统级别进行控制。
废弃
已弃用的类和方法可能会在未来的版本中移除。您应该尽快停止使用这些 API。
- 只有 API 8 及更低级别需要使用以下类的几种方法,不应再使用。请改用框架实现。
android.support.v4.view.KeyEventCompat
:替换为KeyEvent
android.support.v4.view.MotionEventCompat
:使用MotionEvent
android.support.v4.view.ViewCompat
:使用View
android.support.v4.view.ViewConfigurationCompat
:使用ViewConfiguration
-
废弃了
AccessibilityServiceInfoCompat.getDescription()
,取而代之的是AccessibilityServiceInfoCompat.loadDescription()
,后者可返回正确本地化的说明。 - 您不应直接实例化
ActivityCompat
类,非静态getReferrer(Activity)
方法在即将发布的版本中将变为静态。 CoordinatorLayout.Behavior.isDirty()
已弃用,并且不再由CoordinatorLayout
调用。应该移除任何实现以及对此方法的任何调用。MediaSessionCompat.obtain()
已废弃,取而代之的是命名更合适的方法fromMediaSession()
。MediaSessionCompat.QueueItem.obtain()
已废弃,取而代之的是命名更合适的方法fromQueueItem()
。- 多个抽象类已废弃,取而代之的是可更贴切地反映其等效框架的接口。
AccessibilityStateChangeListenerCompat
已被AccessibilityManagerCompat.AccessibilityStateChangeListener
界面取代。OnCloseListenerCompat
已被SearchViewCompat.OnCloseListener
界面取代。OnQueryTextListenerCompat
已被SearchViewCompat.OnQueryTextListener
界面取代。
- 废弃了
CustomTabsSession.setToolbarItem()
,取而代之的是基于 RemoteViews 的setSecondaryToolbarViews()
。
bug 修复
以下已知问题在版本 24.2.0 中得到修复:
- 确保在第一次测量传递之前调用
setRefreshing(true)
时显示SwipeRefreshLayout
指示器(AOSP 问题 77712) - 防止
TabLayout
在更改页面时闪烁(AOSP 问题 180454) - 在 API 级别 11 及更低级别上对
SavedState
进行数据编出时避免出现ClassNotFoundException
(AOSP 问题 196430)
AOSP 问题跟踪器中提供了一个完整的公开 bug 修复列表。
修订版 24.1.1
2016 年 7 月
修复的问题:
- 修复了 24.1.0 版本中影响支持库之间共享的资源 ID 的问题。此问题会导致依赖于包含资源的支持库(例如 Design 和 appcompat)的应用遇到由资源 ID 不匹配引起的问题。
修订版 24.1.0
2016 年 7 月
- 针对 v4 支持库的变更:
-
NotificationCompat.Action.WearableExtender
新增了getHintDisplayActionInline()
和setHintDisplayActionInline()
方法,可与 Android Wear 2.0 预览版兼容。这些方法允许应用指定某项操作应内嵌在通知中显示。- 如果提示已添加到尚未提交的
FragmentTransaction
,则调用Fragment.setUserVisbileHint()
不会再导致 Fragment 变为已启动状态。这会影响FragmentPagerAdapter
的用户,这些用户会替换setUserVisbileHint()
并在调用super.setUserVisibleHint()
后假定 Fragment 的特定生命周期状态。如需了解详情,请参阅Fragment.setUserVisbileHint()
文档的参考页面。
修复的问题:
- TabLayout.setCustomView(null) 会导致 NullPointerException(AOSP 问题 214753)
- TabLayout 错误地突出显示自定义标签页(AOSP 问题 214316)
- AppCompatTextHelper 使用排序错误的属性数组(AOSP 问题 214366)
- 使用自定义 Contextwrap 时,无法引用可绘制容器 XML 中的 VectorDrawable(AOSP 问题 214055)
- ViewDragHelper.saveLastMotion() 会抛出 ArrayIndexOutOfBoundsException(AOSP 问题 212945)
- 使用 setState(STATE_EXPANDED) 时,BottomSheetBehavior 展开至旧内容高度(AOSP 问题 213660)
- CollapsingToolbarLayout 不处理具有顶部或底部外边距的可固定子项(AOSP 问题 213001)
- Leanback 浏览标题不支持 RTL 对齐(AOSP 问题 213461)
- PagerTabStrip 因缺少继承的注解而消失(AOSP 问题 213359)
- 使用布尔值设置条件标记时,数据绑定会抛出 NullPointerException(AOSP 问题 191841)
- CoordinatorLayout 不响应 setFitsSystemWindows()(AOSP 问题 212720)
- 设置初始状态时,BottomSheetBehavior 崩溃(AOSP 问题 203114)
- 如果页面索引是一个较大的值,ViewPager 会跳过页面(AOSP 问题 211734)
- BottomSheetBehavior 不适用于动态布局(AOSP 问题 205226)
修订版 24.0.0
2016 年 6 月
- 针对 v4 支持库的变更:
-
- 为同步提交添加了
Fragment.commitNow()
- 为多方对话添加了
NotificationCompat.MessagingStyle
- 添加了
NotificationManagerCompat.areNotificationsEnabled()
和getImportance()
MediaSessionCompat
现在对应MediaSession
的功能,且不再自动调用setMediaButtonReceiver()
注意:只有 24.0.0 版本中的
MediaBrowserServiceCompat
向前兼容 API 24 之后的未来 Android 版本。如果您使用的是以前的版本,请更新到此版本以确保兼容性。 - 为同步提交添加了
- 针对 v7 appcompat 库的变更:
-
- 添加了对从 XML 引用主题化
ColorStateList
对象的支持
- 添加了对从 XML 引用主题化
- 针对 Design 支持库的变更:
-
- 使用
StateListAnimator
改进了AppBarLayout
对高度的处理
- 使用
- 针对 v17 Leanback 库的变更:
-
- 添加了
OnboardingFragment
,以提供首次运行欢迎和设置流程
- 添加了
- 针对自定义标签页的变更:
-
- 添加了对为辅助工具栏提供
RemoteViews
层次结构的支持 - 为单行预热添加了
CustomTabsClient.connectAndInitialize()
- 添加了对为辅助工具栏提供
修订版 23.4.0
2016 年 5 月
- 针对 v4 支持库的变更:
- 针对 v7 appcompat 库的变更:
-
- 添加了
AppCompatDelegate.setCompatVectorFromResourcesEnabled()
方法,以在搭载 Android 4.4(API 级别 19)及更低版本的设备上重新启用在DrawableContainer
对象中使用矢量可绘制对象。如需了解详情,请参阅 AppCompat v23.2 - 矢量时代。 - 修复了 API 级别 23 中
AppCompatDelegate.setDefaultNightMode()
无法加载正确资源的问题。(问题 206573) - 修复了可能导致
NullPointerException
的问题。(问题 207638)
- 添加了
- 针对 Design 支持库的变更:
-
- 修复了在 API 级别 21 - 22 上
TextInputLayout
不清除setErrorEnabled(false)
之后的错误色调调节的问题(问题 202829) - 修复了动画停用后
FloatingActionButton
不返回的问题。(问题 206416) - 修复了与
滚动标记一起使用时scroll
|enterAlways
|enterAlwaysCollapsed
|snap
AppBarLayout
贴靠功能出现的问题。(问题 207398)
- 修复了在 API 级别 21 - 22 上
- 针对 Vector Drawable 库的变更:
-
- 修复了以下 bug:在 API 级别 23 上,
VectorDrawableCompat
无法在TextView
中正确呈现。(问题 206227)
- 修复了以下 bug:在 API 级别 23 上,
修订版 23.3.0
2016 年 4 月
- 针对 v4 支持库的变更:
-
- 添加了
AppLaunchChecker
,有助于跟踪用户过去如何启动您的应用。hasStartedFromLauncher()
可让您了解用户之前是从主屏幕启动了您的应用,还是仅通过其他方式(例如,查看特定网址)启动了您的应用。 - 修复了
MediaBrowserServiceCompat.mConnections
中的内存泄漏问题。(问题 205220) - 修复了翻页时
ViewPager
不考虑页面外边距的问题。(问题 203816) Fragment.onRequestPermissionsResult()
现在会传递到子 fragment。
- 添加了
- 针对 v7 appcompat 库的变更:
-
- 修复了
AppCompatSpinner
中可能导致显示多个弹出式窗口的问题。(问题 205052) - 修复了无边框按钮颜色设置方式的问题。(问题 202967)
- 修复了
AppCompatDialogFragment
和AlertDialog
之间的兼容性问题。(问题 204805) - 恢复了对导致内存和配置问题的
TintResources
的更改。(问题 205236)
- 修复了
- 针对 v7 mediarouter 库的变更:
-
- 修复了
MediaRouteControllerDialog
音量滑块的行为。(问题 202299)
- 修复了
- 针对 v7 Preference 库的变更:
-
- 修复了在指定
dividerHeight
时PreferenceFragmentCompat
发生崩溃的问题。(问题 204778)
- 修复了在指定
- 针对 v7 recyclerview 库的变更:
-
- 修复了在可见项范围缩小时
RecyclerView
无法调用滚动回调的 bug。(问题 200987) - 修复了
RecyclerView
在采用线性布局、采用加权和包含图片时会冻结的 bug。(问题 203276) - 修复了
OrientationHelper.getStartAfterPadding()
中发生崩溃的问题。(问题 180521) - 修复了使用
android:nestedScrollingEnabled
时发生崩溃的问题。(问题 197932)
- 修复了在可见项范围缩小时
- 针对 Design 支持库的变更:
修订版 23.2.1
2016 年 3 月
- 针对 v4 支持库的变更:
-
- 修复了 API 级别 17 到 19 上的
DrawableCompat.wrap()
和LayerDrawable
中的异常。(问题 201817) - 修复了
ViewDragHelper.shouldInterceptTouchEvent()
中的ArrayIndexOutOfBoundsException
。(问题 182262) - 修复了
ViewPager
中与大小变化的滚动计算相关的 bug。 - 修复了在不设置
DrawerLayout.DrawerListener
的情况下调用DrawerLayout.removeDrawerListener()
时出现的NullPointerException
。(问题 202478) - 修复了滚动时
ViewPager
无法正确设置AccessibilityEvent
参数的 bug。 - 修复了使用
Drawable.wrap()
时导致设备旋转期间出现延迟的问题。(问题 201924)
- 修复了 API 级别 17 到 19 上的
- 针对 v7 appcompat 库的变更:
-
- 恢复了对矢量资源的依赖项,这样使用 appcompat 库的开发者就不会被迫使用
VectorDrawable
及其关联的 build 标志。 - 修复了与夜间模式和 API 级别 23 的兼容性问题。(问题 201910)
- 修复了
SwitchCompat
和 API 级别 7 的兼容性问题。(问题 201942) - 修复了在资源对象中传播配置值的问题。问题 201928
- 修复了
android.support.v7.app.NotificationCompat.MediaStyle
取消按钮在 API 级别 21 及更低级别上不可见的兼容性问题。(问题 202156) - 修复了 API 级别 21 及更低级别上与
AppCompatSpinner
的兼容性崩溃问题。(问题 202246) - 修复了
app:textAllCaps = "false"
样式不起作用的问题。(问题 202117) - 修复了恢复
SearchView
时发生崩溃的问题。(问题 201836) - 修复了使用 AppCompat 对可绘制资源着色时发生的内存泄漏问题。(问题 202379)
- 修复了 API 级别 11 及更低版本上的
KeyEvent
问题。(问题 202939)
- 恢复了对矢量资源的依赖项,这样使用 appcompat 库的开发者就不会被迫使用
- 针对 v7 cardview 库的变更:
- 针对 v7 recyclerview 库的变更:
-
- 修复了与各种测量规范方法相关的错误。(问题 201856)
- 缩短了计算布局或滚动时
RecyclerView
不允许适配器更改的锁定时间段。(问题 202046) - 修复了针对看不到的内容调用
notifyItemChanged()
时发生崩溃的问题。(问题 202136) - 修复了
RecyclerView.LayoutManager
在同一测量传递中添加和移除视图时发生崩溃的问题。(问题 193958)
- 针对 v7 mediarouter 库的变更:
-
- 修复了在 API 级别 17 中调用
MediaRouter.getInstance()
时发生崩溃的问题。(问题 180654)
- 修复了在 API 级别 17 中调用
- 针对 v17 Leanback 库的变更:
-
- 修复了导致选择错误项的
GridLayout.onAddFocusables()
问题。 - 修复了操作收起后
GuidedStepFragment
操作消失的问题。
- 修复了导致选择错误项的
- 针对 Design 支持库的变更:
-
- 修复了因标签页池化而导致的
TabLayout
崩溃问题。(问题 201827) - 修复了
NavigationView
中导致选择错误颜色的 bug。(问题 201951) - 修复了
setBackgroundTintList()
无法再更改背景颜色的 bug。(问题 201873) - 修复了
AppBarLayout
与android:fitsSystemWindows = “true”
一起使用时无法完全滚出视图的问题。(问题 201822) - 修复了
BottomSheetDialog
无法正确显示短内容视图的问题。(问题 201793) - 修复了内部内容发生更改时
BottomSheetDialogFragment
偶尔移动的问题。(问题 202125) - 修复了 TextInputLayout 计数器链接中的崩溃问题
- 修复了
TextInputLayout.getCounterMaxLength()
恢复已保存状态时发生崩溃的问题。(问题 202375) - 修复了在使用非
CoordinatorLayout
视图的已保存状态恢复CoordinatorLayout
时发生的ClassCastException
。
- 修复了因标签页池化而导致的
- VectorDrawableCompat 的变更:
-
- 修复了为
android:tintMode
读取错误变量的错误。(问题 201907)
- 修复了为
修订版 23.2.0
2016 年 2 月
- 针对 v4 支持库的变更:
-
- 为
MediaBrowser
支持添加了MediaBrowserCompat
,为MediaBrowserService
支持添加了MediaBrowserServiceCompat
。将媒体应用的后台服务与界面组件连接,以及在不需要 API 级别 21 或更高级别的情况下与 Android Auto 和 Android Wear 集成时,这非常有用。 - 系统现在会针对嵌套的
FragmentActivity
调用onActivityResult()
。
- 为
- 针对 v7 AppCompat 库的变更:
-
- 向 API 级别 14 及更高级别添加了夜间模式功能。根据一天当中的时段或特定于应用的设置在 Material 浅色主题和 Material 深色主题之间切换。
-
- 您可以在以下位置找到日间和夜间主题:
<sdk>/extras/android/support/v7/appcompat/res/values/themes_daynight.xml
AppCompatDelegate.setDefaultNightMode()
:通过传递以下某个常量来设置应用的默认模式:-
MODE_NIGHT_AUTO
MODE_NIGHT_NO
MODE_NIGHT_YES
MODE_NIGHT_FOLLOW_SYSTEM
AppCompatDelegate.setLocalNightMode()
:为本地应用组件替换夜间模式设置。AppCompatDelegate.getDefaultNightMode()
:返回默认夜间模式。
- 您可以在以下位置找到日间和夜间主题:
- 针对 v7 mediarouter 库的变更:
-
MediaRouteControllerDialog
现在可以正确应用自定义应用主题颜色。
- 针对 Design 支持库的变更:
-
- 添加了对底部动作条的支持。互动插件
BottomSheetBehavior
允许将CoordinatorLayout
的子视图用作底部动作条。基类BottomSheetCallback
提供回调来监控底部动作条事件。
- 添加了对底部动作条的支持。互动插件
- 针对 CustomTabs 支持库的变更:
-
- 现在,Chrome 自定义标签页允许应用除了现有的顶部操作按钮,还包含一个带有操作按钮的底部栏。
CustomTabsIntent.Builder.addToolBarItem()
:向自定义标签页添加操作按钮。您可以使用此文件添加多个按钮。CustomTabsSession.setToolBarItem()
:更新工具栏项的视觉效果。此方法只有在指定了有效 ID 且浏览器会话位于前台时才会成功。
- 添加了 VectorDrawable 支持库:
-
- 添加了类:
-
VectorDrawableCompat
AnimatedVectorDrawableCompat
- 向在 API 级别 7 或更高级别上运行的应用添加了对
VectorDrawable
资源的支持。API 级别 11 或更高级别也支持AnimatedVectorDrawable
资源。矢量资源可以比图片资源小很多,而且应该通过减少支持多个设备屏幕所需的资源量来缩减应用大小。 - 此库现在是 v7 AppCompat 库的依赖项,可让开发者和 AppCompat 轻松使用矢量可绘制对象。如需在
ImageButton
或ImageView
中使用VectorDrawableCompat
,请使用app:srcCompat
XML 属性或setImageResource()
方法。 - 如需在 API 级别 20 或更低级别中继续引用属性 ID,请将以下
appt
标志添加到build,gradle
文件中: -
- 如果您使用 Android Plugin for Gradle 1.5.0 或更低版本进行构建,请将以下代码添加到
build.gradle
文件中: -
android { defaultConfig { // Stops the Gradle’s automatic rasterization of vectors generatedDensities = [] } // Flag that tells aapt to keep the attribute ids aaptOptions { additionalParameters "--no-version-vectors" } }
- 如果您使用 Android Plugin for Gradle 2.0.0 或更高版本进行构建,请将以下代码添加到
build.gradle
文件中: -
android { defaultConfig { vectorDrawables.useSupportLibrary = true } }
- 如果您使用 Android Plugin for Gradle 1.5.0 或更低版本进行构建,请将以下代码添加到
- 针对 v17 Leanback 库的变更:
-
- 向
GuidedStepFragment
添加了新功能,此组件用于指导用户制定一项或一系列决策: -
- 向
GuidedAction
添加了按钮操作: GuidedStepFragment.setButtonActions()
:设置用户可以从 Actions 视图中选择的GuidedAction
按钮列表。- 说明字段现可修改:
-
GuidedAction.Builder.descriptionEditable()
:传递true
时,将操作的说明设置为可修改。GuidedAction.getEditDescription()
:以CharSequence
的形式返回可修改的说明。
- 添加了子级操作的下拉列表:
-
GuidedAction.setSubActions()
:将GuidedAction
列表设置为子操作的下拉菜单。
- 向
- 为
DatePicker
功能添加了GuidedDatePickerAction
微件: -
- 日期是使用年、月和日列选择的,并且具有可自定义的范围。
GuidedDatePickerAction.Builder
:GuidedDatePickerAction
对象的构建器类。GuidedDatePickerAction.Builder.datePickerFormat(String datePickerFormat)
:通过传递适当的三字符String
(例如“YMD”
或“MDY”
)来设置所需的日期格式。或者,使用datePickerFormat
XML 属性。
- 向
- 针对 v7 RecyclerView 库的变更:
-
RecyclerView
现在具有一项名为 AutoMeasure 的选择启用功能,借助此功能,RecyclerView.LayoutManager
可以轻松封装内容或处理RecyclerView
的父级提供的各种测量规范。它支持RecyclerView
的所有现有动画功能。-
- 如果您有自定义
RecyclerView.LayoutManager
,请调用setAutoMeasureEnabled(true)
以开始使用新的 AutoMeasure API。默认情况下,所有内置的RecyclerView.LayoutManager
对象都会启用自动测量。 RecyclerView.LayoutManager
不再忽略某些RecyclerView.LayoutParams
设置,例如滚动方向上的MATCH_PARENT
。注意:这些解除的限制可能会导致布局出现意外行为。请务必指定正确的布局参数。
- 如果您有自定义
- 使用载荷信息更新
RecyclerView.ViewHolder
时,DefaultItemAnimator
现在会停用更改动画。 - 您现在可以修改
ItemTouchHelper
转义速度来控制滑动灵敏度。为便于您更轻松或更难以进行滑动,请替换getSwipeEscapeVelocity(float defaultValue)
并修改defaultValue
。
修订版 23.1.1
2015 年 11 月
- 针对 v7 recyclerview 库的变更:
-
- 修复了执行
ItemTouchHelper
实用程序类提供的滑动关闭操作,然后添加项时发生崩溃的问题。(问题 190500)
- 修复了执行
- 针对 v7 preference 库的变更:
-
- 修复了与 ProGuard 使用相关的问题。 (问题 183261)
- 针对 v17 Leanback 支持库的变更:
-
- 修复了此库中的很多内部问题。
- 针对 Design 支持库的变更:
-
- 向
NavigationView
类添加了getHeaderView
方法。 - 修复了搭载 Android 4.0(API 级别 15)及更低版本的设备上
FloatingActionButton
对象的透明背景问题。(问题 183315)
- 向
修订版 23.1.0
2015 年 10 月
- 针对 v4 支持库的变更:
-
- 向
NestedScrollView
widget 添加了OnScrollChangedListener
接口支持。它允许您在滚动的 X 或 Y 位置发生变化时接收回调。 - 添加了
MediaButtonReceiver
类,用于将收到的播放控件转发到管理MediaSessionCompat
类的服务。MediaSessionCompat
类有一个构造函数,可以在清单中自动查找媒体按钮接收器。媒体按钮接收器是一个关键部分,用于处理来自硬件或蓝牙控件的播放控件。
- 向
- 针对 v7 appcompat 库的变更:
-
- 添加了 Material Design
Seekbar
和ImageButton
微件。 - 更新了
ImageView
微件以支持色调调节功能。 - 更新了
SwitchCompat
微件的外观和风格。
- 添加了 Material Design
- 针对 v7 mediarouter 库的变更:
-
- 向
MediaRouteChooserDialog
类添加了以下功能: - 在发现媒体路由提供程序时显示加载页面。
- 包含设备类型图标,便于识别设备。
- 根据当前应用中的使用频率对路由进行排序。
- 支持横屏模式。
- 向
MediaRouteControllerDialog
类添加了以下功能: - 识别屏幕投射并提供正确的说明。
- 支持各种专辑封面大小和宽高比,以及异步加载封面。
- 根据应用的基本色自动选择内容颜色。
- 根据设备上的可用屏幕空间调整对话框布局。
- 支持横屏模式。
- 向
- 针对 v7 palette 库的变更:
-
- 添加了
setRegion()
方法,可支持从Bitmap
对象的特定区域提取颜色。
- 添加了
- 针对 v7 recyclerview 库的变更:
-
- 向
ItemAnimator
类添加了经过改进的动画 API,以更好地进行自定义: - 更改动画不再强制执行
ViewHolder
对象的两个副本,这样可以启用项内容动画。此外,ItemAnimator
对象决定是重复使用相同的ViewHolder
对象还是创建新对象。 - 新的信息记录 API 让
ItemAnimator
类能够在布局生命周期的正确时间点灵活地收集数据。此信息稍后会传递到动画回调。
- 为这一向后不兼容的 API 变更提供简单的过渡计划:
- 如果您之前已经扩展了
ItemAnimator
类,则可以将基类更改为SimpleItemAnimator
,您的代码应该像以前一样工作。SimpleItemAnimator
类通过封装新 API 来提供旧 API。 - 部分方法已从
ItemAnimator
类中移除。以下代码将不再编译:
Kotlin
recyclerView.itemAnimator.supportsChangeAnimations = false
Java
recyclerView.getItemAnimator().setSupportsChangeAnimations(false)
您可以将其替换为:
Kotlin
val animator: SimpleItemAnimator? = recyclerView.itemAnimator as? SimpleItemAnimator animator?.supportsChangeAnimations = false
Java
ItemAnimator animator = recyclerView.getItemAnimator(); if (animator instanceof SimpleItemAnimator) { ((SimpleItemAnimator) animator).setSupportsChangeAnimations(false); }
- 向
- 针对 v7、v14 和 v17 Preference 支持库的变更:
-
- 移除了用于控制
EditText
对话框的 API。
- 移除了用于控制
- 针对 v17 Leanback 支持库的变更:
-
- 为支持库添加了一个版本的
GuidedStepFragment
类(扩展android.support.v4.app.Fragment
),并改进了动画和过渡。 - 更新了
GuidedStepFragment
类,可将其放置在现有内容的顶部。 - 向
SearchFragment
类添加了为不同类型的搜索完成添加注释的功能。 - 向
VerticalGridFragment
类添加了交错幻灯片过渡支持。
- 为支持库添加了一个版本的
- 针对 Design 支持库的变更:
-
- 向
TextInputLayout
widget 添加了 字符计数支持。 - 通过添加
SCROLL_FLAG_SNAP
常量,向AppBarLayout
类添加了边缘贴靠支持。滚动结束时,如果视图仅部分可见,则视图将被贴靠并滚动到其最近的边缘。 - 使用
app:actionLayout
属性或MenuItemCompat.setActionView()
方法向NavigationView
类添加了对自定义视图的支持。
- 向
- 针对 Custom Tabs 支持库的变更:
-
- 向
CustomTabsIntent
类添加了enableUrlBarHiding()
方法。可让客户端自定义在向下滚动时网址栏是否应自动隐藏。 - 向
CustomTabsSession
类添加了setActionButton()
方法。可让客户端在已启动的自定义标签页中更改自定义操作按钮的图标。 - 添加了
TAB_SHOWN
和TAB_HIDDEN
常量,作为CustomTabsCallback
类的onNavigationEvent
方法的新事件。
- 向
修订版 23.0.1
2015 年 9 月
- 针对 v7 和 v14 Preference 支持库的变更:
-
- 添加了 Material Design 布局和样式文件。 (问题 183376)
- 针对 v7 appcompat 库的变更:
- 针对 Design 支持库的变更:
-
- 修复了
AppBarLayout
类,现在该类可在旋转后正确绘制。 (问题 183109) - 修复了
TabLayout
类,现在该类可在用户滑动后点击时正常运行。(问题 183123)
- 修复了
- 针对 Custom Tabs 支持库的变更:
-
- 将版本支持的
minSdkVersion
值从 16 降至 15。 - 添加了从 intent 生成
CustomTabsSessionToken
的方法。
- 将版本支持的
修订版 23
2015 年 8 月
- 添加了新的支持库:
如需查看支持库变更的完整列表,请参阅支持库 API 差异报告。
修订版 22.2.1
2015 年 7 月
- 针对 Design 支持库的变更:
-
- 向
FloatingActionButton
类添加了hide()
和show()
方法,用于以编程方式触发动画。 - 向
Snackbar
类添加了LENGTH_INDEFINITE
常量,用于在信息提示控件被关闭或显示其他信息提示控件之前显示它。此外,还添加了setActionTextColor(int)
和setActionTextColor(ColorStateList)
方法。 - 向
TabLayout
类添加了getSelectedTabPosition()
方法,用于检索当前选定的标签页。 - 为
android.support.v7.app.NotificationCompat.MediaStyle
类提供了完全流畅的 API,用于实现方法链接。 - 向
RecyclerView
添加了便捷方法,用于批量插入项。
- 向
如需查看支持库变更的完整列表,请参阅支持库 API 差异报告。
修订版 22.2.0
2015 年 5 月
- 添加了 Design 支持库:
-
- 添加了
TextInputLayout
,用于将EditText
提示和错误文本显示为悬浮标签。 - 添加了
FloatingActionButton
,用于将界面上的主要操作实现为悬浮操作按钮,支持默认尺寸或最小尺寸。 - 添加了
Snackbar
,用于通过动画信息提示控件中的可选操作提供精简反馈。 - 添加了
TabLayout
,用于实现固定和可滚动的标签页以及与ViewPager
轻松集成。 - 添加了
NavigationView
,用于实现抽屉式导航栏内容,包括通过菜单资源膨胀菜单项的功能。 - 添加了
CoordinatorLayout
,这是一种通用布局,用于构建同级视图之间的依赖关系,并允许通过CoordinatorLayout.Behavior
在组件之间轻松滚动响应。Design 库的许多组件都依赖于成为CoordinatorLayout
的子级。 - 添加了
AppBarLayout
,它是Toolbar
和其他视图(例如TabLayout
)的容器,用于通过以下方式响应滚动事件:滚动离开屏幕、在响应向下滚动时变得可见,或在滚动关闭/转到屏幕之前收起/展开。 - 添加了
CollapsingToolbarLayout
,用于控制Toolbar
如何收起。工具栏可以通过以下方式收起:在收起时将组件固定到屏幕顶部、引入组件(例如ImageView
)的视差滚动,或在视图部分收起时添加内容纱罩颜色。
- 添加了
- 针对 v4 支持库的变更:
-
- 向
AccessibilityEventCompat
类添加了getContentChangeTypes()
和setContentChangeTypes()
方法以及相关更改类型字段,用于进行无障碍功能事件处理。 - 向
PlaybackStateCompat
类添加了包含相关状态字段的getActiveQueueItemId()
、getCustomActions()
和getExtras()
方法,用于从队列中获取自定义操作。 - 向
PlaybackStateCompat.Builder
类添加了addCustomAction()
、setActiveQueueItemId()
和setExtras()
方法,用于向播放状态添加自定义操作。 - 向
PlaybackStateCompat.CustomAction
类添加了fromCustomAction()
和getCustomAction()
方法,用于从队列中获取自定义操作。 - 向
ViewCompat
类添加了isAttachedToWindow()
、offsetLeftAndRight()
和offsetTopAndBottom()
方法,用于处理视图。 - 向
ViewPager
类添加了addOnPageChangeListener()
、clearOnPageChangeListeners()
和removeOnPageChangeListener()
方法,用于响应页面更改。废弃了
ViewPager.setOnPageChangeListener()
方法。 - 向
ViewParentCompat
类添加了notifySubtreeAccessibilityStateChanged()
方法,用于通知视图父视图其某个后代的无障碍功能状态已发生更改。 - 向
ViewPropertyAnimatorCompat
类添加了translationZ()
、translationZBy()
、z()
和zBy()
方法,用于添加动画。
- 向
- 针对 v7 appcompat 库的变更:
-
- 向
AppCompatActivity
、AppCompatCallback
和AppCompatDialog
类添加了onWindowStartingSupportActionMode()
方法,用于处理从当前窗口启动的操作模式。 - 向
AppCompatDelegate
类添加了isHandleNativeActionModesEnabled()
和setHandleNativeActionModesEnabled()
方法,用于处理原生操作模式。
- 向
如需查看支持库变更的完整列表,请参阅支持库 API 差异报告。
修订版 22.1.0
2015 年 4 月
- 针对 Annotations 库的变更:
-
- 添加了 Annotations 库,可支持增强型代码检查。 注解将作为附加到变量、参数和返回值的元数据标记进行添加,用于检查方法返回值、传递的参数以及局部变量和字段。
- 针对 v4 支持库的变更:
-
- 添加了
ColorUtils
类,以提供一组与颜色相关的实用程序方法。 - 向
DrawableCompat
类添加了unwrap()
和wrap()
方法,可让您在所有 API 级别 4 或更高级别的设备上使用setTint()
、setTintList()
和setTintMode()
。 - 添加了
TraceCompat
类,用于将跟踪事件写入系统跟踪缓冲区,然后使用 Systrace 工具进行收集和直观呈现。 - 添加了
CircularIntArray
类,用于创建循环整数数组数据结构。 - 向
CircularArray
类添加了clear()
、removeFromStart()
和removeFromEnd()
方法。此外,还将此类中的现有方法更改为了非最终方法。 - 添加了
InputDeviceCompat
作为辅助类,用于访问InputDeviceCompat
类中的数据。 - 添加了
LayoutInflaterCompat
类作为辅助类,用于访问LayoutInflaterCompat
类中的数据,并添加了LayoutInflaterFactory
接口。 - 添加了类、方法和接口,以支持嵌套滚动。
- 添加了
NestedScrollingChildHelper
和NestedScrollingParentHelper
辅助类,用于实现嵌套滚动父视图和子视图。 - 添加了将由
View
子类实现的NestedScrollingChild
接口。 - 添加了
NestedScrollingParent
和ScrollingView
接口,以支持滚动操作并提供与滚动相关的 API。 - 向
ViewGroupCompat
类添加了getNestedScrollAxes()
方法。 - 向
ViewParentCompat
类添加了方法,以支持嵌套滚动。 - 添加了
NestedScrollView
类,可支持新版和旧版 Android 上的嵌套滚动父级和子级。
- 添加了
- 向
MotionEventCompat
类添加了方法和常量,用于获取轴值和事件来源。 - 更新了
AccessibilityNodeInfoCompat
类,可添加针对错误、内容失效和标签的方法。 - 为动画添加了以下插值类:
FastOutLinearInInterpolator
、FastOutSlowInInterpolator
、LinearOutSlowInInterpolator
、LinearOutSlowInInterpolator
和PathInterpolatorCompat
。 - 添加了
Space
类,可在通用布局中的组件之间创建间隔。此类在 gridlayout 库中已弃用。 - 添加了
TextViewCompat
类,用于访问TextView
中的功能。 - 向
EdgeEffectCompat
类中的onPull()
方法添加了置换参数。
- 添加了
- 针对 v7 appcompat 库的变更:
-
- 为 appcompat 微件(包括
AppCompatAutoCompleteTextView
、AppCompatButton
、AppCompatCheckBox
、AppCompatCheckedTextView
、AppCompatEditText
、AppCompatMultiAutoCompleteTextView
、AppCompatRadioButton
、AppCompatRatingBar
、AppCompatSpinner
和AppCompatTextView
)添加了色调调节支持。 - 将
AppCompatActivity
更新为了使用支持库操作栏功能的 Activity 的基类。此类会替换已废弃的ActionBarActivity
。 - 添加了要为 AppCompat 实现的
AppCompatCallback
接口,以便能够执行回调。 - 添加了
AppCompatDelegate
抽象类作为委托,您可以使用它来将 AppCompat 的支持扩展到任何 activity。 - 添加了
AppCompatDialog
类,并将其作为 AppCompat 主题对话框的基类。 - 添加了旋转图标样式
AlertDialog
和AlertDialog.Builder
类,以提供 AppCompat 主题AlertDialog
。 - 添加了用于生成
Palette
实例的Palette.Builder
类。- 向
Palette
类添加了from(Bitmap)
方法,以开始使用返回的Palette.Builder
实例生成 Palette。 - 废弃了
Palette.generate()
和Palette.generateAsync()
方法。
- 向
- 向
GridLayout.Spec
类添加了getAbsoluteAlignment()
方法。 - 废弃了将
app:theme
用于设置Toolbar
的样式。现在,您可以在所有 API 级别 7 及更高级别的设备上对工具栏使用android:theme
,在 API 级别 11 及更高级别的设备上使用android:theme
支持所有 widget。
- 为 appcompat 微件(包括
- 针对 v17 leanback 库的变更:
-
- 添加了
GuidedStepFragment
、GuidanceStylist
和GuidedActionsStylist
,可支持创建多步决策流程。
- 添加了
- 针对 v7 recyclerview 库的变更:
-
- 添加了
SortedList
类,可按列表顺序显示项,并提供列表更改通知。 - 添加了
SortedListAdapterCallback
类,可将已排序的列表绑定到RecyclerView.Adapter
类。
- 添加了
- 针对 v8 renderscript 库的变更:
-
- 添加了
ScriptIntrinsicHistogram
类,可用作直方图过滤器。 - 添加了
ScriptIntrinsicResize
类,用于对 2D 分配执行大小调整。
- 添加了
- 针对 v4 支持库的变更:
-
- 更新了
getDrawable()
方法,可针对指定的特定资源 ID、屏幕密度和主题返回可绘制对象。 - 添加了
setImportantForAccessibility()
方法,以便您可以指明视图是否应触发无障碍事件。 - 添加了
getStatusBarBackgroundDrawable()
方法,以便您可以获取状态栏背景可绘制对象。 - 向
NotificationCompat.CarExtender.UnreadConversation
类添加了方法,以便 Android Auto 即时通讯应用可以检索其他通知数据。 - 添加了
getProgressCircleDiameter()
方法,可返回圆形布局的直径。 - 将默认的
DrawerLayout
状态栏颜色更改为了colorPrimaryDark
。
- 更新了
- 针对 v7 appcompat 库的变更:
- 针对 v17 leanback 库的变更:
-
- 添加了
getRecycledPoolSize()
和setRecycledPoolSize()
方法,可允许自定义的回收池大小。 - 向布局宽度设置添加了
WRAP_CONTENT
属性,以支持标题图标的封装内容。 - 在 XML 中定义了
R.transition
,以改进过渡更新。 - 支持从右到左的布局。
- 向
PlaybackOverlayFragment
类添加了“播放”和“暂停”媒体键事件支持。 - 向
BrowseFragment
类和DetailsFragment
类添加了进入和返回过渡。 - 添加了
replace()
方法,可替换对象适配器数组中的项。
- 添加了
- 针对 v7 mediarouter 库的变更:
-
- 更新了 Google Cast 图标,以使用 Material Design 样式。
- 更新了
MediaRouter
对话框中使用的所有图标,以便使用 Material Design 样式。
- 针对 v7 recyclerview 库的变更:
-
- 向
RecyclerView
类添加了getlayoutPosition()
和getadapterPosition()
方法。 - 废弃了
RecyclerView
类中的classgetChildPosition()
和findViewHolderForPosition()
方法。 - 废弃了
RecyclerView.ViewHolder
类中的getPosition()
方法。 - 废弃了
RecyclerView.LayoutParams
类中的getViewPosition()
方法。
- 向
- 针对 v4 支持库的变更:
- 针对 v4 支持库的变更:
-
- 添加了
NotificationCompat.CarExtender
类,可支持 Android Auto 通知扩展。
- 添加了
- 针对 v7 appcompat 库的变更:
-
- 添加了
PopupMenu
构造函数,可支持新的弹出式菜单。 - 在
Toolbar
类中添加了对“收起”图标说明的支持。 - 更新了
SearchView
widget,可支持显示commitIcon
。 - 从
Toolbar
类中移除了buttonGravity
属性。
- 添加了
- 针对 v7 cardview 库的变更:
-
- 添加了
setCardBackgroundColor(ColorStateList)
API 以支持更改CardView
的背景颜色。 - 更改了
CardView
,以便更准确地将其不透明度值报告为TRANSLUCENT
。
- 添加了
- 针对 v7 recyclerview 库的变更:
-
- 向
RecyclerView
类添加了TOUCH_SLOP_DEFAULT
和TOUCH_SLOP_PAGING
常量,以支持用于分页的触摸溢出配置。
- 向
- 针对 v17 leanback 库的变更:
-
- 添加了对生成 v4 代码 Fragment 的支持。
- 更改了
CardView
上的辅助文本颜色。
- 添加了 MultiDex 支持库,以支持多个 Dalvik 可执行文件 (DEX) 文件,从而支持 Android 5.0 之前的 MultiDex 文件。
- 针对 v4 支持库的变更:
-
- 针对搭载 Android 5.0(API 级别 21)的设备添加了对
Fragment
转换的支持。请注意,转换对搭载 Android 4.4 及更低版本的设备没有任何影响。 - 添加了
DocumentFile
,以简化处理文档树时从File
的过渡。不过,与在 Android 4.4(API 级别 19)中添加的平台的DocumentsContract
API 相比,此类需要更多的处理开销。因此,在 Android 4.4 及更高版本上运行时,您应改为使用DocumentsContract
。
- 针对搭载 Android 5.0(API 级别 21)的设备添加了对
- 针对 v7 appcompat 库的变更:
-
- 添加了对 Material Design 界面的支持。
- 添加了
Toolbar
,用于概括性地在应用布局中使用的ActionBar
功能。 - 更新了包含菜单到箭头动画的
ActionBarDrawerToggle
- 更新了常见界面 widget,以允许在搭载 Android 5.0 之前版本的设备上通过主题属性进行色调调节
- 添加了
SwitchCompat
,它是在 Android 4.0(API 级别 14)中添加的Switch
widget 的向后移植。
- 新增的 v7 cardview 库:
-
- 添加了
CardView
微件,它提供与 Material Design 兼容的实现,用于显示数据项。
- 添加了
- 新增的 v7 recyclerview 库:
-
- 添加了
RecyclerView
微件,它提供灵活的列表视图,用于为大型数据集提供有限的窗口。
- 添加了
- 新增的 v7 palette 库:
-
- 添加了
Palette
类,可让您从图片中提取突出颜色。
- 添加了
- 新增的 v17 leanback 库:
-
- 添加了对构建 TV 界面的支持,包括
BrowseFragment
、DetailsFragment
和PlaybackOverlayFragment
。 如需详细了解如何使用这些界面微件,请参阅构建电视播放应用。
- 添加了对构建 TV 界面的支持,包括
- 针对 v4 支持库的变更:
-
- 在
NotificationCompat.WearableExtender
中添加了对 Android Wear 的扩展通知支持,使您能够在通知中指定穿戴式设备专属功能。 - 添加了
NotificationCompat.Action.WearableExtender
,以允许在穿戴式设备通知中添加操作。 - 添加了
NotificationManagerCompat
,可让您发出正确支持穿戴式设备功能的通知。 - 添加了
RemoteInput
,可让手持设备从穿戴式设备上显示的通知接收语音输入。 - 改进了
SwipeRefreshLayout
中触摸反馈的处理方式。
- 在
- 针对 v4 支持库的变更:
-
- 添加了
SwipeRefreshLayout
类,可让用户使用垂直滑动手势刷新视图的内容。 - 修复了抽屉式导航栏的无障碍功能问题。
- 添加了
- 针对 v7 appcompat 库的变更:
-
- 修复了操作栏的背景问题。
- 针对 v4 支持库的变更:
-
- 通过添加异步打印处理改进了
PrintHelper
。 - 修复了
addChildrenForAccessibility()
方法的DrawerLayout
类近似问题。 - 修复了
ActionBarDrawerToggle
中的幻灯片可绘制镜像。 - 修复了从集合迭代器中移除项时出现的差一问题。
- 通过添加异步打印处理改进了
- 针对 v7 mediarouter 库的变更:
-
- 通过在
MediaRouteProvider.ProviderMetadata
中使用完整的组件名称改进了路由识别。 - 更新了
MediaRouteChooserDialog
以隐藏已停用的路由。
- 通过在
- 针对 v8 renderscript 库的变更
-
- 为 RenderScript 形式转换层添加了错误传播。
- 针对 v4 支持库的变更:
-
- 通过
getObbDirs()
、getExternalFilesDirs()
、getExternalCacheDirs()
和getStorageState()
添加了对外部 Storage API 的支持。 这些辅助方法始终在搭载 Android 4.3(API 级别 18)及更低版本的设备上返回单个文件对象。在搭载 Android 4.4(API 级别 19)及更高版本的设备上运行时,这些方法可能会返回多个文件对象。 - 添加了可与 Print API 配合使用的
PrintHelper
类,以最少的代码打印图片。 - 为弹出菜单添加了拖动即打开界面支持。如需了解详情,请参阅
PopupMenuCompat
和ListPopupWindowCompat
。 - 通过在
AccessibilityNodeProviderCompat
中添加findFocus()
方法以及在AccessibilityNodeInfoCompat
中添加getLiveRegion()
方法,改进了无障碍功能支持。 - 添加了辅助类
ScaleGestureDetectorCompat
,用于访问新的缩放手势方法。 - 修复了
ActionBarDrawerToggle
在从右到左的语言显示中出现的问题。 - 修改了
AutoScrollHelper
选项,以使用触摸事件或允许触摸事件传递给其他视图。
- 通过
- 针对 v7 mediarouter 库的变更:
-
- 添加了对媒体播放队列、设置 HTTP 标头值和媒体播放时长的支持。
- 添加了显式开始、获取和结束会话操作,用于使用媒体路由器明确管理媒体播放会话。
- 针对 v4 支持库的变更:
-
- 界面
- 添加了
BidiFormatter
,用于处理同时包含从右到左和从左到右格式文本的文本字符串。 - 修改了
ViewPager
,以更好地处理在初始布局处理中分页器的测量宽度为零的情况。 - 修改了
DrawerLayout
和SlidingPaneLayout
,以便在修改项目代码时不会抛出测量异常。
- 添加了
- 无障碍功能
- 添加了
ExploreByTouchHelper
,可简化自定义视图的无障碍功能的实现。 - 修复了
ViewPager
无法正确填充TYPE_VIEW_SCROLLED
无障碍事件的问题。 - 修复了在填充无障碍功能事件时
ViewPager
中出现 null 指针异常的问题。 - 通过将
CharSequence
输入更改为String
对象简化了AccessibilityNodeInfoCompat
。 - 废弃了使用
Object
作为输入的AccessibilityRecordCompat
构造函数。
- 添加了
- 媒体
- 添加了
TransportMediator
辅助类,用于管理媒体传输控件,例如播放、暂停、跳过和其他媒体操作。 - 添加了
DisplayManagerCompat
,用于管理一个或多个设备显示屏的显示输出。
- 添加了
- 其他变更
- 添加了
WakefulBroadcastReceiver
辅助类,用于实现检测设备唤醒事件并将工作传递给Service
的常见模式,同时确保设备不会在切换完成之前返回休眠状态。 - 向
AsyncTaskLoader
添加了两个新的 API:commitContentChanged()
和rollbackContentChanged()
,以帮助处理随后被取消的数据更改的后台更新。
- 添加了
- 界面
- 新增的 v7 appcompat 库:
- 新增的 v7 mediarouter 库:
-
添加了新的 mediarouter 库,可为 Google Cast 开发者预览版提供支持。 v7 mediarouter 库 API 提供了一种方法来控制从当前设备到外部屏幕、扬声器和其他目标设备的媒体渠道和流的路由,并且可向后兼容至 Android 2.1(API 级别 7)。如需了解详情,请参阅 V7 mediarouter 库。
支持库 r18 中引入的 v7 mediarouter 库 API 可能会在之后的支持库修订版中发生更改。目前,我们建议仅使用与 Google Cast 开发者预览版相关的库。
- 针对 v4 支持库的变更:
-
- 添加了
DrawerLayout
,用于创建可从窗口边缘拉入的抽屉式导航栏。 - 添加了
SlidingPaneLayout
widget,用于创建可适当适应各种屏幕尺寸的链接摘要和详情视图。 - 添加了
ActionBarDrawerToggle
,以便将DrawerLayout
和ActionBar
的函数结合在一起。 - 添加了
ViewDragHelper
,作为用于在父视图内拖动视图的新常用组件。 - 添加了
ScrollerCompat
,以提供Scroller
和OverScroller
兼容性支持。 - 添加了
FileProvider
,以允许在应用之间共享私有文件。 - 更新了
ViewPager
,以便在未调用notifyDataSetChanged()
的情况下修改关联的PagerAdapter
类时抛出异常。 - 修复了
ViewPager
子绘图排序问题。 - 修复了
GestureDetectorCompat
,以便在点按超时和长按事件之间分派缺失的onSingleTapConfirmed(MotionEvent)
调用。
- 添加了
- 新增的 v7 gridlayout 库:
-
- 添加了
GridLayout
,用于为GridLayout
布局对象提供支持。 - 添加了
android.support.v7.widget.Space
,它可用于在GridLayout
布局对象内创建空白区域。
- 添加了
- 针对 v4 支持库的变更:
-
- 改进了
ViewPager
的互动行为。 - 修复了可能导致
ViewPager
选择错误页面的 bug。 - 修复了在
ViewPager
布局期间使用removeView()
方法的问题。 - 修复了
SearchViewCompat
的问题,即使用返回按钮关闭时不会清除搜索文本。此修复仅适用于主机 API 级别 14 及更高级别。
- 改进了
- 针对 v4 支持库的变更:
-
- 界面
- 添加了对嵌套
Fragment
类的支持。 - 添加了对
FragmentManager
调试的改进。 - 修复了
FragmentTabHost
中 fragment 和标签页互动可能会导致ListView
状态丢失的问题。 - 修复了
FragmentStatePagerAdapter
中用户可见提示的问题。 - 向
ViewPager
添加了PageTransformer
接口,以允许应用提供用于滚动的自定义过渡行为。 - 为当前版本的
TaskStackBuilder
添加了新功能和修复。 - 修复了
PagerTitleStrip
,以正确跟踪当前正在使用的PagerAdapter
。 - 修复了
PagerTitleStrip
的显示屏闪烁、定位和文本裁剪问题。 - 修复了
PagerTabStrip
,以便在绘制下划线时正确遵守内边距规定。
- 添加了对嵌套
- 无障碍功能
- 在
AccessibilityEventCompat
中添加了对新的无障碍手势和触摸事件类型的支持。 - 在
ViewCompat
中添加了对新的无障碍功能 API 的支持。 - 向
ViewCompat
添加了对performAccessibilityAction()
方法的支持。
- 在
- 通过
GestureDetectorCompat
添加了对手势的支持。 - 添加了对使用新的
AtomicFile
类对文件执行原子操作的支持。 - 添加了对
IntentCompat
中一整套make
方法的支持。 - 在
LruCache
实用程序类中添加了trimToSize()
方法。 - 更新了
ConnectivityManagerCompat
,以从CONNECTIVITY_ACTION
广播中获取 NetworkInfo。
- 界面
- 针对 v4 支持库的变更:
-
- 通过向
NotificationCompat
添加内容,添加了对 Android 4.1(API 级别 16)中引入的通知功能的支持。
- 通过向
- 针对 v4 支持库的变更:
-
- 界面支持
- 添加了
PagerTabStrip
支持,提供PagerTitleStrip
之外的增强功能。 - 修复了
PagerTitleStrip
和PagerTabStrip
的各种 bug,包括setAllCaps
选项、标题对齐、外观改进、最小宽度限制和触摸导航问题。 - 添加了对
ViewPager
页面边线的支持,这有助于ViewPager
类为水平滚动范围较大的内容(例如地图)提供分页支持。 - 修复了
ViewPager
的多个问题,包括大小和数据集更改问题、页面定位、用户互动、滚动跟踪和键盘导航问题。 - 修复了
Fragment
的许多 bug,包括当目标 fragment 不再存在时正确处理onActivityResult()
、将选择事件分派给不可见的 fragment、改进了FragmentTransaction.replace()
行为,并为移出视图的 fragment 添加了更好的状态处理。 - 在
ViewCompat
中添加了对postOnAnimation()
方法的支持。 - 更新了
NavUtils
,以使用 Android 4.1(API 级别 16)向上导航功能(如果可用)。
- 添加了
- 无障碍功能
- 更新了无障碍功能支持类(包括
AccessibilityNodeInfoCompat
),以遵循 Android 4.1(API 级别 16)中进行的修复。 - 在
ViewPager
中添加了对无障碍功能滚动操作的支持。
- 更新了无障碍功能支持类(包括
- 常规改进
- 更新了
TaskStackBuilder
,以反映 Android 4.1(API 级别 16)中的 API 变更。 - 增强了
TaskStackBuilder
,以便在 Service 中使用。 - 向
ShareCompat
添加了对EXTRA_HTML_TEXT
的支持。 - 更新了
NotificationCompat.Builder
以支持setNumber()
方法。 - 在
ConnectivityManagerCompat
中添加了对isActiveNetworkMetered()
方法的支持。
- 更新了
- 界面支持
- 针对 v4 支持库的变更:
-
- 修复了
TaskStackBuilder
生成的PendingIntent
对象的 intent 标记。 - 从 gridlayout 库项目中移除了未使用的属性,以确保可以使用 API 级别 7 及更高级别构建库。
- 为 gridlayout 库项目添加了
.classpath
和.project
文件。
- 修复了
- 针对 v4 支持库的变更:
-
- 添加了
ShareCompat
,它提供了辅助类,用于发送和接收社交分享应用的内容,包括用于将分享的数据归因于源应用的新元数据。此类还提供了与 Android 4.0 中的新ShareActionProvider
兼容的集成。 - 添加了
NavUtils
和TaskStackBuilder
,以便为实现 Android Design 导航指南提供支持。这些添加包括一种在各版本中实现操作栏的 Up 按钮的方法。如需查看此模式的示例实现,请参阅 (<em><sdk></em>/samples/<em><platform></em>/AppNavigation
) 中的 AppNavigation 示例。 - 添加了
NotificationCompat.Builder
,以提供 Android 3.0 的Notification.Builder
辅助类(用于创建标准化系统通知)的兼容性实现。
- 添加了
- 针对 v4 支持库的变更:
-
- ViewPager 的变更:
- 为
ViewPager
添加了额外的装饰性视图支持。在 XML 布局中,装饰性视图可作为页面控制项的子视图提供。 - 添加了
PagerAdapter.getPageTitle()
,用于提供页面的标题字符串,默认情况下,每个页面都没有标题。 - 添加了
PagerTitleStrip
,这是一个非交互式标题条,可作为 ViewPager 的子级添加。开发者可以提供文本外观和颜色,以及布局大小调整和重心信息。 - 更新了
PagerAdapter
方法以接受 ViewGroup 对象(而非 View),以避免适配器实现中的类转换。 - 更新了
ViewPager
,以使用启动器样式的快速滑动行为。 - 修复了界面互动和测试自动化的问题。
- 为
- 对 Fragment 的支持:
- 将
setStartDeferred()
方法更改为了setUserVisibleHint(boolean)
。 - 为屏幕外页面添加了推迟启动,可提高性能。
- 将
- 支持无障碍功能 API:
- 更新了
AccessibilityDelegateCompat
方法,可返回空列表而不是 null。 - 新增了 v4 示例所需的 API。
- 更新了
- ViewPager 的变更:
- 针对 v4 支持库的变更:
-
- 支持无障碍功能 API:
- 添加了
AccessibilityDelegateCompat
以支持View.AccessibilityDelegate
。 - 添加了
AccessibilityEventCompat
以支持AccessibilityEvent
。 - 添加了
AccessibilityManagerCompat
以支持AccessibilityManager
。 - 添加了
AccessibilityNodeInfoCompat
以支持AccessibilityNodeInfo
。 - 添加了
AccessibilityRecordCompat
以支持AccessibilityRecord
。 - 添加了
AccessibilityServiceInfoCompat
以支持AccessibilityServiceInfo
。 - 添加了
ViewGroupCompat
,以支持ViewGroup
中的无障碍功能。 - 修改了
ViewCompat
,以支持View
中的无障碍功能。
- 添加了
- ViewPager 的变更:
- 添加了对页面之间外边距的支持。
可以提供可选的
Drawable
来填充外边距。 - 添加了对
EdgeEffect
的支持。 - 添加了对键盘导航的支持
- 添加了对控制当前页面两侧保留多少页面的支持。
- 改进了轻触物理特性。
- 修复了界面行为的问题。
- 添加了对页面之间外边距的支持。
可以提供可选的
- 支持无障碍功能 API:
- 针对 v4 支持库的变更:
-
- 添加了
EdgeEffectCompat
以支持EdgeEffect
。 - 添加了
LocalBroadcastManager
,使应用能够在单个应用中轻松注册和接收 intent,而无需全局广播这些 intent。 - 在
ViewCompat
中添加了对在 Android 2.3 及更高版本上为View
检查和设置滚动模式的支持。 - 对 Fragment API 的变更:
- 新增了 API,可控制新菜单的可见性。
- 添加了自定义动画 API。
- 在
FragmentActivity
中添加了 API,以保留自定义的非配置实例数据。 - 修复了各种 bug。
- 修复了在 Froyo 和旧版平台上运行时会导致取消
AsyncTask
的Loader
bug。支持代码现在使用自己的AsyncTask
版本,以便在所有平台版本上保持相同的行为。
- 添加了
- 针对 v4 支持库的变更:
-
- 添加对
Fragment.SavedState
的支持 - 添加
MotionEventCompat
,可支持更新的MotionEvent
API - 添加
VelocityTrackerCompat
,可支持更新的VelocityTracker
API - 添加
ViewConfigurationCompat
,可支持更新的ViewConfiguration
API - 所有新 API(仅在支持库中提供)都允许您创建具有水平分页的界面,使用户可以在内容视图之间左右滑动。支持此功能的类包括:
ViewPager
:用于管理子视图布局的ViewGroup
,用户可以在子视图之间滑动。PagerAdapter
:使用代表各个页面的视图填充ViewPager
的适配器。FragmentPagerAdapter
:PagerAdapter
的扩展,用于在 fragment 之间进行翻转。FragmentStatePagerAdapter
:PagerAdapter
的扩展,用于在 fragment 之间切换(使用库对Fragment.SavedState
的支持)。
- 添加对
- 新增的 v13 支持库:
-
- 包含
FragmentPagerAdapter
和FragmentStatePagerAdapter
,以支持水平分页。这些 API 与添加到 v4 支持库中的 API 完全相同,但依赖于 Android 3.2 中的其他平台组件。如果您要针对 Android 3.2 及更高版本进行开发,请使用此库而不是 v4(v4 库中的所有其他 API 在 API 级别 13 中都可用)。
- 包含
- 针对 v4 库的变更:
-
- 支持 Fragment 动画
- 修复
Fragment.onActivityResult()
bug
修订版 22
2015 年 3 月
修订版 21.0.3
2014 年 12 月
修订版 21.0.2
2014 年 11 月
修订版 21.0.1
2014 年 11 月
修订版 21
2014 年 10 月
修订版 20
2014 年 7 月
修订版 19.1.0
2014 年 3 月
修订版 19.0.1
2013 年 12 月
修订版 19
2013 年 10 月
修订版 18
2013 年 7 月
修订版 13
2013 年 5 月
修订版 12
2013 年 2 月
修订版 11
2012 年 11 月
修订版 10
2012 年 8 月
修订版 9
2012 年 6 月
修订版 8
2012 年 4 月
修订版 7
2012 年 3 月
修订版 6
2011 年 12 月
注意:支持库 API 的参考文档现在可以通过框架引用(例如 android.support.v4.app
)获取。
修订版 5
2011 年 12 月
修订版 4
2011 年 10 月
修订版 3
2011 年 7 月
修订版 2
2011 年 5 月
修订版 1
2011 年 3 月
v4 库的初始版本。