本页详细介绍了之前的支持库软件包版本。如需了解最新的支持库版本,请参阅支持库的最新修订版本。
修订版 26.0.0 测试版 2
(2017 年 6 月)
请注意,26.0.0-beta2 是一个预发布版本。它的 API Surface 可能会发生更改,而且不一定包含最新稳定版支持库中的功能或问题修复。
重要提示:支持库现在可以通过 Google 的 Maven 代码库获取。您无需从 SDK 管理器下载支持代码库。如需了解详情,请参阅支持库设置。
新增的 API
- 新增了
JobIntentService
类,可以帮助开发者以符合新的 Android O 后台执行限制要求的方式来调度任务。
API 差异
问题修复
- Android O SDK 弃置导致 TextView 中的斜体无效
- 连接到 MediaBrowserServiceCompat 时出现 Null 指针异常
- TextInputLayout 必须在 onProvideAutofillStructure() 上设置提示
- 在 Android O 上使用 TextView 自动调整大小时出现堆栈溢出
修订版 26.0.0 测试版 1
(2017 年 5 月)
请注意,26.0.0-beta1 是一个预发布版本。它的 API Surface 可能会发生更改,而且不一定包含最新稳定版支持库中的功能或问题修复。
重要提示:支持库现在可以通过 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
和其他微件可显示表情符号。-
FontRequestEmojiCompatConfig
可向字体提供程序请求表情符号字体。
-
自动调整 TextView 的大小:
TextViewCompat
中新增的方法以及 XML 属性可控制TextView
中的自动调整大小功能。
- 支持跳转的 Leanback 播放控件:
-
- 新增了
PlaybackTransportRowPresenter
,可使用 SeekBar 呈现播放控件。 - 新增了
PlaybackTransportControlGlue
,可与PlaybackTransportRowPresenter
配合使用且支持跳转。 - 针对应用新增了基类
PlaybackSeekDataProvider
,可为PlaybackTransportControlGlue
提供跳转缩略图。
- 新增了
- 偏好设置数据存储:
-
现在,您可以使用
PreferenceDataStore
实现自己的偏好设置存储,通过Preference
和PreferenceManager
中的新方法进行设置。
-
现在,您可以使用
已知问题
- 与 Google Play 服务集成的可下载字体和表情符号兼容性仅适用于 Google Play 服务 v11 及更高版本,目前可以通过 Google Play 服务测试版计划获取。
问题修复
-
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 可能会发生更改,而且不一定包含最新稳定版支持库中的功能或问题修复。
重要变更
注意:最低 SDK 版本已提升至 14。因此,我们弃用了仅用于实现与 API 14 之前级别兼容性的很多 API。这些 API 的客户端应该迁移到其等效框架,正如每个弃用 API 对应的参考页面中所述。
- support-percent 模块已弃用。此模块的客户端应该迁移到新的 ConstraintLayout 微件,此微件作为 SDK 管理器中的单独工件提供。
- support-fragment 模块不再依赖于 support-media-compat 模块。
新增的 API
新增了很多类、方法和常量,为 Android O 预览版中添加的平台 API 提供向后兼容性支持。
IME_FLAG_NO_PERSONALIZED_LEARNING
:IME 可以监听具有隐私模式的应用(例如浏览器)的“不学习”标记。此功能有助于 IME 了解应用是否处于隐私模式,这样它们就可以在应用处于隐私模式时停用其学习或自适应功能。
如需查看 25.2.0 和 26.0.0-alpha1 之间 API 变更的完整列表,请参阅支持库 API 差异报告。
问题修复
- 在某些情况下,简单的
AutoTransition
动画可能会被视图“跳转”打断。(AOSP 问题 221816)
修订版 25.4.0
(2017 年 6 月)
重要提示:支持库现在可以通过 Google 的 Maven 代码库获取。您无需从 SDK 管理器下载支持代码库。如需了解详情,请参阅支持库设置。
重要变更
- 在
FragmentManager
状态变更期间,不允许执行executePendingTransactions()
、commitNow()
、popBackStackImmediate()
及类似事务调用。事务的可重入执行不安全,而且FragmentManager
现在在其状态变更期间会强制执行此操作。 - 在发布此支持库版本时,我们还一并发布了多 dex 版本 1.0.2。此版本包含以下重要变更:
- 允许对插桩测试 APK 进行多 dex 处理。
- 弃用 MultiDexTestRunner(应改用 AndroidJUnitRunner)。
- 提供更好的保护,以防存在无效的应用归档提取管理。
- 修复可能会导致临时文件被放弃的错误。
- 在并发过程中完成时更快地安装。
- 修复 API 19 和 20 上的安装错误。
新增的和修改后的 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
,这有助于简化公开编译中的版本跟踪。例如:
<meta-data android:name="android.support.VERSION" android:value="25.3.0" />
弃用
此版本中弃用了很多方法和类。这些已弃用的 API 将在未来的版本中移除,开发者应该停止使用这些 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
现在是静态类。
修复的问题
- 采用屏幕镜像演示幻灯片演示文稿导致设备断开 WLAN 连接
- 媒体按钮无法正确处理未使用
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 B 替换 Fragment A。在本例中,第一个操作可能被取消,只添加了 Fragment B。这意味着 Fragment A 可能不会经历创建/销毁生命周期。
此优化的副作用是 Fragment 的状态更改可能不按预期顺序进行。例如,假设一个事务添加 Fragment A,第二个添加 Fragment B,第三个移除 Fragment A。如果不进行优化,则 Fragment B 可能以为在被创建时 Fragment A 也存在,因为在添加 Fragment B 之后会移除 Fragment A。如果进行优化,Fragment B 无法确定在被创建时 Fragment A 是否存在,因为 Fragment A 的创建和销毁可能会因优化而被移除。
此优化默认处于停用状态。要启用优化,请调用
FragmentTransaction.setAllowOptimization(true)
。 - Fragment 现在可以使用
Fragment.postponeEnterTransition()
和Fragment.startPostponedEnterTransition()
推迟其过渡和动画,直到准备就绪。此 API 类似于与 Activity 过渡配合使用的Activity.postponeEnterTransition()
和Activity.startPostponedEnterTransition()
。
修复的问题
-
MediaSessionCompatTest
失败并显示IllegalArgumentException
-
DetailsFragment.installTitleView()
在 25.1.0 中未调用 - 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
微件的布局管理器在屏幕上滚动之前准备多少个项,嵌套RecyclerView
微件的客户端(例如水平滚动列表的垂直滚动列表)可以获得明显的性能优势。调用LinearLayoutManager.setInitialPrefetchItemCount(N)
,其中 N 是每个内部项可见的视图数。例如,如果您的内部水平列表一次显示最少三个半项视图,则可以通过调用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
添加了焦点恢复机制。这还修复了在使用 DPAD 导航(例如在 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 问题跟踪器中提供一个完整的公开问题修复列表。
弃用
此版本中弃用了很多方法和类。这些已弃用的 API 将在未来的版本中移除,开发者应该停止使用这些 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 问题跟踪器中提供一个完整的公开问题修复列表。
修订版 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 问题跟踪器中提供一个完整的公开问题修复列表。
修订版 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 问题跟踪器中提供一个完整的公开问题修复列表。
修订版 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
的居中对齐的贴靠行为。 - 现在,Custom Tabs 库允许客户端通过调用
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()
。
问题修复
以下已知问题在版本 24.2.0 中得到修复:
- 确保在第一次测量传递之前调用
setRefreshing(true)
时显示SwipeRefreshLayout
指示器(AOSP 问题 77712) - 防止
TabLayout
在更改页面时出现闪烁(AOSP 问题 180454) - 在 API 级别 11 及更低级别上对
SavedState
进行数据编出时避免出现ClassNotFoundException
(AOSP 问题 196430)
AOSP 问题跟踪器中提供一个完整的公开问题修复列表。
修订版 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)
- 在使用自定义 ContextWrapper 时,无法从可绘制对象容器 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()
无法在 API 级别 23 上加载正确资源的问题。(问题 206573) - 修复了可能导致
NullPointerException
的问题。(问题 207638)
- 添加了
- 针对 Design 支持库的变更:
-
- 修复了
TextInputLayout
没有清除 API 级别 21 - 22 上setErrorEnabled(false)
后出现的错误色调调节的问题(问题 202829) - 修复了在停用动画后
FloatingActionButton
不会返回的问题。(问题 206416) - 修复了在与
滚动标记搭配使用时scroll
|enterAlways
|enterAlwaysCollapsed
|snap
AppBarLayout
贴靠功能出现的问题。 (问题 207398)
- 修复了
- 针对 Vector Drawable 库的变更:
-
- 修复了 API 级别 23 上
VectorDrawableCompat
无法在TextView
中正确呈现的错误。(问题 206227)
- 修复了 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
在可见项范围缩小的情况下无法调用滚动回调的问题。(问题 200987) - 修复了
RecyclerView
在处于线性布局、进行加权和包含图片的情况下会冻结的问题。(问题 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
中与尺寸变化滚动计算相关的错误。 - 修复了在不设置
DrawerLayout.DrawerListener
的情况下调用DrawerLayout.removeDrawerListener()
时出现的NullPointerException
。(问题 202478) - 修复了在滚动时
ViewPager
无法正确设置AccessibilityEvent
参数的错误。 - 修复了在使用
Drawable.wrap()
时导致设备旋转过程中出现延迟的问题。(问题 201924)
- 修复了 API 级别 17 至 19 上
- 针对 v7 appcompat 库的变更:
-
- 恢复了矢量资源的依赖项,这样使用 appcompat 库的开发者就不会被迫使用
VectorDrawable
及其相关的构建标记。 - 修复了夜间模式和 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
中导致选择错误颜色的错误。(问题 201951) - 修复了
setBackgroundTintList()
无法再更改背景颜色的错误。(问题 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
。在将媒体应用的后台服务与界面组件连接,以及与 Android Auto 和 Android Wear 集成而无需 API 级别 21 或更高级别时,此变更很有用。 - 系统现在为嵌套
FragmentActivity
调用onActivityResult()
。
- 为
- 针对 v7 AppCompat 库的变更:
-
- 向 API 级别 14 及更高级别添加了夜间模式功能。根据一天当中的时段或特定于应用的设置在 Material 浅色主题和 Materia 深色主题之间切换。
-
- 您可以在以下位置找到日间和夜间主题:
<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()
:设置用户可以从“操作”视图中选择的GuidedAction
按钮列表。- 说明字段现在可修改:
-
GuidedAction.Builder.descriptionEditable()
:在传递true
时,将操作的说明设置为可修改。GuidedAction.getEditDescription()
:以CharSequence
的形式返回可修改说明。
- 添加了子级操作的下拉列表:
-
GuidedAction.setSubActions()
:将GuidedAction
列表设置为子级操作的下拉菜单。
- 向
- 添加了用于
DatePicker
的GuidedDatePickerAction
微件: -
- 日期是使用年、月和日列选择的,而且具有可自定义范围。
GuidedDatePickerAction.Builder
:适用于GuidedDatePickerAction
对象的 Builder 类。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
微件添加了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
微件添加了字符计数支持。 - 通过添加
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.Builder
类,用于生成Palette
实例。- 向
Palette
类添加了from(Bitmap)
方法,可开始通过返回的Palette.Builder
实例生成 Palette。 - 弃用了
Palette.generate()
和Palette.generateAsync()
方法。
- 向
- 向
GridLayout.Spec
类添加了getAbsoluteAlignment()
方法。 - 放弃使用
app:theme
设置Toolbar
的样式。现在,您可以在所有 API 级别 7 及更高级别的设备上对工具栏使用android:theme
,在 API 级别 11 及更高级别的设备上使用android:theme
支持所有微件。
- 为 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
微件,可支持显示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 支持库,可支持适用于 Android 5.0 之前版本的多 dex 文件支持的多个 Dalvik 可执行文件 (DEX)。
- 针对 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
,它包含菜单到箭头的动画。 - 更新了常用界面微件,允许在 Android 5.0 之前的设备上运行时通过主题背景属性进行色调调节。
- 添加了
SwitchCompat
,它是 Android 4.0(API 级别 14)中添加的Switch
微件的向后移植。
- 新增的 v7 cardview 库:
-
- 添加了
CardView
微件,它提供与 Material Design 兼容的实现,用于显示数据项。
- 添加了
- 新增的 v7 recyclerview 库:
-
- 添加了
RecyclerView
微件,它提供灵活的列表视图,用于为较大的数据集提供有限的窗口。
- 添加了
- 新增的 v7 palette 库:
-
- 添加了
Palette
类,可让您从图片中提取突出颜色。
- 添加了
- 新增的 v17 leanback 库:
-
- 添加了对构建 TV 界面的支持,包括
BrowseFragment
、DetailsFragment
和PlaybackOverlayFragment
。 如需详细了解如何使用这些界面微件,请参阅开发 TV 回放应用。
- 添加了对构建 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()
添加了对外部存储 API 的支持。 这些辅助方法始终在搭载 Android 4.3(API 级别 18)及更早版本的设备上返回单个文件对象。在搭载 Android 4.4(API 级别 19)及更高版本的设备上运行时,这些方法可能会返回多个文件对象。 - 添加了可与打印 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
微件,用于创建可合理适应各种屏幕尺寸的链接摘要和详细视图。 - 添加了
ActionBarDrawerToggle
,一种将DrawerLayout
和ActionBar
的功能结合在一起的方式。 - 添加了
ViewDragHelper
,可作为用于在父视图内拖动视图的新常用组件。 - 添加了
ScrollerCompat
,可提供Scroller
和OverScroller
兼容性支持。 - 添加了
FileProvider
,可在应用之间共享私有文件。 - 更新了
ViewPager
,可在以下情况下抛出异常:相关的PagerAdapter
类在不调用notifyDataSetChanged()
的情况下被修改。 - 修复了
ViewPager
子级绘制排列顺序的问题。 - 修复了
GestureDetectorCompat
,可在点按超时和长按事件之间分派缺少的onSingleTapConfirmed(MotionEvent)
调用。
- 添加了
- 新增的 v7 gridlayout 库:
-
- 添加了
GridLayout
,可为GridLayout
布局对象提供支持。 - 添加了
android.support.v7.widget.Space
,它可用于在GridLayout
布局对象内创建空白区域。
- 添加了
- 针对 v4 支持库的变更:
-
- 改进了
ViewPager
的互动行为。 - 修复了可能导致
ViewPager
选择错误页面的错误。 - 修复了在
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
的各种错误,包括setAllCaps
选项、标题对齐、外观改进、最小宽度限制和轻触导航问题。 - 添加了对
ViewPager
页面间距的支持,这有助于ViewPager
类为具有较大水平滚动范围的内容(例如地图)提供分页支持。 - 修复了
ViewPager
的大量错误,包括大小和数据集更改问题、页面定位、用户互动、滚动跟踪和键盘导航问题。 - 修复了
Fragment
的很多错误,包括目标 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
,可通过某项服务使用它。 - 向
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 导航指南提供支持。这些扩充功能包括一种在各个版本之间实现操作栏“向上”按钮的方式。如需查看此模式的示例实现,请参阅 (<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,而无需全局传播。 - 在
ViewCompat
中添加了对检查 Android 2.3 及更高版本上的View
并为其设置滚动模式的支持。 - 针对 Fragment API 的变更:
- 新增了 API,可控制新菜单的可见性。
- 添加了自定义动画 API。
- 在
FragmentActivity
中添加了 API,可保留自定义的非配置实例数据。 - 修复了各种问题。
- 修复了在 Froyo 和较早版本的平台上运行时导致取消
AsyncTask
的Loader
错误。支持代码现在使用自己的AsyncTask
版本,以在所有平台版本上保持相同的行为。
- 添加了
- 针对 v4 支持库的变更:
-
- 添加对
Fragment.SavedState
的支持 - 添加
MotionEventCompat
,可支持更新的MotionEvent
API - 添加
VelocityTrackerCompat
,可支持更新的VelocityTracker
API - 添加
ViewConfigurationCompat
,可支持更新的ViewConfiguration
API - 通过所有新 API(仅在支持库中提供),您可以创建带有水平分页的界面,让用户在内容视图之间左右滑动。支持此功能的类包括:
ViewPager
:管理子视图布局的ViewGroup
,用户可以在子视图之间滑动。PagerAdapter
:使用代表每个页面的视图填充ViewPager
的适配器。FragmentPagerAdapter
:PagerAdapter
的扩展,用于在 Fragment 之间进行翻转。FragmentStatePagerAdapter
:PagerAdapter
(使用库对Fragment.SavedState
的支持)的扩展,用于在 Fragment 之间进行翻转。
- 添加对
- 新增的 v13 支持库:
-
- 包括
FragmentPagerAdapter
和FragmentStatePagerAdapter
,可支持水平分页。这些与添加到 v4 支持库的 API 完全相同,但依赖于 Android 3.2 中的其他平台组件。如果您正在为 Android 3.2 及更高版本开发,请使用此库代替 v4(v4 库中的所有其他 API 在 API 级别 13 上已经可用)。
- 包括
- 针对 v4 库的变更:
-
- 支持 Fragment 动画
- 修复
Fragment.onActivityResult()
错误
修订版 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 库的初始版本。