Compose Material
最新更新 | 稳定版本 | 候选版本 | Beta 版本 | Alpha 版本 |
---|---|---|---|---|
2024 年 9 月 4 日 | 1.7.0 | - | - | 1.8.0-alpha01 |
结构
Compose 是 androidx
中 7 个 Maven 组 ID 的组合。每个组包含一组目标功能子集,每个子集都有自己的发行说明。
此表解释了这些组并链接到每组发行说明。
组 | 描述 |
---|---|
compose.animation | 在他们的 Jetpack Compose 应用程序中构建动画以丰富用户体验。 |
compose.compiler | 使用 Kotlin 编译器插件转换 @Composable 函数并启用优化。 |
compose.foundation | 使用现成的构建块编写 Jetpack Compose 应用程序,并扩展基础以构建您自己的设计系统组件。 |
compose.material | 使用现成的 Material Design 组件构建 Jetpack Compose UI。这是 Compose 的更高级别入口点,旨在提供与 www.material.io 上描述的组件相匹配的组件。 |
compose.material3 | 使用 Material Design 3 组件构建 Jetpack Compose UI,这是 Material Design 的下一个演变。Material 3 包含更新的主题和组件以及 Material You 个性化功能,例如动态颜色,旨在与新的 Android 12 视觉风格和系统 UI 保持一致。 |
compose.runtime | Compose 编程模型和状态管理的基本构建块,以及 Compose 编译器插件的目标核心运行时。 |
compose.ui | 与设备交互所需的 Compose UI 的基本组件,包括布局、绘图和输入。 |
声明依赖项
要添加对 Compose 的依赖项,您必须将 Google Maven 存储库添加到您的项目中。阅读 Google 的 Maven 存储库 以获取更多信息。
在您的应用程序或模块的 build.gradle
文件中添加您需要的工件的依赖项
Groovy
dependencies { implementation "androidx.compose.material:material:1.7.0" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.material:material:1.7.0") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
有关依赖项的更多信息,请参阅 添加构建依赖项。
反馈
您的反馈有助于使 Jetpack 变得更好。如果您发现新的问题或有关于改进此库的想法,请告诉我们。在创建新的问题之前,请查看此库中 已存在的问题。您可以通过单击星形按钮为已存在的问题添加您的投票。
有关更多信息,请参阅 问题跟踪器文档。
版本 1.8
版本 1.8.0-alpha01
2024 年 9 月 4 日
androidx.compose.material:material-*:1.8.0-alpha01
已发布。版本 1.8.0-alpha01 包含 这些提交。
API 变更
- 新增
NavGraphBuilder.bottomSheet
构建器,用于创建带有安全参数的底部工作表 (I28589, I777db, b/351858980))
版本 1.7
版本 1.7.0
2024 年 9 月 4 日
androidx.compose.material:material-*:1.7.0
已发布。版本 1.7.0 包含 这些提交。
自 1.6.0 以来的重要变更
- 材质组件已迁移到使用新的涟漪 API,不再查询
RippleTheme
。 - 以前接受
MutableInteractionSource
并默认为remember { MutableInteractionSource() }
的材质组件现在接受可空MutableInteractionSource
并默认为 null。如果您没有提升并使用MutableInteractionSource
,则应传递 null。这允许某些组件仅在需要时延迟创建实例,从而提高性能。还建议您在自己的组件中进行类似的更改。 BottomDrawer
、ModalBottomSheet
、BackdropScaffold
和标准底部工作表已提升为稳定 API。
版本 1.7.0-rc01
2024 年 8 月 21 日
androidx.compose.material:material-*:1.7.0-rc01
已发布。版本 1.7.0-rc01 包含 这些提交。
版本 1.7.0-beta07
2024 年 8 月 7 日
androidx.compose.material:material-*:1.7.0-beta07
已发布。版本 1.7.0-beta07 包含 这些提交。
版本 1.7.0-beta06
2024 年 7 月 24 日
androidx.compose.material:material-*:1.7.0-beta06
已发布。版本 1.7.0-beta06 包含 这些提交。
版本 1.7.0-beta05
2024 年 7 月 10 日
androidx.compose.material:material-*:1.7.0-beta05
已发布。版本 1.7.0-beta05 包含 这些提交。
版本 1.7.0-beta04
2024 年 6 月 26 日
androidx.compose.material:material-*:1.7.0-beta04
已发布。版本 1.7.0-beta04 包含 这些提交。
版本 1.7.0-beta03
2024 年 6 月 12 日
androidx.compose.material:material-*:1.7.0-beta03
已发布。版本 1.7.0-beta03 包含 这些提交。
版本 1.7.0-beta02
2024 年 5 月 29 日
androidx.compose.material:material-*:1.7.0-beta02
已发布。版本 1.7.0-beta02 包含 这些提交。
API 变更
- 更新链接样式的 API:将
TextLinkStyles
移动到TextStyle
并从材质中删除TextDefaults
(I5477b)
版本 1.7.0-beta01
2024 年 5 月 14 日
androidx.compose.material:material-*:1.7.0-beta01
已发布。版本 1.7.0-beta01 包含 这些提交。
API 变更
- 更新了在 Text 中获取材质主题链接的 API。具体来说,删除了从
TextDefaults
中构造主题LinkAnnotations
并使用主题链接解析 HTML 的方法。相反,添加了一个TextLinkStyles
类,该类允许将链接作为参数传递给 Text 可组合物以对其进行样式设置。(I31b93)
版本 1.7.0-alpha08
2024 年 5 月 1 日
androidx.compose.material:material-*:1.7.0-alpha08
已发布。版本 1.7.0-alpha08 包含 这些提交。
API 变更
- 修复
backgroundColor
未应用于TextFieldDecorationBox
和OutlinedTextFieldDecorationBox
的问题。装饰框现在接受一个shape
参数。(I371c2, b/307694651) RippleConfiguration#isEnabled
已删除,LocalRippleConfiguration
现已变为可空。要禁用涟漪,不要提供RippleConfiguration
(其中isEnabled = false
),而是向LocalRippleConfiguration
提供null
。(I22725)- 文本链接除了正常样式、悬停和聚焦之外,还具有按下状态样式选项。
TextDefaults
方法每个都有一个pressedStyle
参数来支持这一点。(Ic473f, b/139312671)
错误修复
OutlinedTextField
现在为标签顶部填充考虑了系统字体大小。(Idc781)
版本 1.7.0-alpha07
2024 年 4 月 17 日
androidx.compose.material:material-*:1.7.0-alpha07
已发布。版本 1.7.0-alpha07 包含 这些提交。
API 变更
- 文本链接除了正常样式、悬停和聚焦之外,还获得了按下状态样式选项。(I5f864, b/139312671)
- 添加了
TextDefaults
对象,其中包含用于构造LinkAnnotation
并解析将MaterialTheme
应用于链接的 HTML 标记字符串的方法。(I98532, b/139312671)
版本 1.7.0-alpha06
2024 年 4 月 3 日
androidx.compose.material:material-*:1.7.0-alpha06
已发布。版本 1.7.0-alpha06 包含 这些提交。
公告
androidx.compose.material
不再要求在该 Maven 组中使用每个工件的相同版本。用户可以混合和匹配 Compose 基础库的版本 (Ie5fba)
API 变更
- 将更多
ModalDrawer
和BottomDrawer
默认为DrawerDefaults
对象。(Ib5b2e)
版本 1.7.0-alpha05
2024 年 3 月 20 日
androidx.compose.material:material-*:1.7.0-alpha05
已发布。版本 1.7.0-alpha05 包含 这些提交。
API 变更
ScaffoldSubcomposeInMeasureFix
标志已删除。(I67363)
版本 1.7.0-alpha04
2024 年 3 月 6 日
androidx.compose.material:material-*:1.7.0-alpha04
已发布。版本 1.7.0-alpha04 包含 这些提交。
新功能
- 添加了一个新的
androidx.compose.material:material-navigation
工件,它在使用 Navigation Compose 时添加了对底部工作表作为目标的支持。这将取代 Accompanist Navigation Material 库。(d65d57, b/180247978)
版本 1.7.0-alpha03
2024 年 2 月 21 日
androidx.compose.material:material-*:1.7.0-alpha03
已发布。 版本 1.7.0-alpha03 包含这些提交。
API 变更
BottomDrawer
已从实验提升为稳定。BottomDrawerState
现在将进度公开为函数,允许查询特定目标之间的进度。BottomDrawerState
现在允许自定义动画规范,并且confirmStateChange
不再是尾随 lambda。(I9c029, b/261423850)BackdropScaffold
已从实验提升为稳定。动画规范现在是tween
规范,符合指南。BackdropScaffold
的snackbarHost
参数不再是最后一个参数,以避免与尾随 lambda 混淆。BackdropScaffoldState
公开了一个progress(from, to)
API,用于查询锚点之间的进度。(I73f48, b/261423218)- 标准底部工作表已从实验提升为稳定。已删除弃用的构造函数。动画规范现在是
tween
规范,符合指南。(I3c1a8, b/278692145, b/261409034) - 模态底部工作表已从实验提升为稳定。已删除弃用的构造函数。动画规范现在是
tween
规范,符合指南。(Ic53f4, b/278692145, b/266780235, b/261409034)
错误修复
- 修复了
BackdropScaffold
在与LookaheadScope
结合的特定情况下可能会崩溃的问题。(I51396) - 删除了
BottomSheetScaffold
中的子组合,以提高性能。修复了BottomSheetScaffold
在与LookaheadScope
结合的特定情况下可能会崩溃的问题。(I2f90c) - 删除了
ModalBottomSheetLayout
中的子组合,从而提高了性能。(I7a025)
版本 1.7.0-alpha02
2024 年 2 月 7 日
androidx.compose.material:material-*:1.7.0-alpha02
已发布。 版本 1.7.0-alpha02 包含这些提交。
版本 1.7.0-alpha01
2024 年 1 月 24 日
androidx.compose.material:material-*:1.7.0-alpha01
已发布。 版本 1.7.0-alpha01 包含这些提交。
行为变更
- 材质组件已迁移到使用新的涟漪 API,不再查询
RippleTheme
。
API 变更
rememberRipple
和RippleTheme
已从 material-ripple 中弃用,并添加了新的涟漪和RippleConfiguration
API 到材质和其他设计系统库中。以前接受
MutableInteractionSource
且默认记住{ MutableInteractionSource() }
的材质组件现在接受可为空的MutableInteractionSource
且默认值为 null。如果你没有提升和使用MutableInteractionSource
,你应该传入 null。这允许某些组件仅在需要时才延迟创建实例,从而提高性能。建议你在自己的组件中进行类似的更改。
版本 1.6
版本 1.6.8
2024 年 6 月 12 日
androidx.compose.material:material-*:1.6.8
已发布。版本 1.6.8 包含 这些提交。
版本 1.6.7
2024 年 5 月 1 日
androidx.compose.material:material-*:1.6.7
已发布。版本 1.6.7 包含 这些提交。
版本 1.6.6
2024 年 4 月 17 日
androidx.compose.material:material-*:1.6.6
已发布。自上次发布以来没有更改。
版本 1.6.5
2024 年 4 月 3 日
androidx.compose.material:material-*:1.6.5
已发布。版本 1.6.5 包含 这些提交。
版本 1.6.4
2024 年 3 月 20 日
androidx.compose.material:material-*:1.6.4
已发布。版本 1.6.4 包含 这些提交。
版本 1.6.3
2024 年 3 月 6 日
androidx.compose.material:material-*:1.6.3
已发布。版本 1.6.3 包含 这些提交。
错误修复
- 修复了
ExposedDropdownMenu
中的回归,使其再次可聚焦。(c0e0ed, b/323694447)
版本 1.6.2
2024 年 2 月 21 日
androidx.compose.material:material-*:1.6.2
已发布。 版本 1.6.2 包含这些提交。
版本 1.6.1
2024 年 2 月 7 日
androidx.compose.material:material-*:1.6.1
已发布。 版本 1.6.1 包含这些提交。
版本 1.6.0
2024 年 1 月 24 日
androidx.compose.material:material-*:1.6.0
已发布。 版本 1.6.0 包含这些提交。
版本 1.6.0-rc01
2024 年 1 月 10 日
androidx.compose.material:material-*:1.6.0-rc01
已发布。 版本 1.6.0-rc01 包含这些提交。
版本 1.6.0-beta03
2023 年 12 月 13 日
androidx.compose.material:material-*:1.6.0-beta03
已发布。 版本 1.6.0-beta03 包含这些提交。
版本 1.6.0-beta02
2023 年 11 月 29 日
androidx.compose.material:material-*:1.6.0-beta02
已发布。 版本 1.6.0-beta02 包含这些提交。
版本 1.6.0-beta01
2023 年 11 月 15 日
androidx.compose.material:material-*:1.6.0-beta01
已发布。 版本 1.6.0-beta01 包含这些提交。
版本 1.6.0-alpha08
2023 年 10 月 18 日
androidx.compose.material:material-*:1.6.0-alpha08
已发布。 版本 1.6.0-alpha08 包含这些提交。
API 变更
- 弃用
materialIcon
函数,转而使用其接受autoMirror
参数的重载函数。(Ia338d)
**错误修复** - 自动增加导航项的高度以容纳较大的内容。(0c4ecc, b/272336962)
版本 1.6.0-alpha07
2023 年 10 月 4 日
androidx.compose.material:material-*:1.6.0-alpha07
已发布。 版本 1.6.0-alpha07 包含这些提交。
- 依赖项更新
版本 1.6.0-alpha06
2023 年 9 月 20 日
androidx.compose.material:material-*:1.6.0-alpha06
已发布。 版本 1.6.0-alpha06 包含这些提交。
行为变更
- 从
BottomSheetScaffold
中删除了与抽屉相关的功能。将你的BottomSheetScaffold
包裹在一个抽屉可组合项中以实现以前的功能。请查看BottomSheetScaffoldWithDrawerSample
获取示例。(I1dcc8)
API 变更
- 引入了临时标志以控制 Scaffold 应在测量期间还是在放置期间测量其子项。默认情况下,这将在测量期间进行测量。如果你遇到新行为的问题,请提交问题。(If6e3b)
版本 1.6.0-alpha05
2023 年 9 月 6 日
androidx.compose.material:material-*:1.6.0-alpha05
已发布。 版本 1.6.0-alpha05 包含这些提交。
新功能
- 添加了在从右到左布局中呈现时自动镜像图标的支持。material-icons-core 和 material-icons-extended 模块中的图标现在提供了额外的图标集以支持在图标允许的情况下自动镜像。新集合以
Icons.AutoMirrored.Filled...
等为前缀,并包含将在 RTL 布局中自动镜像的图标。请查看 Material 图标列表 以获取可以(且应该)自动镜像的图标列表。
API 变更
- 添加了在从右到左布局中呈现时自动镜像图标的支持。material-icons-core 和 material-icons-extended 模块中的图标现在提供了额外的图标集以支持在图标允许的情况下自动镜像。新集合以
Icons.AutoMirrored.Filled...
等为前缀,并包含将在 RTL 布局中自动镜像的图标。请查看 Material 图标列表 以获取可以(且应该)自动镜像的图标列表。之前为这些图标提供的图标属性现在已标记为弃用,并提供替代块建议以帮助迁移。如果你没有对 RTL 上的镜像图标进行任何特殊处理,我们建议你迁移到新的图标集。例如,Icons.Filled.ArrowBack
应重构为Icons.AutoMirrored.Filled.ArrowBack
。(I4b511)
版本 1.6.0-alpha04
2023 年 8 月 23 日
androidx.compose.material:material-*:1.6.0-alpha04
已发布。 版本 1.6.0-alpha04 包含这些提交。
错误修复
- 修复了在 Scaffold 中使用
Subcomposition
(例如,BottomSheetScaffold
)的某些组件在LookaheadScope
中过早尝试读取其大小的问题。(If2c5d) - 修复了
DropdownMenu
的offset
计算,使 x 偏移仅取决于本地布局方向,并且当菜单靠近屏幕底部时 y 偏移将不再反转。(Iccc74, b/294103942) - 优化了
BottomSheetScaffold
的布局内部,并修复了LookaheadLayout
中BottomSheetScaffold
的潜在问题。(Ic0afa)
版本 1.6.0-alpha03
2023 年 8 月 9 日
androidx.compose.material:material-*:1.6.0-alpha03
已发布。 版本 1.6.0-alpha03 包含这些提交。
API 变更
- Material2 组件现在有一个单独的 API 用于传递
windowInsets
以支持 Android 中的边缘到边缘功能。与 Material3 组件不同,Material2 组件默认不支持内嵌,应手动传递该值。请参阅相应的示例以获取指导。(I655e8)
版本 1.6.0-alpha02
2023 年 7 月 26 日
androidx.compose.material:material-*:1.6.0-alpha02
已发布。 版本 1.6.0-alpha02 包含这些提交。
API 变更
- 我们正在将密度依赖项移至组件级别。这适用于以下组件:
SwipeToDismiss
和基于工作表的组件。请使用提供的新的重载,其中密度是一个参数。(I1846e) - 其他注释以指定可组合项的允许输入(I51109)
- 更新了 API 文件以注释兼容性抑制(I8e87a, b/287516207)
- 为
FabPosition
添加了新的开始对齐方式(Ib7aea, b/170592777) - Material 2 中的
TextFieldColorsWithIcons
已被弃用,取而代之的是TextFieldColors
。当你重写leadingIconColor
或trailingIconColor
时,也应重写使用interactionSource
的重载。(Id57ed, b/199377790)
版本 1.6.0-alpha01
2023 年 6 月 21 日
androidx.compose.material:material-*:1.6.0-alpha01
已发布。 版本 1.6.0-alpha01 包含这些提交。
行为变更
includeFontPadding
现在在 Material 2 排版中默认值为false
。默认的行高样式也已更改为Trim.None
和Alignment.Center
,并且已在Typography
的TextStyle
中添加了显式lineHeight
(以 sp 为单位)。如果你想自定义这些值,请查阅 API 文档,并查看 博客文章 以获取对这些更改的深入解释。(Icabc3, I3f801, I04c03)
API 变更
- Material 的
Swipeable
API 已被弃用。请参考 Foundation 的AnchoredDraggable
API,这些 API 针对简单和复杂用例进行了优化。(I732e0)
错误修复
BottomSheetState
、ModalBottomSheetState
和BottomDrawerState
现在公开了一个进度属性,指示当前(已结算)锚点和滑动方向上的最接近锚点之间的进度。(I1b317, b/271169225, b/276375124, b/276776071, b/270066861)
版本 1.5
版本 1.5.4
2023 年 10 月 18 日
androidx.compose.material:material-*:1.5.4
已发布。 版本 1.5.4 包含这些提交。
版本 1.5.3
2023 年 10 月 4 日
androidx.compose.material:material-*:1.5.3
已发布。此版本没有更改
版本 1.5.2
2023 年 9 月 27 日
androidx.compose.material:material-*:1.5.2
已发布。 版本 1.5.2 包含这些提交。
版本 1.5.1
2023 年 9 月 6 日
androidx.compose.material:material-*:1.5.1
已发布,没有更改。 版本 1.5.1 包含这些提交。
版本 1.5.0
2023 年 8 月 9 日
androidx.compose.material:material-*:1.5.0
已发布。 版本 1.5.0 包含这些提交。
自 1.4.0 以来重要更改
API 变更
- 合并了
BottomSheetScaffold
中的 Swipeable1 API 更改。BottomSheetState
的confirmStateChange
参数已重命名为confirmValueChange
。progress
现在公开为浮点值。animateTo
和snapTo
现在是内部的。请改用expand()
和collapse()
。direction
和overflow
已被删除。offset
已被requireOffset()
替换。 I323b4 - 将抽屉中的
snapTo
函数标记为非实验性 API。 (Ib9c18, b/261425368) - 为圆形进度指示器添加了轨迹颜色参数,为圆形和线性进度指示器都添加了笔触帽参数。 (Ie668c, b/216325962, b/222964817)
- 将
ModalBottomSheetState
、ModalBottomSheetState.Saver
和rememberModalBottomSheetState
的confirmStateChange
重命名为confirmValueChange
。 (Ib48d1) - 添加
Modifier.minimumInteractiveComponentSize
。如果元素测量结果小于 48.dp,则可以使用它保留至少 48.dp 的大小以消除触摸交互的歧义。 (I33f58, b/258495559) - 合并了
ModalBottomSheetLayout
中的 Swipeable API 更改。ModalBottomSheetState
的 animateTo 现在不再接受animationSpec
参数,公开的偏移量现在是可为空的。使用requireOffset
来要求偏移量。 (Ia2e79) - 添加
@JvmDefaultWithCompatibility
注释 (I8f206) - 合并了
ModalDrawer
中的 Swipeable API 更改。DrawerState
的animateTo
已被打开和关闭方法替换,偏移量现在是可为空的。使用requireOffset
来要求偏移量。 (I3de9e) - 更新了抽屉和表格,以在手势可能变成滚动事件的情况下正确延迟按下。
- 在 Material 和 Material3 文本、
TextField
和OutlinedTextField
中添加了minLines
参数,允许以行数的形式设置组件的最小高度 (I4af1d)
错误修复
- 修复了
pullRefresh
未消耗速度的问题,导致出现过度滚动。还更改了Modifier.pullRefresh
中onRelease
lambda 的 API 签名,以返回一个表示消耗速度的浮点数 (I7db65, b/266874741) BottomSheetState
、ModalBottomSheetState
和BottomDrawerState
现在公开了一个进度属性,指示当前(已结算)锚点和滑动方向上的最接近锚点之间的进度。(I1b317, b/271169225, b/276375124, b/276776071, b/270066861)- 修复了当操作相互堆叠以适应对话框宽度时,
AlertDialog
关闭操作出现在确认操作下方的错误。此修复与 Material Design 规范对齐。 (I029de, b/235454277) - 当
gesturesEnabled
设置为 false 时,BottomSheetScaffold
将不再参与嵌套滚动。 (I634f3, b/215403277) - 修复了当为插槽提供空内容时,
BottomSheetScaffold
会崩溃的错误。 (Ib24a5, b/235588730) - 修复了
PullRefreshIndicator
拦截点击/指针事件的问题。 (2494256, b/271777421) - 修复了在方向改变时
ModalBottomSheetLayout
在极端情况下会崩溃的问题。表格内容中的布局动画(例如Modifier.animateContentSize
)现在可以平滑运行。 (I2f981, b/266780234)
版本 1.5.0-rc01
2023 年 7 月 26 日
androidx.compose.material:material-*:1.5.0-rc01
已发布。 版本 1.5.0-rc01 包含这些提交。
版本 1.5.0-beta03
2023 年 6 月 28 日
androidx.compose.material:material-*:1.5.0-beta03
已发布。 版本 1.5.0-beta03 包含这些提交。
错误修复
BottomSheetState
、ModalBottomSheetState
和BottomDrawerState
现在公开了一个进度属性,指示当前(已结算)锚点和滑动方向上的最接近锚点之间的进度。(I1b317, b/271169225, b/276375124, b/276776071, b/270066861)
版本 1.5.0-beta02
2023 年 6 月 7 日
androidx.compose.material:material-*:1.5.0-beta02
已发布。 版本 1.5.0-beta02 包含这些提交。
版本 1.5.0-beta01
2023 年 5 月 24 日
androidx.compose.material:material-*:1.5.0-beta01
已发布。 版本 1.5.0-beta01 包含这些提交。
API 变更
DrawerState
和BottomDrawerState
的偏移量现在不再是可为空的。它们改为返回Float.NaN
以指示偏移量不存在。 (Ie9855)- 在构造
DropdownMenu
或ExposedDropdownMenu
时,添加了一个选项来传入ScrollState
,以控制显示菜单项的垂直滚动状态。 (Idb009, b/185304441) - 添加了对启用/禁用
ModalBottomSheetLayout
手势的支持,以便用户可以为更多功能的底部表格配置此选项 (I40af0) - 向
BasicText
添加了一个颜色参数,以允许有效地为文本颜色设置动画或设置文本颜色。 (Iffd88, b/246961787) - 将语义属性
isContainer
重命名为isTraversalGroup
(I121f6)
错误修复
- 修复了当操作相互堆叠以适应对话框宽度时,
AlertDialog
关闭操作出现在确认操作下方的错误。此修复与 Material Design 规范对齐。 (I029de, b/235454277)
版本 1.5.0-alpha04
2023 年 5 月 10 日
androidx.compose.material:material-*:1.5.0-alpha04
已发布。 版本 1.5.0-alpha04 包含这些提交。
API 变更
- 我们将密度依赖项移动到组件级别。这适用于以下组件:
BottomDrawer
、ModalBottomSheetLayout
、BottomSheetScaffold
、Switch
、ModalDrawer
。请使用提供的密度为参数的新重载。 (I8fbd8)
版本 1.5.0-alpha03
2023 年 4 月 19 日
androidx.compose.material:material-*:1.5.0-alpha03
已发布。 版本 1.5.0-alpha03 包含这些提交。
API 变更
- 更新了
BottomDrawer
的内部结构,以使用新的SwipeableV2
API。因此,BottomDrawerState
现在将仅在类级别定义 API,它不会从SwipeableState
继承方法/属性。我们使用内部SwipeableV2State
进行组合。偏移量现在是可为空的浮点属性,可以通过 currentValue 和 targetValue 属性访问当前值和滑动目标值。以前类级别的 open/expand/close 等方法和 isOpen/isClosed 等属性继续受支持。 (Iad40c, b/178529942, b/220676296)
错误修复
- 更新了 Switch 组件的内部结构。切换现在将在拖动时预览最接近的(目标状态)。 (Id90d4)
- 在
BottomSheetScaffold
中,表格内容的动画(例如表格内容上的Modifier.animateContentSize
)已优化,现在可以平滑运行。 (Ia913c, b/270518202, b/254446195) - 当
gesturesEnabled
设置为false
时,BottomSheetScaffold
将不再参与嵌套滚动。 (I634f3, b/215403277)
版本 1.5.0-alpha02
2023 年 4 月 5 日
androidx.compose.material:material-*:1.5.0-alpha02
已发布。 版本 1.5.0-alpha02 包含这些提交。
错误修复
- 修复了当为插槽提供空内容时,
BottomSheetScaffold
会崩溃的错误。 (Ib24a5, b/235588730) - 修复了
PullRefreshIndicator
拦截点击/指针事件的问题 (2494256, b/271777421)
版本 1.5.0-alpha01
2023 年 3 月 22 日
androidx.compose.material:material-*:1.5.0-alpha01
已发布。 版本 1.5.0-alpha01 包含这些提交。
错误修复
- 添加芯片组回流样本。更新单行芯片组样本中子芯片之间的水平填充,以匹配规范。 (I3b155)
- 修复了在方向改变时
ModalBottomSheetLayout
在极端情况下会崩溃的问题。表格内容中的布局动画(例如Modifier.animateContentSize
)现在可以平滑运行。 (I2f981, b/266780234)
版本 1.4
版本 1.4.3
2023 年 5 月 3 日
androidx.compose.material:material-*:1.4.3
已发布,没有更改(仅版本号更新)。
版本 1.4.2
2023 年 4 月 19 日
androidx.compose.material:material-*:1.4.2
已发布。 版本 1.4.2 包含以下提交。
版本 1.4.1
2023 年 4 月 5 日
androidx.compose.material:material-*:1.4.1
已发布。 版本 1.4.1 包含以下提交。
版本 1.4.0
2023 年 3 月 22 日
androidx.compose.material:material-*:1.4.0
已发布。 版本 1.4.0 包含以下提交。
自 1.3.0 以来重要的更改
API 变更
- 添加
Modifier.minimumInteractiveComponentSize
。如果元素测量结果小于 48.dp,可以使用它来保留至少 48.dp 的大小,以消除触摸交互的歧义。(I33f58,b/258495559) - 合并了
ModalDrawer
中的 Swipeable API 的更改。DrawerState
的animateTo
已被打开和关闭方法取代,偏移量现在是可空值。使用requireOffset
来强制偏移量。(I3de9e) - 在 Material 和 Material3 文本、
TextField
和OutlinedTextField
中添加了minLines
参数,允许以行数的形式设置组件的最小高度 (I4af1d) - 在
BasicText
和BasicTextField
中添加了minLines
参数。它允许以行数的形式设置这些可组合对象的最小高度 (I24294,b/122476634)
版本 1.4.0-rc01
2023 年 3 月 8 日
androidx.compose.material:material-*:1.4.0-rc01
已发布,无更改。 版本 1.4.0-rc01 包含以下提交。
版本 1.4.0-beta02
2023 年 2 月 22 日
androidx.compose.material:material-*:1.4.0-beta02
已发布。 版本 1.4.0-beta02 包含以下提交。
API 变更
- 合并了
BottomSheetScaffold
中的 Swipeable API 的更改。BottomSheetState
的confirmStateChange
参数已重命名为confirmValueChange
。progress
现在以浮点值公开。animateTo
和snapTo
是内部的。请改用expand()
和collapse()
。direction
和overflow
已被删除。offset
已被requireOffset()
代替。(I323b4)
错误修复
- 从可点击和可选择的表面中删除了语义角色,更新了使用它们的组件以使用修饰符设置角色。semantics (Ibb4ba)
- 对扩展的 Material 图标进行了一些细微调整,调整了填充的
desktop_mac
、directions
和kitchen
图标。(I65f5e)
版本 1.4.0-beta01
2023 年 2 月 8 日
androidx.compose.material:material-*:1.4.0-beta01
已发布。 版本 1.4.0-beta01 包含以下提交。
API 变更
- 修复了
pullRefresh
未消耗速度的问题,导致出现过度滚动。还更改了Modifier.pullRefresh
中onRelease
lambda 的 API 签名,以返回一个表示消耗速度的浮点数 (I7db65, b/266874741) - 恢复了属性获取器
LocalMinimuTouchTargetEnforcement
并将其标记为已弃用,并重定向到LocalMinimumInteractiveComponentEnforcement
。(I60dd5)
版本 1.4.0-alpha05
2023 年 1 月 25 日
androidx.compose.material:material-*:1.4.0-alpha05
已发布。 版本 1.4.0-alpha05 包含以下提交。
错误修复
- 修复了
ModalBottomSheetLayout's HalfExpanded
状态计算错误的问题,导致表单看起来像是漂浮的。(I8c615,b/265610459) - 修复了
ModalBottomSheetLayout
中的一个错误,该错误会导致表单在某些情况下从隐藏状态变为可见状态时崩溃。(Ia9265,b/265444789)
版本 1.4.0-alpha04
2023 年 1 月 11 日
androidx.compose.material:material-*:1.4.0-alpha04
已发布。 版本 1.4.0-alpha04 包含以下提交。
API 变更
- 在表面上添加了
IsContainer
语义属性。此属性将在以后的更改中使用,该更改根据元素(如表面)的语义含义确定遍历顺序。(I63379) - 将抽屉中的
snapTo
函数标记为非实验性 API。 (Ib9c18, b/261425368) - 为圆形进度指示器添加了轨迹颜色参数,为圆形和线性进度指示器都添加了笔触帽参数。 (Ie668c, b/216325962, b/222964817)
- 将
ModalBottomSheetState
、ModalBottomSheetState.Saver
和rememberModalBottomSheetState
的confirmStateChange
重命名为confirmValueChange
。 (Ib48d1) - 更多弃用隐藏函数的返回类型可空性 (Ibf7b0)
- 添加
Modifier.minimumInteractiveComponentSize
。如果元素测量结果小于 48.dp,则可以使用它保留至少 48.dp 的大小以消除触摸交互的歧义。 (I33f58, b/258495559) - 合并了
ModalBottomSheetLayout
中的 Swipeable API 的更改。ModalBottomSheetState
的animateTo
不再接受animationSpec
参数,公开的offset
现在是可空值。使用requireOffset
来强制offset
。(Ia2e79)
错误修复
ModalBottomSheetLayout
的表单现在最大宽度为 640 dp。(I71a4f,b/234927577)- 修复了
rememberPullRefreshState
未随时间更新refreshThreshold
和refreshingOffset
的问题。(Ifed10,b/263159832) - 进度指示器的进度现在已正确限制在其预期范围内。(I8a7eb,b/262262727)
- 当
ModalBottomSheetState
尚未收到任何锚点时,它将在调用snapTo
或animateTo
时,无需动画地更新currentValue
,而不是抛出异常。(I2c91b) - 修复了 Material 2
FilterChip
实现的启用状态。(Id326a,b/261329817) - 修复了
ModalBottomSheetLayout
在从纵向旋转到横向时如果表单HalfExpanded
就会崩溃的错误。请确保您传入正确的initialValue
,例如通过检查配置。(Ie8df7,b/182882364) - 修复了如果表单内容为空,
ModalBottomSheetLayout
就会崩溃的问题。ModalBottomSheetLayout
现在允许表单内容为空。如果表单内容为空,则它将只具有隐藏状态。(Ic2288,b/200980998,b/216693030)
已知问题
- 从
androidx.compose.foundation:1.4.0-alpha03
更新到androidx.compose.foundation:1.4.0-alpha04
时,您可能会遇到java.lang.NoSuchFieldError
错误。 此处 是最初报告该问题的所在。已提交修复程序,并将在下一次 Compose 更新中提供。作为解决方法,请将您的androidx.compose.material
和androidx.compose.material3
库更新到最新版本(1.1.0-alpha04)或将您的androidx.compose.foundation
降级到 1.4.0-alpha03。
版本 1.4.0-alpha03
2022 年 12 月 7 日
androidx.compose.material:material-*:1.4.0-alpha03
已发布。 版本 1.4.0-alpha03 包含以下提交。
API 变更
- 添加
@JvmDefaultWithCompatibility
注释 (I8f206) - 合并了
ModalDrawer
中的Swipeable
API 的更改。DrawerState
的animateTo
已被open
和close
方法取代,偏移量现在是可空值。使用requireOffset
来强制偏移量。(I3de9e) - 添加了一个修饰符 API 来查询祖先滚动信息。(I2ba9d,b/203141462)
- 用于
Clickable
以在手势可能成为滚动事件时正确延迟按下交互。 - 修复了
Clickables
在Scrollable ViewGroup
内使用时未正确延迟涟漪的问题。 - 更新了抽屉和表格,以在手势可能变成滚动事件的情况下正确延迟按下。
错误修复
- 修复了
PullRefreshIndicator
在调用onRefresh
后可能卡住的问题,前提是刷新状态未更改为 true。(Ie2416,b/248274004)
依赖项更新
- Compose UI 和 Compose Material 现在依赖于 Lifecycle 2.5.1。(I05ab0,b/258038814)
版本 1.4.0-alpha02
2022 年 11 月 9 日
androidx.compose.material:material-*:1.4.0-alpha02
已发布。 版本 1.4.0-alpha02 包含以下提交。
API 变更
awaitFirstDown
和waitForUpOrCancellation
现在接受PointerEventPass
,以提高灵活性。(I7579a,b/212091796)- 在 Material 和 Material3 文本、
TextField
和OutlinedTextField
中添加了minLines
参数,允许以行数的形式设置组件的最小高度 (I4af1d) - 在
BasicTex
t 和BasicTextField
中添加了minLines
参数。它允许以行数的形式设置这些可组合对象的最小高度 (I24294,b/122476634)
版本 1.4.0-alpha01
2022 年 10 月 24 日
androidx.compose.material:material-*:1.4.0-alpha01
已发布。 版本 1.4.0-alpha01 包含以下提交。
API 变更
- 添加了一种新方法,即
awaitEachGesture()
,用于手势检测器。它的操作方式类似于forEachGesture()
,但对手势的循环完全在AwaitPointerEventScope
中进行,因此事件不会在迭代之间丢失。 forEachGesture()
已被弃用,原因是它允许事件在手势之间丢失。(Iffc3f,b/251260206)
版本 1.3
版本 1.3.1
2022 年 11 月 9 日
androidx.compose.material:material-*:1.3.1
已发布。 版本 1.3.1 包含以下提交。
版本 1.3.0
2022 年 10 月 24 日
androidx.compose.material:material-*:1.3.0
已发布。 版本 1.3.0 包含以下提交。
自 1.2.0 以来重要的更改
行为重大更改
- 对话框和弹出窗口中支持的最大高度已降至 8dp。
API 变更
版本 1.3.0-rc01
2022 年 10 月 5 日
androidx.compose.material:material-*:1.3.0-rc01
已发布。 版本 1.3.0-rc01 包含以下提交。
版本 1.3.0-beta03
2022 年 9 月 21 日
androidx.compose.material:material-*:1.3.0-beta03
已发布。 版本 1.3.0-beta03 包含以下提交。
API 变更
- 在 Compose 中添加一个下拉刷新组件 (I29168)
版本 1.3.0-beta02
2022 年 9 月 7 日
androidx.compose.material:material-*:1.3.0-beta02
已发布。 版本 1.3.0-beta02 包含以下提交。
自 1.3.0-beta01 起无更改。
版本 1.3.0-beta01
2022 年 8 月 24 日
androidx.compose.material:material-*:1.3.0-beta01
已发布。 版本 1.3.0-beta01 包含以下提交。
行为重大更改
对话框和弹出窗口中支持的最大高度已降至 8dp。
Compose 对话框和弹出窗口的最大支持海拔高度已从 30dp 降低到 8dp。此更改会影响 Material 和 UI 自定义对话框和弹出窗口。进行此更改是为了缓解 Android S 以下版本中的可访问性错误,并确保这些窗口内的可访问性服务能够与对话框或弹出窗口内的内容进行交互。
如果您创建的自定义对话框或弹出窗口实现设置的海拔高度高于 8dp,则此更改将影响您。请考虑降低对话框或弹出窗口的海拔高度。如果您需要退出此新行为,请考虑使用所需海拔高度分叉您自己的对话框或弹出窗口。不建议这样做,因为可访问性可能会受到负面影响,并且开发者有责任确保对话框或弹出窗口的底部部分可被可访问性服务交互和读取。
版本 1.3.0-alpha03
2022 年 8 月 10 日
androidx.compose.material:material-*:1.3.0-alpha03
已发布。 版本 1.3.0-alpha03 包含以下提交。
版本 1.3.0-alpha02
2022 年 7 月 27 日
androidx.compose.material:material-*:1.3.0-alpha02
已发布。 版本 1.3.0-alpha02 包含以下提交。
外部贡献
- 修复 Scaffold 中
AnimatedVisibility
与FloatingActionButton
相关的问题 (I3a0ae, b/224005027)
版本 1.3.0-alpha01
2022 年 6 月 29 日
androidx.compose.material:material-*:1.3.0-alpha01
已发布。 版本 1.3.0-alpha01 包含以下提交。
API 变更
- 将
RangeSlider
中的参数名称从 values 更改为 value (I3b79a)
错误修复
- 更新徽章示例以提供更有意义的内容描述。(I10b9d)
版本 1.2
版本 1.2.1
2022 年 8 月 10 日
androidx.compose.material:material-*:1.2.1
已发布。 版本 1.2.1 包含以下提交。
版本 1.2.0
2022 年 7 月 27 日
androidx.compose.material:material-*:1.2.0
已发布。 版本 1.2.0 包含以下提交。
版本 1.2.0-rc03
2022 年 6 月 29 日
androidx.compose.material:material-*:1.2.0-rc03
已发布。 版本 1.2.0-rc03 包含以下提交。
- 自 1.2.0-rc02 起无更改。
版本 1.2.0-rc02
2022 年 6 月 22 日
androidx.compose.material:material-*:1.2.0-rc02
已发布。 版本 1.2.0-rc02 包含以下提交。
版本 1.2.0-rc01
2022 年 6 月 15 日
androidx.compose.material:material-*:1.2.0-rc01
已发布。 版本 1.2.0-rc01 包含以下提交。
API 变更
- Compose 库中的接口现在使用 jdk8 默认接口方法构建 (I5bcf1)
错误修复
- 更新带有前导图标选项卡的徽章,以便将徽章附加到标签而不是图标。(I90993)
版本 1.2.0-beta03
2022 年 6 月 1 日
androidx.compose.material:material-*:1.2.0-beta03
已发布。 版本 1.2.0-beta03 包含以下提交。
错误修复
- 修复了
BottomSheetScaffold
在顶部应用栏的阴影上绘图的错误。BottomSheetScaffold
现在还考虑了工作表的状态,并在放置 Snackbars 时考虑该状态:在折叠状态下,Snackbars 位于工作表和 FAB 之上;在展开状态下,Snackbars 固定到工作表的底部。(Ia80b5, b/187771422)
版本 1.2.0-beta02
2022 年 5 月 18 日
androidx.compose.material:material-*:1.2.0-beta02
已发布。 版本 1.2.0-beta02 包含以下提交。
版本 1.2.0-beta01
2022 年 5 月 11 日
androidx.compose.material:material-*:1.2.0-beta01
已发布。 版本 1.2.0-beta01 包含以下提交。
新功能
- 这是 1.2 的第一个测试版发布!
API 变更
- 将
OutlinedTextField
中绘制边框描边的可组合项TextFieldDefaults.BorderStroke
重命名为TextFieldDefaults.BorderBox
。(I5f295)
版本 1.2.0-alpha08
2022 年 4 月 20 日
androidx.compose.material:material-*:1.2.0-alpha08
已发布。 版本 1.2.0-alpha08 包含以下提交。
API 变更
- 部分消耗(向下或位置)在
PointerInputChange
中已被弃用。您可以使用consume()
来完全消耗更改。您可以使用isConsumed
来确定是否有人之前消耗了更改。 PointerInputChange::copy()
现在始终执行浅层复制。这意味着当PointerInputChange
的副本之一被消耗时,PointerInputChange
的副本也会被消耗。如果您想要创建一个不受约束的PointerInputChange
,请使用构造函数。(Ie6be4, b/225669674)
版本 1.2.0-alpha07
2022 年 4 月 6 日
androidx.compose.material:material-*:1.2.0-alpha07
已发布。 版本 1.2.0-alpha07 包含以下提交。
版本 1.2.0-alpha06
2022 年 3 月 23 日
androidx.compose.material:material-*:1.2.0-alpha06
已发布。 版本 1.2.0-alpha06 包含以下提交。
API 变更
- 更新可点击的 Card API 以遵循 Surface API 的更改 (I56bcb)
- 更新 Material 2 Surface API,为可选择和可切换的 Surface 添加了其他重载函数。(Ifcca5)
版本 1.2.0-alpha05
2022 年 3 月 9 日
androidx.compose.material:material-*:1.2.0-alpha05
已发布。 版本 1.2.0-alpha05 包含以下提交。
API 变更
LazyVerticalGrid
和LazyHorizontalGrid
现在是稳定的。(I307c0)LazyVerticalGrid/LazyHorizontalGrid
和所有相关 API 已移至 .grid 子包中。请将您的导入从 androidx.compose.foundation.lazy 更新到 androidx.compose.foundation.lazy.grid。(I2d446, b/219942574)- 恢复了之前仅依赖 View 的
WindowInsetsControllerCompat
的更改,并再次需要 Window,这是管理一些窗口标志所需的。已弃用ViewCompat.getWindowInsetsController
,转而使用WindowCompat.getInsetsController
,以确保使用正确的 Window(例如,如果 View 位于对话框中)。(I660ae, b/219572936) - 文本:
includeFontPadding
现在默认情况下已关闭。由于includeFontPadding=false
而导致的剪裁问题已得到处理,对于高脚本,不应发生剪裁。(I31c84, b/171394808) - 添加了一个新的
LazyVerticalGrid
API 来定义横轴大小 (I17723)
版本 1.2.0-alpha04
2022 年 2 月 23 日
androidx.compose.material:material-*:1.2.0-alpha04
已发布。 版本 1.2.0-alpha04 包含以下提交。
API 变更
添加对过滤器芯片的支持
(I39a6e, b/192585545)- 添加了
TextFieldDecorationBox
和OutlinedTextFieldDecorationBox
。将它们与BasicTextField
结合使用将帮助您基于 Material Design 文本字段构建自定义文本字段,但提供更多自定义选项。 - 提供了一种在文本字段中调整水平和垂直填充的方式。(I8c9f1, b/203764564, b/191543915, b/189971673, b/183136600, b/179882597, b/168003617)
添加了
ComposableTarget
、ComposableTargetMarker
和ComposableOpenTarget
,它们允许在编译时报告可组合函数何时被调用,以针对它没有设计为使用的应用器进行调用。在大多数情况下,注释可以由 Compose 编译器插件推断出来,因此直接使用这些注释的情况应该很少见。无法推断的情况包括创建和使用自定义应用器、抽象可组合函数(如接口方法)、可组合 Lambda 的字段或全局变量(局部变量和参数是推断的),或者使用
ComposeNode
或相关的可组合函数。对于自定义应用器,调用
ComposeNode
或ReusableComposeNode
的可组合函数需要为该函数以及任何可组合的 Lambda 参数类型添加CompoableTarget
注释。但是,建议创建一个用ComposableTargetMarker
注释的注释,然后使用标记的注释代替直接使用ComposableTarget
。用ComposableTargetMarker
标记的可组合注释等效于ComposbleTarget
,其中属性类的完全限定名称作为应用器参数。有关使用ComposableTargetMarker
的示例,请参见anroidx.compose.ui.UiComposable
。(I38f11)
版本 1.2.0-alpha03
2022 年 2 月 9 日
androidx.compose.material:material-*:1.2.0-alpha03
已发布。 版本 1.2.0-alpha03 包含这些提交。
错误修复
- 添加芯片组示例 (I97080, b/192585545)
版本 1.2.0-alpha02
2022 年 1 月 26 日
androidx.compose.material:material-*:1.2.0-alpha02
已发布。 版本 1.2.0-alpha02 包含这些提交。
API 变更
- 向没有复杂逻辑的现有方法的重载方法添加了
NonRestartableComposable
。这减少了为所有在内部调用的函数中重复的参数生成的编译器记忆检查(相等)。(I90490) - 添加对操作芯片的支持 (I07100, b/192585545)
版本 1.2.0-alpha01
2022 年 1 月 12 日
androidx.compose.material:material-*:1.2.0-alpha01
已发布。 版本 1.2.0-alpha01 包含这些提交。
依赖项更新
- 现在依赖于 Kotlin
1.6.10
。
外部贡献
ModalBottomSheetState
现在具有isSkipHalfExpanded
标志。它可以通过构造函数设置,也可以通过将ModalBottomSheetState
的isSkipHalfExpanded
属性设置为true
来更新。更新isSkipHalfExpanded
的值会导致工作表重新组合。(I18b86, b/186669820)
版本 1.1
版本 1.1.1
2022 年 2 月 23 日
androidx.compose.material:material-*:1.1.1
已发布。 版本 1.1.1 包含这些提交。
错误修复
- 修复
androidx.compose.ui.platform.RenderNodeLayer.updateDisplayList
中的NullPointerException
(aosp/1947059, b/206677462) - 修复在 Android 上从剪贴板读取时,由剪贴板内容引起的崩溃。(I06020, b/197769306)
- 修复
LazyVerticalGrid
中的 RTL (aosp/1931080, b/207510535)
版本 1.1.0
2022 年 2 月 9 日
androidx.compose.material:material-*:1.1.0
已发布。 版本 1.1.0 包含这些提交。
自 1.0.0 以来的重要更改
- 对 Android 12 过度滚动效果 的稳定支持
- 触摸目标大小的改进
- 请注意,相对于 Compose 1.0,Material 组件将扩展其布局空间以满足 Material 辅助功能指南 中的 触摸目标大小。例如,即使将按钮的大小设置为更小,按钮触摸目标也会扩展到 48x48dp 的最小尺寸。这使 Compose Material 与 Material Design Components 的行为保持一致,在混合使用视图和 Compose 时提供一致的行为。此更改还确保在使用 Compose Material 组件创建 UI 时,将满足触摸目标辅助功能的最低要求。
- 对 导航栏 的稳定支持
- 将许多以前实验性的 API 升级为稳定版
- 支持 更新版本的 Kotlin
版本 1.1.0-rc03
2022 年 1 月 26 日
androidx.compose.material:material-*:1.1.0-rc03
已发布。 版本 1.1.0-rc03 包含这些提交。
行为变更
请注意,相对于 Compose 1.0,Material 组件将扩展其布局空间以满足 Material 辅助功能指南 中的 触摸目标 大小。例如,即使将按钮的大小设置为更小,按钮触摸目标也会扩展到 48x48dp 的最小尺寸。这使 Compose Material 与 Material Design Components 的行为保持一致,在混合使用视图和 Compose 时提供一致的行为。此更改还确保在使用 Compose Material 组件创建 UI 时,将满足触摸目标辅助功能的最低要求。
错误修复
- 在检查最小触摸目标修饰符时,为布局检查器添加了一些更好的调试信息。(aosp/1955036)
版本 1.1.0-rc01
2021 年 12 月 15 日
androidx.compose.material:material-*:1.1.0-rc01
已发布。 版本 1.1.0-rc01 包含这些提交。
错误修复
- 修复应用于
Checkbox
的圆角 (I38b03, b/175198975, b/202309440)
版本 1.1.0-beta04
2021 年 12 月 1 日
androidx.compose.material:material-*:1.1.0-beta04
已发布。 版本 1.1.0-beta04 包含这些提交。
新功能
- 更新以与 Kotlin
1.6.0
兼容
版本 1.1.0-beta03
2021 年 11 月 17 日
androidx.compose.material:material-*:1.1.0-beta03
已发布。 版本 1.1.0-beta03 包含这些提交。
版本 1.1.0-beta02
2021 年 11 月 3 日
androidx.compose.material:material-*:1.1.0-beta02
已发布。 版本 1.1.0-beta02 包含这些提交。
错误修复
- 涟漪和其他指示现在将仅在位于 Modifier.scrollable() 容器内时才会延迟,而不是始终延迟向下事件。(Ibefe0, b/203141462)
版本 1.1.0-beta01
2021 年 10 月 27 日
androidx.compose.material:material-*:1.1.0-beta01
已发布。 版本 1.1.0-beta01 包含这些提交。
新功能
- 涟漪现在支持悬停和焦点状态,因此悬停/聚焦按钮等组件现在将显示正确的状态叠加层。
版本 1.1.0-alpha06
2021 年 10 月 13 日
androidx.compose.material:material-*:1.1.0-alpha06
已发布。 版本 1.1.0-alpha06 包含这些提交。
API 变更
- 添加了 Layout 的无子项重载,效率更高 (Ib0d9a)
- 基于
ExposedDropdownMenuBox
实现ExposedDropdownMenu
,其中包含TextField
和DropdownMenu
(If60b2) dismissOnOutsideClick
已添加到PopupProperties
中,取代了已弃用的dismissOnClickOutside
。新属性接收点击位置和锚点边界,从而可以更精确地控制是否应该调用 onDismissRequest。例如,这对于防止点击锚点时锚点被解除非常有用。updateAndroidWindowManagerFlags
已添加到PopupProperties
中,可以对弹出窗口传递给 Android WindowManager 的标志进行低级控制。Lambda 的参数将是根据 PopupProperties 值计算的标志,这些标志会导致 WindowManager 标志:例如,可聚焦。Lambda 的结果将是传递给 Android WindowManager 的最终标志。默认情况下,updateAndroidWindowManagerFlags 将使根据参数计算的标志保持不变。此 API 应谨慎使用,仅在弹出窗口具有非常具体的行为要求的情况下使用。(I6e9f9)
版本 1.1.0-alpha05
2021 年 9 月 29 日
androidx.compose.material:material-*:1.1.0-alpha05
已发布。 版本 1.1.0-alpha05 包含这些提交。
API 变更
- 为没有可访问触摸目标的 Material 组件添加了最小触摸目标大小。由于这会在组件周围添加额外的间距以确保它们具有足够大的触摸目标,因此这可能会更改现有的 UI,这些 UI 假设这些组件的大小是其视觉大小,并且没有考虑触摸目标大小。可以使用实验性的
LocalMinimumTouchTargetEnforcement
组成本地来禁用整个层次结构中的此行为,但这仅用于在更新现有 UI 以考虑新最小尺寸时作为临时解决方法。(I9b966, b/149691127, b/171509422) - 添加了实验性的 TextFieldColorsWithIcons 接口,扩展了 TextFieldColors 以向 leadingColor 和 trailingColor 提供 InteractionSource。这使得根据焦点状态修改 TextField 的外观成为可能。(I66923, b/198402662)
版本 1.1.0-alpha04
2021 年 9 月 15 日
androidx.compose.material:material-*:1.1.0-alpha04
已发布。 版本 1.1.0-alpha04 包含这些提交。
API 变更
- 已弃用
performGesture
和GestureScope
,它们已被performTouchInput
和TouchInjectionScope
取代。(Ia5f3f,b/190493367) - 在
SemanticsNode
中添加了touchBoundsInRoot
,它包含最小触控目标尺寸,以便开发人员可以确保触控目标满足辅助功能的最低要求。(I2e14b,b/197751214)
错误修复
- 允许裁剪区域扩展到超出裁剪区域的触控目标边界,以实现最小触控目标目的。(I43e10,b/171509422)
- 更新了
Divider
可组合函数,以针对厚度参数尊重Dp.Hairline
,以支持绘制单像素分隔线,而不管显示密度如何。(I16ffb,b/196840810)
版本 1.1.0-alpha03
2021 年 9 月 1 日
androidx.compose.material:material-*:1.1.0-alpha03
已发布。 版本 1.1.0-alpha03 包含以下提交。
新功能
- 更新了 Compose
1.1.0-alpha03
以依赖于 Kotlin1.5.30
。(I74545)
API 变更
版本 1.1.0-alpha02
2021 年 8 月 18 日
androidx.compose.material:material-*:1.1.0-alpha02
已发布。 版本 1.1.0-alpha02 包含以下提交。
外部贡献
- 修复了 SwipeableState 在滑动偏移量在锚点的舍入误差内时的行为。(I03d39,b/191993377)
版本 1.1.0-alpha01
2021 年 8 月 4 日
androidx.compose.material:material-*:1.1.0-alpha01
已发布。 版本 1.1.0-alpha01 包含以下提交。
API 变更
- 更新了
DrawScope#drawImage
方法,该方法使用源和目标矩形以使用可选的 FilterQuality 参数。这对于旨在放大以获得基于像素的艺术品的像素艺术很有用。更新的 BitmapPainter + Image 可组合函数也使用可选的 FilterQuality 参数 (Ie4fb0,b/180311607) - 将 BadgeBox 重命名为 BadgedBox,更改参数以接受 Badge 可组合函数。添加了 Badge 组件,它是 BadgedBox 的典型徽章内容。(I639c6)
- 添加了 NavigationRail 组件,有关使用信息,请参阅文档和示例 (I8de77)
错误修复
- 在目录应用程序中添加了底部对齐的 NavigationRail 示例和 Catalog 应用程序演示。(I3cffc)
- 对话框现在遵循平台大小行为。将 usePlatformDefaultWidth 设置为 false 以覆盖此行为。(Iffaed,b/192682388)
- 在目录应用程序中添加了导航栏演示。(I04960)
- 在目录应用程序中添加了徽章演示。(If285d)
版本 1.0
版本 1.0.5
2021 年 11 月 3 日
androidx.compose.material:material-*:1.0.5
已发布。 版本 1.0.5 包含以下提交。
错误修复
- 修复了跟踪派生 derivedStateOf 实例的崩溃。(aosp/1792247)
版本 1.0.4
2021 年 10 月 13 日
androidx.compose.material:material-*:1.0.4
已发布。 版本 1.0.4 包含以下提交。
依赖项更新
- 更新为依赖于 Kotlin
1.5.31
版本 1.0.3
2021 年 9 月 29 日
androidx.compose.material:material-*:1.0.3
已发布。 版本 1.0.3 包含以下提交。
依赖项更新
- 更新为依赖于 Kotlin
1.5.30
版本 1.0.2
2021 年 9 月 1 日
androidx.compose.material:material-*:1.0.2
已发布。 版本 1.0.2 包含以下提交。
更新以支持 Compose 1.0.2
版本。Compose 1.0.2
仍然与 Kotlin 1.5.21
兼容。
版本 1.0.1
2021 年 8 月 4 日
androidx.compose.material:material-*:1.0.1
已发布。 版本 1.0.1 包含以下提交。
依赖项更新
- 更新为依赖于 Kotlin
1.5.21
。
版本 1.0.0
2021 年 7 月 28 日
androidx.compose.material:material-*:1.0.0
已发布。 版本 1.0.0 包含以下提交。
1.0.0 的主要功能
这是 Compose 的第一个稳定版本。有关更多详细信息,请参阅官方的 Compose 发布博文!
已知问题
如果您使用的是 Android Studio Bumblebee Canary 4 或 AGP
7.1.0-alpha04
/7.1.0-alpha05
,您可能会遇到以下崩溃java.lang.AbstractMethodError: abstract method "void androidx.lifecycle.DefaultLifecycleObserver.onCreate(androidx.lifecycle.LifecycleOwner)"
要修复,请在您的
build.gradle
文件中暂时将您的 minSdkVersion 提高到 24 以上。此问题将在下一个版本的 Android Studio Bumblebee 和 AGP7.1
中修复。(b/194289155)
版本 1.0.0-rc02
2021 年 7 月 14 日
androidx.compose.material:material-*:1.0.0-rc02
已发布。 版本 1.0.0-rc02 包含以下提交。
错误修复
- 对话框现在遵循平台大小行为。将
usePlatformDefaultWidth
设置为 false 以覆盖此行为。(Iffaed,b/192682388)
版本 1.0.0-rc01
2021 年 7 月 1 日
androidx.compose.material:material-*:1.0.0-rc01
已发布。 版本 1.0.0-rc01 包含以下提交。
API 变更
- 添加了
BadgeBox
组件,有关使用信息,请参阅文档和示例 (I5e284) useDefaultMaxWidth
在PopupProperties
中被重命名为usePlatformDefaultWidth
。(I05710)- 对话框现在可以使用整个屏幕宽度。(I83929,b/190810877)
- 添加了实验性范围滑块实现 (I2f4b3)
错误修复
- 为了与 Material Design 规范保持一致,具有无效输入的 OutlinedTextField 停止使用错误颜色作为占位符使用标签。当文本字段中没有输入文本且文本字段未处于焦点状态时,后者为真。通过更改
error:Boolean
参数的含义TextFieldColors.labelColor()
函数也发生了变化:即使输入无效,如果标签用作占位符,它现在也将返回false
。(I45f78)
版本 1.0.0-beta09
2021 年 6 月 16 日
androidx.compose.material:material-*:1.0.0-beta09
已发布。 版本 1.0.0-beta09 包含以下提交。
API 变更
- 在 OutlinedTextField 中添加了 Shape 参数,以便能够自定义边框的形状 (I8f39e,b/181322957)
- TextOverflow 已更改为内联类。(I433af)
错误修复
- BottomDrawer、BackdropScaffold 和 ModalBottomSheetLayout 中的屏幕遮罩在传递 Color.Unspecified 时将消失 (I2d899,b/182063309)
添加了配置文件规则
此版本在以下 Compose 模块中添加了配置文件规则 (I14ed6)
- androidx.compose.animation
- androidx.compose.animation-core
- androidx.compose.foundation
- androidx.compose.foundation-layout
- androidx.compose.material
- androidx.compose.material-ripple
- androidx.compose.runtime
- androidx.compose.ui
- androidx.compose.ui.geometry
- androidx.compose.ui.graphics
- androidx.compose.ui.text
- androidx.compose.ui.text
- androidx.compose.ui.unit
- androidx.compose.ui.util
什么是配置文件规则?
库的配置文件规则在位于
src/main
或等效目录中的文本文件baseline-prof.txt
中指定。该文件每行指定一个规则,其中此处的规则是用于匹配库中方法或类的模式。这些规则的语法是用于使用adb shell profman --dump-classes-and-methods ...
时的人类可读 ART 配置文件格式的超集。这些规则采用两种形式之一来针对方法或类。方法规则将具有以下模式
<FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
类规则将具有以下模式
<CLASS_DESCRIPTOR>
这里
<FLAGS>
是一个或多个字符H
、S
和P
,用于指示是否应将此方法标记为“热”、 “启动” 或“启动后”。<CLASS_DESCRIPTOR>
是目标方法所属类的描述符。例如,类androidx.compose.runtime.SlotTable
将具有描述符Landroidx/compose/runtime/SlotTable;
。<METHOD_SIGNATURE>
是方法的签名,包括方法的名称、参数类型和返回类型。例如,LayoutNode
上的方法fun isPlaced(): Boolean
具有签名isPlaced()Z
。这些模式可以具有通配符 (
**
、*
和?
),以便单个规则包含多个方法或类。
规则的作用是什么?
具有标志
H
的方法表示此方法是“热”方法,应提前编译。具有标志
S
的方法表示它是启动时调用的方法,应提前编译以避免启动时编译和解释方法的成本。带有
P
标志的方法表示该方法是在启动后调用的。此文件中存在的类表示它在启动期间使用,并且应该预先分配在堆中,以避免类加载的成本。
这是如何运作的?
- 库可以定义这些规则,这些规则将被打包在 AAR 工件中。当构建包含这些工件的 APK 时,这些规则会合并在一起,合并后的规则用于构建特定于 APK 的紧凑二进制 ART 配置文件。然后,ART 可以利用此配置文件在 APK 安装到设备上时提前编译应用程序的特定子集,以提高应用程序性能,特别是首次运行。请注意,这不会影响可调试应用程序。
版本 1.0.0-beta08
2021 年 6 月 2 日
androidx.compose.material:material-*:1.0.0-beta08
已发布。 版本 1.0.0-beta08 包含这些提交。
新功能
行为破坏性 API 变更
- BEHAVIOUR-BREAKING: Card 现在会消耗点击事件,使通过
Card(Modifier.clickable)
添加的点击事件成为无操作。请使用 Card 的新实验性重载,它接受 onClick。 (Ia8744, b/183775620)- 添加了一个新的 Card 重载,它处理点击事件以及其他可点击功能:指示、interactionSource、启用/禁用。在这些情况下,无法使用具有
Modifier.clickable
的常规不可点击 Card,因为 Card 不会剪切这些情况下的涟漪指示。
- 添加了一个新的 Card 重载,它处理点击事件以及其他可点击功能:指示、interactionSource、启用/禁用。在这些情况下,无法使用具有
- BEHAVIOUR-BREAKING: Surface 现在会消耗点击事件,使通过
Surface(Modifier.clickable)
添加的点击事件成为无操作。请使用 Surface 的新实验性重载,它接受 onClick。 (I73e6c, b/183775620)- 添加了一个新的 Surface 重载,它处理点击事件以及其他可点击功能:指示、interactionSource、启用/禁用。在这些情况下,无法使用具有
Modifier.clickable
的常规不可点击 Surface,因为 Surface 不会剪切这些情况下的涟漪指示。
- 添加了一个新的 Surface 重载,它处理点击事件以及其他可点击功能:指示、interactionSource、启用/禁用。在这些情况下,无法使用具有
API 变更
FabPosition
已从枚举转换为内联类,以支持未来可能的扩展 (I030fb)- 将枚举用法重构为内联类,以避免在添加新枚举值时出现详尽的 when 语句问题。 (I2b5eb)
- 向可点击/可切换添加了一个点击超时,以防止在滚动/拖动期间显示涟漪 (Ia2704, b/168524931)
- ContentDescription 和 Text 语义属性不再是单个值,而是列表。这使得它们能够合并,而不是连接。还提供了更好的测试 API 来利用这些更改 (Ica6bf, b/184825850)
Modifier.focusModifier()
已弃用,并被Modifier.focusTarget()
替换 (I6c860)- 用
FocusState
接口替换了FocusState
枚举 (Iccc1a, b/187055290) - 删除了
LocalRippleNativeRendering
,因为现在 View 支持的涟漪实现已稳定 (I7fab3, b/188569367)
错误修复
Modifier.onGloballyPositioned()
已更改为报告修饰符链中此修饰符的坐标,而不是应用所有修饰符后的布局坐标。这意味着现在修饰符的顺序会影响报告的坐标。 (Ieb67d, b/177926591)- 为现有的 Compose Material 目录添加了自述文件。 (If9191)
版本 1.0.0-beta07
2021 年 5 月 18 日
androidx.compose.material:material-*:1.0.0-beta07
已发布。 版本 1.0.0-beta07 包含这些提交。
API 变更
- 您不再需要使用扩展方法来支持 Navigation Compose 中的路由。 (I22beb, b/172823546)
版本 1.0.0-beta06
2021 年 5 月 5 日
androidx.compose.material:material-*:1.0.0-beta06
已发布。 版本 1.0.0-beta06 包含这些提交。
API 变更
- Ripple 已迁移为在 Android 设备上内部使用
RippleDrawable
。这意味着涟漪动画将在 RenderThread 上执行,因此即使在 UI 线程处于负载状态下(例如,在屏幕之间导航时),也会流畅。这不会改变 Ripple 的 API 表面,但此更改可能会引入行为变更。为了帮助迁移,添加了LocalRippleNativeRendering
- 在 CompositionLocalProvider 内提供false
的值到此 CompositionLocal,以回退到以前的涟漪实现。此 API 是临时的,将在将来删除,因此,如果您遇到导致您使用此 API 的问题,请 提交错误报告。 (I902f8, b/168777351, b/183019123) - 添加了 CollectionInfo 和 CollectionItemInfo 可访问性 API,允许为可访问性服务标记集合及其项目 (Id54ef, b/180479017)
- 添加了可访问性 API
error
,允许标记包含无效输入的节点 (I12997, b/180584804, b/182142737)
错误修复
- 更新了 Compose Material 目录中来自以下位置的内边距实现:https://github.com/google/accompanist/pull/365。 (I25dc3)
- 具有权重 (fill = false) 的 Row 和 Column 子项不再使父项填充整个可用的主轴空间。 (Ied94d, b/186012444, b/184355105)
版本 1.0.0-beta05
2021 年 4 月 21 日
androidx.compose.material:material-*:1.0.0-beta05
已发布。 版本 1.0.0-beta05 包含这些提交。
错误修复
- 添加了组件磁贴图像、主题选择器以及对现有 Compose Material 目录中更具体的菜单 URL。 (I9b58e)
版本 1.0.0-beta04
2021 年 4 月 7 日
androidx.compose.material:material-*:1.0.0-beta04
已发布。 版本 1.0.0-beta04 包含这些提交。
API 变更
- API 变更:
DrawerState
状态不再扩展实验性 SwipeableState。- API 变更:
BottomDrawerState
现在标记为实验性,以匹配已有的实验性 BottomDrawer 组件 (I81114, b/181656094)
- API 变更:
- 将
SoftwareKeyboardController
上的hideSoftwareKeyboard
和showSoftwareKeyboard
分别重命名为hide()
和show()
。- 提供 LocalSoftwareKeyboardController 的完整 CompositionLocal 接口,允许设置它(在测试中尤其有用) (I579a6)
- 添加了 LiveRegion 可访问性 API。如果节点标记为活动区域,则可访问性服务会自动向用户通知其更改 (Idcf6f, b/172590946)
错误修复
- 将 Compose Material 目录的实现添加到现有模块中。当前缺少:组件磁贴图像、主题选择器(将在后续更改中添加)。 (Ie7a94)
版本 1.0.0-beta03
2021 年 3 月 24 日
androidx.compose.material:material-*:1.0.0-beta03
已发布。 版本 1.0.0-beta03 包含这些提交。
API 变更
DefaultMonotonicFrameClock
已弃用。现在,如果在没有MonotonicFrameClock
的情况下调用withFrameNanos
或Recomposer.runRecomposeAndApplyChanges
,则会抛出IllegalStateException
。 (I4eb0d)- 添加了一个新的 API
LeadingIconTab
,以支持在选项卡中显示图标和内联文本。 (I23267)
外部贡献
- [by Jossi Wolf]
BottomDrawer
现在会包装抽屉插槽的内容。当父项具有无限高度时,BottomDrawer
不会抛出IllegalStateException
。如果底部抽屉小于其父项的 50%,则底部抽屉现在将打开到扩展状态。关于BottomDrawerState
和ModalBottomSheetLayoutState
的文档已更新。如果底部抽屉处于打开或扩展状态,则BottomDrawerState#isOpen
现在将返回 true。 (I87241)
版本 1.0.0-beta02
2021 年 3 月 10 日
androidx.compose.material:material-*:1.0.0-beta02
已发布。 版本 1.0.0-beta02 包含这些提交。
API 变更
- 添加了新的
LocalSoftwareKeyboardController
组合本地 API,以替换 TextField 上以前SoftwareKeyboardController
接口。 (I5951e, b/168778053)
错误修复
- 强制执行对实验性 API 的公共使用的限制 (I6aa29, b/174531520)
- 将 TopAppBar 和 BottomAppBar 的默认水平对齐方式更改为开始,与 Row 一致 (Ib2dc7)
- 添加了一个新模块和 Compose Material 目录的占位符 UI,目前嵌套在现有的集成测试演示中。 (Idfcb3)
androidx.compose.ui:ui
不再依赖 AppCompat 或 Fragment。如果您在应用程序中使用 ComposeView,并且使用 Fragment 和/或 AppCompat,请确保您使用 AppCompat 1.3+ / Fragment 1.3+ - 这些版本是正确设置 ComposeView 所需的生命周期和保存状态所有者所需的。 (I1d6fa, b/161814404)
版本 1.0.0-beta01
2021 年 2 月 24 日
androidx.compose.material:material-*:1.0.0-beta01
已发布。 版本 1.0.0-beta01 包含这些提交。
这是 Compose 1.0.0 Beta 的第一个版本。
API 变更
- 大小修饰符已重命名。Modifier.width/height/size 已重命名为 requiredWidth/requiredHeight/requiredSize。Modifier.preferredWidth/preferredHeight/preferredSize 已重命名为 width/height/size。 (I5b414)
- imageResource 和 vectorResource 现在分别是 ImageBitmap 和 ImageVector 伴随对象的扩展函数。load{Image,Vector,Font}Resource 函数已被删除。 (I89130)
- 用于调整大小到内在尺寸的修饰符不再是实验性的。 (I15744)
- 已删除 dp 断言 (I798d2)
- 已从所有文本字段中删除 SoftwareKeyboardController 回调,将很快被新的 API 替换。 (Iae869, b/168778053)
- Switch、Checkbox 和 RadioButton 的操作 Lambda 现在可以为空。Checkbox-in-clickable-row 示例已更新以使用此功能。 (If601b, b/171819073)
InteractionState
已被[Mutable]InteractionSource
替换。- 接口负责发出/收集交互事件。
- 不要将
interactionState = remember { InteractionState() }
传递给诸如Button
和Modifier.clickable()
之类的组件,请使用interactionSource = remember { MutableInteractionSource() }
。 - 不要使用:
Interaction.Pressed in interactionState
,而是使用 InteractionSource 上的扩展函数,例如 InteractionSource.collectIsPressedAsState()。 - 对于复杂用例,您可以使用 InteractionSource.interactions 来观察交互流。有关更多信息,请参阅 InteractionSource 文档和示例。
- (I85965, b/152525426, b/171913923, b/171710801, b/174852378)
- 在 CompositionLocals 中添加 AccessibilityMananger 接口和 LocalAccessibilityMananger (I53520)
- 已删除已弃用的 LayoutCoordinates 方法,使用函数而不是属性来获取 positionInParent 和 boundsInParent (I580ed, b/169874631, b/175142755)
- Slider 现在支持启用/禁用状态 (I6d56b, b/179793072)
- 为诸如 CoreTextField 之类的低级文本组件创建了新的 TextInputSession 以进行输入会话。 (I8817f, b/177662148)
- AnimationEndReason.Interrupted 已删除。如果动画被打断,将抛出 CancellationException。 (I2cbbc, b/179695417)
- 已删除
@ExperimentalRippleApi
,并将RippleAlpha
更改为具有属性的类,而不是接口。 (I6df7c) - 添加了 TextFieldColors 接口来表示 TextField 和 OutlinedTextField 在不同状态下使用的不同颜色。有关默认实现,请参阅 TextFieldDefaults.textFieldColors 和 TextFieldDefaults.outlinedTextFieldColors。
- 将 TextField 和 OutlinedTextField 中的 isErrorValue 参数重命名为 isError。 (I831f9, b/171305338, b/168004067)
- 添加了 selectionGroup 修饰符,允许为可访问性目的标记标签或单选按钮的集合 (Ie5c29)
添加 LazyListState.animateScrollToItem
此方法平滑滚动到列表中的特定项目。 (I4bfd7)
ScrollableState.smoothScrollBy()
已重命名为animateScrollBy()
LazyListState.snapToItemIndex()
已重命名为scrollToItem()
ScrollState.smoothScrollTo()
已重命名为animateScrollTo()
(I35ded)所有标记为
@ReadOnlyComposable
的可组合项现在将在编译时进行验证,以确保它们仅调用其他@ReadOnlyComposables
(I58961)TargetAnimation API 已删除。 (If47d1, b/177457083)
Modifier.verticalScroll()/horizontalScroll() 中的滚动位置现在用 Int 表示 (I81298)
smoothScrollBy 和 scrollBy 方法的包已更改为
androidx.compose.foundation.gestures.*
(I3f7c1, b/175294473)FlingConfig 已重命名为 FlingBehavior,现在允许自定义挂起动画,而不是预定义的衰减。 (I02b86, b/175294473)
大小修饰符已重命名。Modifier.width/height/size 已重命名为 requiredWidth/requiredHeight/requiredSize。Modifier.preferredWidth/preferredHeight/preferredSize 已重命名为 width/height/size。 (I5b414)
defaultMinSizeConstraints 已重命名为 defaultMinSize。 (I4eaae)
Orientation 已移至 foundation 包中。VelocirtTracker 已从 ui.gesture 移动到 ui.input.pointer 中。 (Iff4a8, b/175294473)
drawerState.open() 和 drawerState.close() 现在是挂起函数。使用 rememberCoroutineScope() 来获取组合的范围以调用它们 (I16f60, b/175294473)
Providers 已重命名为 CompositionLocalProvider
- Composition 构造函数不再接受 key 参数,并且已被弃用。
- currentCompositeKeyHash 已变成可组合的顶级属性,而不是可组合的顶级函数。
- CompositionData 和 CompositionGroup 已移至 androidx.compose.runtime.tooling 命名空间
- ComposableLambda 已成为接口,而不是具体类,并且不再具有类型参数。
- ComposableLambdaN 已成为接口,而不是具体类,并且不再具有类型参数。
- snapshotFlow 函数已移至 androidx.compose.runtime 命名空间
- SnapshotMutationPolicy 的 merge 方法不再是实验性的
- 已删除
@TestOnly
顶级 clearRoots 函数。它不再需要。 - 已删除 keySourceInfoOf 和 resetSourceInfo 函数。它们不再需要。
- 已删除 Composer.collectKeySourceInformation。它不再需要。
- 已删除 isJoinedKey、joinedKeyLeft 和 joinedKeyRight 方法。它们不再需要。
- 各种顶级 API 已移至不同的文件并重新组织。由于 Kotlin 的文件类语义,这将破坏二进制兼容性,但不会破坏源代码兼容性,因此对于大多数用户来说应该不是问题。
- (I99b7d, b/177245490)
Modifier.scrollable 已重新设计。现在它使用 Scrollable 接口而不是 ScrollableController 类 (I4f5a5, b/174485541, b/175294473)
Modifier.draggable 现在接受 DraggableState 而不是简单的 Lambda。您可以通过
rememberDraggableState { delta -> }
创建状态,以获得与以前相同的行为 (Ica70f, b/175294473)ZoomableController.smoothScaleBy 和 ZoomableController.stopAnimation 现在是挂起函数。 (I7f970, b/177457083)
已删除一些之前已弃用的 API (Ice5da, b/178633932)
已对 Material API 进行以下更改
- 在 Top/BottomAppBar 中添加了 contentPadding 参数,以允许自定义默认填充。
- 在 BackdropScaffold 中重新排序了参数,以遵循 API 指南,即必填参数位于可选参数之前。
- 将 BottomNavigationItem 中的
icon
参数移到selected
和onClick
之后。 - 将 BottomNavigationItem 中的
alwaysShowLabels
参数重命名为alwaysShowLabel
。 - 将一些组件中的
bodyContent
参数重命名为content
。 - 在
ButtonDefaults.buttonColors()
中重新排序了参数。请注意,由于参数类型没有改变,这不会在您的代码中导致错误 - 请确保您使用的是命名参数,或者手动更新排序,否则您的代码的工作方式将与之前不同。 - 在
darkColors()
中添加了secondaryVariant
参数。此颜色通常与深色主题中的secondary
相同,但为了保持一致性和进一步的自定义而添加。 - 从公共 API 表面中删除了 ElevationDefaults 和 animateElevation(),因为它们不常用/有用。
- 将
Slider
中的onValueChangeEnd
重命名为onValueChangeFinished
,并将其设为空。 - 将
Snackbar
中的text
参数重命名为content
,以保持一致性。 - 在
DropdownMenuItem
中添加了contentPadding
参数,以允许自定义默认填充,并将content
设置为RowScope
的扩展。 - 将
ModalDrawerLayout
重命名为ModalDrawer
。 - 将
BottomDrawerLayout
重命名为BottomDrawer
。 - (I1cc66)
BasicTextField 现在接受 Brush 而不是 Color,以实现更好的自定义 (I83a36)
imageResource 和 vectorResource 现在分别是 ImageBitmap 和 ImageVector 伴随对象的扩展函数。load{Image,Vector,Font}Resource 函数已被删除。 (I89130)
将 Indication#createIndication() 更改为 Indication#rememberUpdatedIndication(InteractionState),并从 IndicationInstance#drawIndication() 中删除 InteractionState 参数。IndicationInstance 应该只负责绘制视觉效果,而不是响应 InteractionState 更改来启动动画/写入状态。这些动画和状态写入应该在
rememberUpdatedIndication()
中进行。Modifier.indication
中的indication
参数也已更改为必填参数。 (Ic1764, b/152525426)
错误修复
- 添加了新的 LocalSoftwareKeyboardController 组合本地 API 来替换 TextField 上先前的 SoftwareKeyboardController 接口。 (I658b6, b/168778053)
版本 1.0.0-alpha12
2021 年 2 月 10 日
androidx.compose.material:material-*:1.0.0-alpha12
已发布。 版本 1.0.0-alpha12 包含这些提交。
API 变更
- Modifier.pointerInput 现在需要记住键,以指示指针输入检测协程何时应为新的依赖项重新启动。 (I849cd)
- BottomDrawerLayout 和 ListItem 已标记为 @ExperimentalMaterialApi (Id766e)
- 已添加 PaddingValues.Absolute,可用于接受 PaddingValues 的 API 中。 (Ia5f30)
- onImeActionPerformed 已弃用。请改用 KeyboardActions (If0bbd, b/179071523)
- 为了更好地匹配 ImageBitmap 和 ImageVector 的命名约定,ImagePainter 已重命名为 BitmapPainter,以与 VectorPainter 相呼应。(Iba381,b/174565889)
- Animatable.snapTo 和 Animatable.stop 现在是挂起函数(If4288)
- ComponentActivity.setContent 已移至 androidx.activity:activity-compose 模块中的 androidx.activity.compose.setContent。(Icf416)
- 在一些很少使用的类中,解构和 copy() 方法已被移除。(I26702,b/178659281)
- 将 ModalBottomSheetState 中的 halfExpand() 和 expand() 设为内部方法(Ic914e)
- 将 Indication#createInstance 改为 @Composable,并将 LocalIndication 改为包含一个 Indication,而不是 () -> Indication。(I5eeea,b/157150564)
- 目前将 AlertDialog 和 DropdownMenu 移至 Android 专用。在 DropdownMenu 中添加了 PopupProperties 参数,用于进一步配置底层 Popup。(I9c443)
- loadFontResource 已弃用。请改用 fontResource。imageResource、loadImageResource、vectorResource 和 loadVectorResource 已弃用。请改用 painterResource。(I6b809)
- 已从 DropdownMenu 中删除
toggle
和toggleModifier
参数,并将dropdownModifier
、dropdownOffset
和dropdownContent
分别重命名为modifier
、offset
和content
。DropdownMenu 的行为现在与Popup
一致,其中父布局用于确定菜单的位置。在大多数情况下,您可以将toggle
移动到DropdownMenu
的兄弟节点位置,并将两者都包装在一个Box
中。有关此 API 使用的更多信息,请参见文档中的更新示例。(I884fb) - toIntPx() 已重命名为 roundToPx()。(I9b7e4,b/173502290)
- IntBounds 已重命名为 IntRect,并改进了 API。(I1f6ff)
- 添加了展开和折叠语义操作。在 ModalBottomSheetState 中添加了 expand 和 halfExpand(Ib5064)
- Modifier.dragGestureFilter 已弃用。请改用
Modifier.pointerInput { detectDragGestures (...)}
。或者,对于单轴拖动,请使用 Modifier.draggable(I0ba93,b/175294473) - 已将 Ambient 重命名以匹配 Ambient -> CompositionLocal 的重命名。Ambient 以前命名为 AmbientFoo,现在 CompositionLocal 命名为 LocalFoo。(I2d55d)
- 已将 Selection 移至 foundation。(I7892b)
- 与我们之前删除
state { 0 }
可组合函数并现在推广使用remember { mutableStateOf(0) }
类似,我们将删除savedInstanceState { 0 }
可组合函数。您应该改用rememberSaveable { mutableStateOf(0) }
,如果 MutableState 中使用的类型可以存储在 Bundle 中,它将自动保存和恢复。如果之前您传递了一个自定义保存器对象,现在您需要使用 rememberSaveable 的新重载,该重载具有stateSaver
参数。使用方法如下:val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) }
(Ib4c26,b/177338004) - 添加了 ProgressBarRangeInfo.Indeterminate 以标记用于辅助功能的不确定进度条(I6fe05)
@ComposableContract 已弃用,取而代之的是三个更具体的注释。
@ComposableContract(restartable = false)
已变为@NonRestartableComposable
@ComposableContract(readonly = true)
已变为@ReadOnlyComposable
@ComposableContract(preventCapture = true)
已变为@DisallowComposableCalls
@ComposableContract(tracked = true)
已删除。- (I60a9d)
emptyContent()
和(@Composable () -> Unit).orEmpty()
实用程序已弃用,因为它们不再有任何积极的性能影响或价值(I0484d)rememberSavedInstanceState() 已重命名为 rememberSaveable() 并移至 androidx.compose.runtime.saveable 包。(I1366e,b/177338004)
Saver、listSaver()、mapSaver()、autoSaver 已从 androidx.compose.runtime.savedinstancestate 移至 androidx.compose.runtime.saveable(I77fe6)
RounderCornerShape、CutCornerShape 和 CornerBasedShape 上的参数已从 left/right 重命名为 start/end,以便支持形状在 rtl 方向上的自动镜像。AbsoluteRounderCornerShape 和 AbsoluteCutCornerShape 是为不需要自动镜像的情况而引入的。(I61040,b/152756983)
已将 Tab 的
text
和icon
参数以及 BottomNavigationItem 的label
参数设为可为空,以更好地传达这些参数存在/不存在时的组件行为,因为这会影响组件的大小和布局。如果您当前传递emptyContent()
来表示没有文本/图标/标签,则应该改用null
。(I57ed4)将 contentColorFor 颜色参数重命名为 backgroundColor(I5bb67)
已弃用 TabDefaults 并用 TabRowDefaults 取代。(I0f189)
引入了 ColorMatrix API,用于修改源内容的 rgb 值。重构了 ColorFilter API,使其成为一个接口并匹配 PathEffect 的实现。(Ica1e8)
AnimatedValue/Float 现在已弃用。请改用 Animatable。(I71345,b/177457083)
添加了 SemanticsProperties.PaneTitle API。(I20d5a)
在 Tab 和 BottomNavigationItem 中添加了 enabled 参数,以防止它们可点击。将 BottomNavigationItem 改为 RowScope.BottomNavigationItem,以便更好地在其 API 中表达其布局要求。(Id683d)
tapGestureFilter、doubleTapGestureFilter、longPressGestureFilter 和 pressIndicaitonGestureFilter 已弃用。请改用 Modifier.clickable 或 Modifier.pointerInput 与 detectTapGestures 函数。(I6baf9,b/175294473)
在 Shape 的 createOutline 中添加了 layoutDirection 参数。这允许创建布局方向感知形状。(I57c20,b/152756983)
已删除
Recomposer.current()
。[摘要]ComposeView 现在默认使用延迟创建的窗口范围内的 Recomposer,该 Recomposer 由窗口的 ViewTreeLifecycleOwner 驱动。当宿主 Lifecycle 停止时,Recomposition 和基于 withFrameNanos 的动画滴答声将暂停。(I38e11)
错误修复
- Icon 现在将按比例放大以适应其大小,并尊重应用于它的尺寸修饰符。例如,
Icon(.., modifier = Modifier.size(50.dp)
现在将在 50x50dp 的空间中绘制。(Ib2ba9,b/178796190)
版本 1.0.0-alpha11
2021 年 1 月 28 日
androidx.compose.material:material-*:1.0.0-alpha11
已发布。 版本 1.0.0-alpha11 包含这些提交。
API 变更
- 将一些 Material API 提升为不再是
@Experimental
(I5d20e) - 已在 Image 和 Icon 中添加了内容描述参数。它用于向辅助功能服务提供描述(I2ac4c)
- 已将 Material 状态参数接口更改为具有返回
State<T>
的 @Composable 函数。添加了Animatable.asState()
,以更轻松地将 Animatable 转换为 State。还将 animateElevation 更改为 Animatable 上的挂起扩展。(If613c) - Snackbar、SnackbarHost、SnackbarHostState 不再是
@ExperimentalMaterialAPI
(Id1fb5) - 已将 Typography、Shapes 和 TabPosition 更改为不再是数据类。为 Typography 和 Shapes 添加了 copy 函数,以替换生成的函数。(I40037)
- 已删除一些先前弃用的 Material API(Ifaa25)
错误修复
- 已弃用 onCommit、onDispose 和 onActive,取而代之的是 SideEffect 和 DisposableEffect API(If760e)
- 已弃用基于 TransitionDefinition 的 Transition(I0ac57)
- 现在支持 updateTransition 中的初始状态(Ifd51d)
- WithConstraints 已重新设计为 BoxWithConstraints 并移至 foundation.layout。(I9420b,b/173387208)
弃用非挂起 scrollBy,删除非挂起 scrollTo
我们现在建议使用挂起函数来控制滚动并等待滚动完成。作为此转换的一部分,我们正在弃用和/或删除这些函数的非挂起版本。(Ie9ced)
弃用非挂起 smoothScrollBy 我们现在建议使用挂起函数来控制滚动并等待滚动完成。作为此转换的一部分,我们正在弃用这些函数的非挂起版本。(I12880)
引入了
ComposeContentTestRule
,它扩展了ComposeTestRule
并定义了setContent
,该函数已从ComposeTestRule
中删除。添加了一个工厂方法createEmptyComposeRule()
,它返回一个ComposeTestRule
并且不会为您启动 Activity。当您希望在测试期间启动 Activity 时使用此方法,例如,使用ActivityScenario.launch
(I9d782,b/174472899)在 Button 和 FloatingActionButton 中使用的涟漪效果不再可以通过 AmbientIndication 提供新的 Indication 来定制 - 这原本就不是定制这些组件的方式,现在这些组件与其他 Material 组件保持一致。要定制整个应用程序中的涟漪效果,请参见 RippleTheme。 (I546c5)
animateAsState 现在是 animateFooAsState,其中 Foo 是正在动画的变量类型。例如 Float、Dp、Offset 等 (Ie7e25)
BasicTextField 新增了一个名为
decorationBox
的参数。它允许向文本字段添加装饰,例如图标、占位符、标签等,并增加其点击目标区域。 (I16996)修复了一个错误,该错误导致无法将 Material 文本字段的宽度设置为小于 280.dp (I78373)
canDrag 参数已从 Modifier.draggable 中移除 (Ic4bec, b/175294473)
移除 displaySize,因为它应该避免使用。通常情况下,最好使用 onRoot() 的大小,或者至少使用窗口大小。 (I62db4)
Surface 现在可以拥有多个布局子节点。 (I66a92, b/144488459)
invalidate 和 compositionReference() 已被弃用,取而代之的是 currentRecomposeScope 和 rememberCompositionReference。 (I583a8)
将 PopupPositionProvider 修改为使用相对于窗口的坐标,而不是全局坐标。将 parentGlobalBounds 重命名为 anchorBounds,并将 windowGlobalBounds 修改为
windowSize: IntSize
(I2994a)Duration 和 Uptime 将被替换为 Long 毫秒,此步骤消除了指针输入对这些类的依赖。 (Ia33b2, b/175142755, b/177420019)
已删除接受 FlingConfig 的 AnimatedFloat.fling。请改用 suspend Animatable.animateDecay。 (I4659b, b/177457083)
clickable、toggleable 和 selectable 现在可以在组合之外创建 (I0a130, b/172938345, b/175294473)
Easing 已更改为函数式接口 (Ib14e5)
ScrollableColumn/Row 已被弃用。与 LazyColumn 相比,使用 ScrollableColumn 效率较低,因为当您有大量滚动内容时,使用 LazyColumn 只需要编写/测量/绘制可见的元素。为了防止用户使用低效的方式,我们决定弃用 ScrollableColumn 和 ScrollableRow,并推荐使用 LazyColumn 和 LazyRow。用户仍然可以决定他们不需要懒惰行为,并直接使用修饰符,例如:Column(Modifier.verticalScroll(rememberScrollState())) (Ib976b, b/170468083)
LazyColumn/LazyRow/LazyVerticalGrid 范围内的新的
items(count: Int)
工厂方法。items(items: List)
和itemsIndexed(items: List)
现在是扩展函数,因此您在使用时必须手动导入它们。适用于数组的新扩展重载:items(items: Array)
和itemsIndexed(Array)
(I803fc, b/175562574)删除实验性的 monotonicFrameAnimationClockOf 方法 (Ib753f, b/170708374)
弃用全局坐标方法,并创建了新的基于窗口的坐标方法。 (Iee284)
添加了 Modifier.toolingGraphicsLayer,它在打开检查时添加图形层修饰符。 (I315df)
FocusRequester.createRefs 现在标记为实验性,因为它可能会发生更改。 (I2d898, b/177000821)
SemanticsPropertyReceiver.hidden 已重命名为 invisibleToUser,并标记为 @ExperimentalComposeUiApi。AccessibilityRangeInfo 已重命名为 ProgressBarRangeInfo。stateDescriptionRange 已重命名为 progressBarRangeInfo。AccessibilityScrollState 已重命名为 ScrollAxisRange。horizontalAccessibilityScrollState 已重命名为 horizontalScrollAxisRange。verticalAccessibilityScrollState 已重命名为 verticalScrollAxisRange。 (Id3148)
在测试中利用 TestCoroutineDispatcher (I532b6)
更新了矢量图形 API 以支持解析应用于矢量图形根部的着色。 (Id9d53, b/177210509)
版本 1.0.0-alpha10
2021 年 1 月 13 日
androidx.compose.material:material-*:1.0.0-alpha10
已发布。 版本 1.0.0-alpha10 包含这些提交。
API 变更
- 修改了 Velocity,使其具有组件部分和数学运算。 (Ib0447)
- 将
@ExperimentalTesting
重命名为@ExperimentalTestApi
,以与类似的实验性 api 注释保持一致 (Ia4502, b/171464963) - 将 Position 重命名为 DpOffset,并删除 getDistance() (Ib2dfd)
- 将 Color.useOrElse() 重命名为 Color.takeOrElse() (Ifdcf5)
- 将 Toggle 添加到基础 Strings.kt (I4a5b7, b/172366489)
- FlowRow 和 FlowColumn 已被弃用。请改用自定义布局。 (I09027)
- Modifier.focus() 和 Modifier.focusRequester() 已被弃用。请改用 Modifier.focusModifier() 和 Modifier.focusReference()。 (I75a48, b/175160751, b/175160532, b/175077829)
- 将 nativeClass 移至 ui 模块,并将其设为内部。更新了 equals 实现中 nativeClass 的用法,以使用 'is MyClass' 代替。 (I4f734)
错误修复
- 添加了对禁用和只读文本字段的支持 (I35279, b/171040474, b/166478534)
animate()
现在被animateAsState()
替换,它返回State<T>
而不是T
。这可以提高性能,因为无效范围可以缩小到读取 State 值的位置。 (Ib179e)- 添加语义角色 API,并将 Role 作为参数添加到 clickable、selectable 和 toggleable SemanticsModifier。更改 Modifier.progressSemantics,以便 Slider 也可以使用它。 (I216cd)
版本 1.0.0-alpha09
2020 年 12 月 16 日
androidx.compose.material:material-*:1.0.0-alpha09
已发布。 版本 1.0.0-alpha09 包含这些提交。
API 变更
- 添加了 API 以手动触发 Modifier.swipeable 中的结算动画和拖动 (Iaa17a, b/162408885)
- 将 *Constants 对象(例如 ButtonConstants)重命名为以 Defaults 结尾,例如 ButtonDefaults。此外,还从这些新对象中的属性中删除了不必要的
default
前缀。 (Ibb915, b/159982740) Compose 支持可以进行可组合调用属性的 getter。对这方面的支持不会消失,但声明属性 getter 为 @Composable 的语法正在改变。
现在已弃用的语法是通过对属性本身进行注释
@Composable val someProperty: Int get() = ...
现在正确的语法是通过对属性的 getter 进行注释
val someProperty: Int @Composable get() = ...
两种语法都将在一段时间内有效,但以前已弃用的语法最终将成为编译错误。 (Id9197)
添加了
androidx.compose.material:material-ripple
库,其中包含涟漪 API,允许构建交互式组件,而无需使用 Material 库的其余部分。rememberRippleIndication 已被弃用,并被 rememberRipple 替换。 (Ibdf11)
错误修复
- 偏移修饰符中的 Lambda 现在返回 IntOffset 而不是 Float。 (Ic9ee5, b/174137212, b/174146755)
重构了 ShaderBrush,以便在绘制环境的大小信息可用时延迟创建着色器实例。这对于在编写时定义占用可组合的完整绘制边界的渐变很有用,而无需实现自定义 DrawModifier 实现。
弃用渐变函数构造器 API,支持 Gradient 对象上的工厂方法。 (I511fc, b/173066799)
Modifier.focusObserver 已被弃用。请改用 Modifier.onFocusChanged 或 Modifier.onFocusEvent (I30f17, b/168511863, b/168511484)
弃用 LazyColumnFor、LazyRowFor、LazyColumnForIndexed 和 LazyRowForIndexed。请改用 LazyColumn 和 LazyRow (I5b48c)
将 Dp.VectorConverter、Position.VectorConverter 等移至 animation-core,并弃用旧的 VectorConveters (If0c4b)
自动填充 API 现在是实验性 API,需要选择加入 (I0a1ec)
添加解构声明以创建 FocusRequester 实例 (I35d84, b/174817008)
accessibilityLabel 已重命名为 contentDescription。accessibilityValue 已重命名为 stateDescription。 (I250f2)
用于创建 InfiniteRepeatableSpec 的新 infiniteRepeatable 函数 (I668e5)
根据 Material 规范,DropdownMenus 的定位行为略有改变。 (I34c72, b/168594123)
已添加 TextFields 的 InteractionState 支持。 (I61d91)
添加了 Modifier.clearAndSetSemantics,用于清除后代的语义并设置新的语义。 (I277ca)
将 ContentDrawScope 移至 ui-graphics 模块,以便与 DrawScope 位于同一位置。 (Iee043, b/173832789)
版本 1.0.0-alpha08
2020 年 12 月 2 日
androidx.compose.material:material:1.0.0-alpha08
、androidx.compose.material:material-icons-core:1.0.0-alpha08
和 androidx.compose.material:material-icons-extended:1.0.0-alpha08
已发布。 版本 1.0.0-alpha08 包含这些提交。
API 变更
- MaterialTheme 现在为选中句柄和选中背景设置了正确的颜色。非 Material 应用可以手动使用 AmbientTextSelectionColors 来自定义用于选中的颜色。(I1e6f4,b/139320372,b/139320907)
- 添加了 lint 检查,用于检查可组合 Lambda 参数的命名和位置,以检查其与 Compose 指南的一致性。还根据 lint 检查和指南,将一些使用
children
作为其尾随 Lambda 名称的 API 迁移到了content
。(Iec48e) - 将 VectorAsset 重命名为 ImageVector 将 VectorAsset 移动并重命名为 Builder,使其成为 ImageVector 的内部类,符合 API 委员会指南。添加了 VectorAssetBuilder 的类型别名以链接到 ImageVector.Builder 以实现兼容。(Icfdc8)
- 将 ImageAsset 和相关方法重命名为 ImageBitmap。(Ia2d99)
- 将基础语义属性移到 ui (I6f05c)
fun RippleIndication()
已被弃用,并被rememberRippleIndication()
替换,以与其他 API 保持一致。(Id8e2c)- 在 BasicTextField、TextField 和 OutlinedTextField 中添加了 singeLine 参数。将此参数设置为 true 可使文本字段成为单行水平可滚动文本字段。(I57004,b/168187755)
错误修复
- 添加语义操作 Dismiss (I2b706)
- 将 DrawModifier API 从 androidx.compose.ui 包移动到 androidx.compose.ui.draw 包。创建 DrawModifierDeprecated.kt 文件以包含类型别名/辅助方法,以帮助从已弃用的 API 迁移到当前 API。(Id6044,b/173834241)
- 将 Modifier.drawLayer 重命名为 Modifier.graphicsLayer 此外,根据 API 反馈将相关类更新为 GraphicsLayer。(I0bd29,b/173834241)
<T>
已从 SubcomposeLayout 声明中删除。您现在可以不用指定类型来使用它。(Ib60c8)- 添加了 Modifier.scale/rotate API 作为 drawLayer 的便利方法。
- 将
Modifier.drawOpacity
重命名为Modifier.alpha
- 将
Modifier.drawShadow
重命名为Modifier.shadow
(I264ca,b/173208140)
- 将
- Box 的对齐参数已重命名为 contentAlignment。(I2c957)
- offsetPx 修饰符已重命名为 offset。它们现在接受 Lambda 参数,而不是 State。(Ic3021,b/173594846)
- 引入了 SweepGradientShader 和 SweepGradientBrush API。(Ia22c1)
- 添加了 lint 检查,用于检查可组合函数中的 Modifier 参数。此 lint 检查检查参数的命名、返回类型、默认值和顺序,以确保其与 Compose 指南一致。(If493b)
- 更新了 TextFieldValue API
- 使 TextFieldValue.composition 成为只读
- 删除了针对无效选择范围抛出的异常 (I4a675,b/172239032)
- 添加了一个新的
Modifier.drawLayer()
重载。它在新的 GraphicsLayerScope 上接受一个 Lambda 块,您可以在其中以一种允许在状态更改时跳过重新组合和重新布局的方式定义图层参数。DrawLayerModifier 现在是内部的,准备将其逻辑迁移到 LayoutModifier 的placeable.placeWithLayer()
方法 (I15e9f,b/173030831) - 弃用了以
Ambient
作为后缀命名的 Ambients,并将它们替换为以 Ambient 为前缀的新属性,遵循其他 Ambients 和 Compose API 指南。(I33440) - 添加了 lint 检查,以检查 Modifier 工厂是否在内部使用
androidx.compose.ui.composed {}
,而不是被标记为@Composable
。(I3c4bc) - 语义参数 mergeAllDescendants 已重命名为 mergeDescendants。(Ib6250)
- 测试中的时间控制(TestAnimationClock 及其用法)现在是实验性的 (I6ef86,b/171378521)
- 删除旧的 ui-test 模块及其存根 (I3a7cb)
- TextUnit.Inherit 已重命名为 TextUnit.Unspecified,以与其他单位保持一致。(Ifce19)
- Alignment 接口已更新并成为函数式接口。(I46a07,b/172311734)
- id 已重命名为 layoutId,用于 LayoutIdParentData。Measurable.id 已重命名为 Measurable.layoutId。(Iadbcb,b/172449643)
版本 1.0.0-alpha07
2020 年 11 月 11 日
androidx.compose.material:material:1.0.0-alpha07
、androidx.compose.material:material-icons-core:1.0.0-alpha07
和 androidx.compose.material:material-icons-extended:1.0.0-alpha07
已发布。 版本 1.0.0-alpha07 包含这些提交。
API 变更
- Emphasis 已被弃用,并被 AmbientContentAlpha 替换。AmbientContentAlpha 是一个更简单的抽象,表示层次结构一部分的首选内容 alpha,类似于 AmbientContentColor 表示首选内容颜色。Text 和 Icon 现在默认情况下会使用 AmbientContentAlpha 中的当前值,您可以手动执行:
color.copy(alpha = AmbientContentAlpha.current)
,以在您的组件中获得相同的效果。您无需使用 ProvideEmphasis,而可以直接通过 AmbientContentAlpha 提供值,并使用 ContentAlpha 中的新默认级别来替换旧的 EmphasisLevels。(Idf03e,b/159017896) - 添加了 androidx.compose.material.AmbientContentColor 来替换 androidx.compose.foundation.AmbientContentColor (I84f7b,b/172067770)
- 添加了 androidx.compose.material.Text 来替换 androidx.compose.foundation.Text,作为高级可主题化的文本组件。对于不使用主题的颜色/文本样式的基本文本组件,请使用 BasicText。(Ie6ae0)
- 在 TextFields 中添加了 maxLines (Ib2a5b)
- 更新 TextFields 以接受 KeyboardOptions (Ida7f3)
- Surface 现在使用绝对(总)高度来计算高度叠加,因此嵌套在另一个 Surface 中的 Surface 将使用组合高度来绘制叠加。(I7bd2b,b/171031040)
错误修复
captureToBitmap
已移至captureToImage
。(I86385)- 基础 AmbientTextStyle、ProvideTextStyle 和 AmbientContentColor 已被弃用。改为使用 Material 库中提供的版本。对于非 Material 应用,您应该改为创建自己的设计系统特定主题 Ambients,这些 Ambients 可以在您自己的组件中使用。(I74acc,b/172067770)
- foundation.Text 已被弃用,并被 material.Text 替换。对于不使用主题值的基本无意见文本 API,请参阅 androidx.compose.foundation.BasicText。(If64cb)
- 将 KeyboardOptions 重命名为 ImeOptions (I82f36)
- 将 KeyboardType 和 ImeAction 移至 KeyboardOptions (I910ce)
- BaseTextField 已被弃用。改为使用 BasicTextField。(I896eb)
- ExperimentalSubcomposeLayoutApi 注释已删除。现在,无需添加 @OptIn 即可使用 SubcomposeLayout (I708ad)
- FirstBaseline 和 LastBaseline 已移至 androidx.compose.ui.layout 包 (Ied2e7)
- 更新了 Icon API,以接受 Color.Unspecified 作为可能的色调颜色,这将绘制提供的资产或画笔而不会使用 ColorFilter。以前,尝试使用 Color.Unspecified 忽略色调将使用透明颜色进行色调,最终会导致根本无法呈现任何内容。(I049e2,b/171624632)
- relativePaddingFrom 已重命名为 paddingFrom。添加了 paddingFromBaseline 修饰符,作为指定布局边界到文本基线距离的便利方法。(I0440a,b/170633813)
- LaunchedTask 已重命名为 LaunchedEffect,以与 SideEffect 和 DisposableEffect API 保持一致。为了鼓励最佳实践,不允许使用没有主体参数的 LaunchedEffect。(Ifd3d4)
- MeasureResult 已移出 MeasureScope。(Ibf96d,b/171184002)
- 几个与布局相关的符号已从 androidx.compose.ui 移动到 androidx.compose.layout.ui。(I0fa98,b/170475424)
版本 1.0.0-alpha06
2020 年 10 月 28 日
androidx.compose.material:material:1.0.0-alpha06
、androidx.compose.material:material-icons-core:1.0.0-alpha06
和 androidx.compose.material:material-icons-extended:1.0.0-alpha06
已发布。 版本 1.0.0-alpha06 包含这些提交。
API 变更
- androidx.compose.foundation.Icon 已移至 androidx.compose.material.Icon。您也可以使用 Image 组件/Modifier.paint() 以及 Painter,如果您不想使用 Material 库。(I9f622)
- 添加了 FloatingActionButtonElevation,表示 FAB 在不同状态下使用的高度。请参阅 FloatingActionButtonConstants.defaultElevation() 以获取默认实现 (I2d4f5)
- 添加了 SwitchColors 接口,表示 Switch 在不同状态下使用的颜色。请参阅 SwitchConstants.defaultColors 以自定义这些颜色。(I93805)
- 添加了 ButtonElevation 和 ButtonColors 接口,表示按钮在不同状态下使用的高度和颜色。请参阅 ButtonConstants 中的默认函数以自定义这些参数。(Ic5b7b)
- 添加了 RadioButtonColors 接口,表示 RadioButton 在不同状态下使用的颜色。请参阅 RadioButtonConstants.defaultColors() 以自定义不同状态下使用的颜色。(I74130)
- 添加了 CheckboxColors 接口,表示 Checkbox 在不同状态下使用的颜色。请参阅 CheckboxConstants.defaultColors() 以自定义不同状态下使用的颜色。(I7dbdb)
错误修复
- 材质组件不再将 elevation 设置为 zIndex。这意味着在同一个父元素中,阴影尺寸较大的子元素不会自动绘制在阴影尺寸较小的子元素之上。如果您仍然需要这种行为,请在需要的地方手动设置 Modifier.zIndex() (I70417, b/170623932)
- 弃用 VectorPainter,转而使用 rememberVectorPainter 以更好地表明可组合 API 在内部利用“remember”来跨组合保留数据。 (Ifda43)
- 在 ComposeTestRule 中启用过渡;从 ComposeTestRule 中移除启用闪烁光标的选项。 (If0de3)
- 在 CoreTextField 中添加了单行键盘选项 (I72e6d)
- 将 Radius API 重命名为 CornerRadius,以更好地表达它在 Compose 中的用法。更新了文档,表明负角半径被钳制为零。 (I130c7, b/168762961)
- 将 DrawScope 和 ContentDrawScope 重构为接口,而不是抽象类
- 创建了 DrawScope 的 CanvasDrawScope 实现
- 将 DrawScope 的实现重构为使用 CanvasScope
- 创建 DrawContext 来包装 DrawScope 的依赖项
- 删除了 DrawScope 上的弃用方法 (I56f5e)
- Box 被制作成一个内联函数。 (Ibce0c, b/155056091)
版本 1.0.0-alpha05
2020 年 10 月 14 日
androidx.compose.material:material:1.0.0-alpha05
、androidx.compose.material:material-icons-core:1.0.0-alpha05
和 androidx.compose.material:material-icons-extended:1.0.0-alpha05
已发布。 版本 1.0.0-alpha05 包含这些提交。
API 变更
- 弹出窗口和对话框现在从父级窗口继承 FLAG_SECURE。还添加了显式配置此选项的选项 (I64966, b/143778148, b/143778149)
- Modifier.swipeable 现在默认情况下对状态有 56.dp 阈值 (Iab825, b/168610267)
- 所有脚手架状态都标记为 @Stable。ScaffoldState 中的 drawerGesturesEnabled 已移至 Scaffold 本身。 (I36645, b/168297016)
- 从 Scaffold lambda 参数中移除可空类型,您可以使用 emptyContent() 来表示给定参数没有内容。 (I2b318, b/157633857, b/158551084)
弃用 contentColor() 和 currentTextStyle() API,并分别用 AmbientContentColor 和 AmbientTextStyle 环境变量替换它们。您可以使用环境变量属性上的
.current
来访问当前值,就像使用其他任何环境变量一样。进行此更改是为了保持一致性,并避免使用多种方法来完成同一件事。此外,还重命名了一些环境变量属性,以更好地描述其目的,如下所示- ContentColorAmbient -> AmbientContentColor
- TextStyleAmbient -> AmbientTextStyle
- IndicationAmbient -> AmbientIndication
- EmphasisAmbient -> AmbientEmphasisLevels
- RippleThemeAmbient -> AmbientRippleTheme (I37b6d)
添加 AmbientElevationOverlay,允许自定义/禁用应用于深色主题中 Surface 的默认 elevation 重叠。 (I5b74d)
错误修复
- 作为对内联类的哨兵值的标准化的一部分,将 Color.Unset 重命名为 Color.Unspecified,以与其他内联类保持一致 (I97611, b/169797763)
- 引入了 TextOverflow.None。当 overflow 为 None 时,Text 将不再处理溢出,并且它将向 LayoutNode 报告其实际大小。 (I175c9, b/158830170)
- launchInComposition 重命名为 LaunchedTask,以匹配 Compose API 指南 (I99a8e)
- OnPositionedModifier 重命名为 OnGloballyPositionedModifier,onPositioned() 重命名为 onGloballyPositioned()。 (I587e8, b/169083903)
版本 1.0.0-alpha04
2020 年 10 月 1 日
androidx.compose.material:material:1.0.0-alpha04
、androidx.compose.material:material-icons-core:1.0.0-alpha04
和 androidx.compose.material:material-icons-extended:1.0.0-alpha04
已发布。 版本 1.0.0-alpha04 包含这些提交。
API 变更
- 在有状态的材质组件中公开 InteractionState 参数,以允许提升状态并读取/控制状态。 (Iaca5f, b/168025711, b/167164434)
- 更改了 RadioButton 和 TriStateCheckbox 上的
*color
参数,以允许完全自定义每种状态中使用的颜色,以及在需要时更改颜色在状态之间动画的方式。有关更多信息,请参阅 CheckboxConstants 和 RadioButtonConstants 中的新的 animateDefault* 颜色函数。 (I1c532) - 将 rememberBackdropState 重命名为 rememberBackdropScaffoldState,并为动画时钟添加了另一个参数。将 BackdropScaffold 的参数 backdropScaffoldState 重命名为 scaffoldState。将 BackdropConstants 重命名为 BackdropScaffoldConstants。 (Ib644d)
- 添加了实验性的 BottomSheetScaffold 组件。 (Ie02f0, b/148996320)
- 添加了实验性的 ModalBottomSheetLayout 组件。 (Ic209e, b/148996320)
- 将 ButtonConstants/FloatingActionButtonConstants.defaultAnimatedElevation 重命名为 defaultElevation,现在返回 Dp 值而不是 AnimatedValue。 (I5f3ed)
错误修复
- 更新了许多图形 API
- 更新了缩放和旋转变换 API,以使用单个 Offset 参数来表示枢轴坐标,而不是在 DrawScope 和 DrawTransform 中使用单独的浮点参数来表示 x/y 坐标
- 删除了 Rect.expandToInclude 和 Rect.join 方法
- 更新了 Radius 文档,除了椭圆形之外还说椭圆形
- 添加了文档以表明不应直接调用内联 Radius 类的公共构造函数,而应通过其函数构造函数实例化 Radius 对象
- 删除了 RoundRect API 以查询 topRight、bottomRight、bottomCenter 等。
- 弃用 Rect.shift,转而使用 Rect.translate
- 删除了 RoundRect.grow 和 Rect.shrink API
- 将 RoundRect.outerRect 重命名为 Rect.boundingRect
- 删除了 RoundRect.middleRect/tallMiddleRect/wideMiddleRect 和 Rect.isStadium 方法
- 将 RoundRect.longestSide 重命名为 RoundRect.maxDimension
- 将 RoundRect.shortestSide 重命名为 RoundRect.minDimension
- 更改了 RoundRect.center,使其成为属性而不是函数
- 更新了 RoundRect 构造函数,以使用 Radius 属性而不是 x/y 半径值的单独参数
- 删除了假设它是原点为 0,0 的矩形的 Size API
- 向 Radius 添加了析构 API
- 将各种 RoundRect 扩展函数迁移为属性
- (I8f5c7, b/168762961)
- foundation.Box 已弃用。请使用 foundation.layout.Box 代替。 (Ie5950, b/167680279)
- Stack 重命名为 Box。以前存在的 Box 将被弃用,转而使用 compose.foundation.layout 中的新 Box。新 Box 的行为是在它有多个子元素时将子元素一个叠一个地堆叠起来 - 这与以前的 Box 不同,以前的 Box 的行为类似于 Column。 (I94893, b/167680279)
- Box 装饰参数已弃用。如果您想在您的框上添加装饰/填充,请改用修饰符(Modifier.background、Modifier.border、Modifier.padding) (Ibae92, b/167680279)
- 更新了许多图形 API
- 更新了 DrawScope API,其中包含范围变换方法,以表明变换仅在回调内应用,并在回调被调用后删除
- 更新了 clipPath 文档,以引用 Path 而不是圆角矩形
- 修复了 clipPath 中 right 参数的文档中的间距
- 将 DrawScope.drawCanvas 重命名为 drawIntoCanvas,并删除了 size 参数
- 将 inset 方法中的 dx/dy 参数重命名为 horizontal 和 vertical
- 添加了为所有 4 个边界提供相同 inset 值的 inset 重载
- 删除了 inset 方法的文档,该文档表明 inset 将应用于所有 4 个边
- 更新了 Rect 类的文档
- 更新了 Rect 参数上的注释,以匹配 kdoc 样式
- 删除了 Rect.join 和 Rect.expandToInclude
- 创建了 Rect.translate(offset) 的重载,并弃用了 Rect.shift
- (If086a, b/167737376)
- 我们阻止了 layout 范围内容的静态导入(例如 RowScope 中的 alignWithSiblings)。应改用显式范围替代方案:
with(RowScope) { Modifier.alignWithSiblings(FirstBaseline) }
。 (I216be, b/166760797)
版本 1.0.0-alpha03
2020 年 9 月 16 日
androidx.compose.material:material:1.0.0-alpha03
、androidx.compose.material:material-icons-core:1.0.0-alpha03
和 androidx.compose.material:material-icons-extended:1.0.0-alpha03
已发布。 版本 1.0.0-alpha03 包含这些提交。
API 变更
- 将
BottomNavigationItem
的onSelect
参数重命名为onClick
(I91925, b/161809324) - 向 BottomNavigationItem 和 Tab 添加 InteractionState 参数,允许提升此状态并调整组件在不同状态下的外观。 (Ia3e9e, b/168025711)
- 从按钮中删除了
disabledBackgroundColor
和disabledContentColor
参数。您应该改用 ButtonConstants 内部的新的默认颜色函数。如果您已经显式设置了 contentColor/backgroundColor,那么您应该改用这些默认函数并自定义某些/所有参数,以避免覆盖启用/禁用状态下的颜色。 (If9b52) - Textfield 的背景颜色不再隐式应用透明度 alpha。相反,通过 backgroundColor 参数提供的任何颜色都将直接应用。 (Iecee9, b/167951441)
- InnerPadding 已重命名为 PaddingValues。 (I195f1, b/167389171)
- 参数
resistanceFactorAtMin
和resistanceFactorAtMax
在Modifier.swipeable
中被替换为一个单独的 resistance 参数。一个新的defaultResistanceConfig
方法在SwipeableConstants
中添加。 (I54238) - 为 Button 和 FloatingActionButton 添加了动画状态化高度支持。高度现在在默认状态和按下状态之间进行动画。要自定义状态之间的高度,请使用
ButtonConstants.defaultAnimatedElevation()
和FloatingActionButtonConstants.defaultAnimatedElevation()
,而不是在所有情况下设置一个平坦的 Dp 值。 (I37925) - 标签在 TextField 和 OutlinedTextField 中成为可选参数 (I267f6, b/162234081)
错误修复
- 全局测试函数(如
onNode
或waitForIdle
)现在已弃用,请迁移到 ComposeTestRule 上定义的它们的新对应函数 (I7f45a) - DpConstraints 和使用它的 API 已弃用。 (I90cdb, b/167389835)
- widthIn 的参数 minWidth 和 maxWidth 已重命名为 min 和 max。类似地,preferredWidthIn、heightIn、preferredHeightIn 也是如此。 (I0e5e1, b/167389544)
- 删除滚动向前/向后语义操作。在 AccessibilityRangeInfo 中添加了步骤。 (Ia47b0)
- 布局 API 中对 gravity 的使用一致地重命名为 align 或 alignment。 (I2421a, b/164077038)
- 在 ComposeTestRule 上添加了 onNode 和其他全局方法,因为当前的全局方法将被弃用。 (Ieae36)
- 将
createAndroidComposeRule
和AndroidInputDispatcher
从androidx.ui.test.android
移动到androidx.ui.test
(Idef08, b/164060572)
版本 1.0.0-alpha02
2020 年 9 月 2 日
androidx.compose.material:material:1.0.0-alpha02
、androidx.compose.material:material-icons-core:1.0.0-alpha02
和 androidx.compose.material:material-icons-extended:1.0.0-alpha02
已发布。 版本 1.0.0-alpha02 包含这些提交。
API 变更
- 添加了一个实验性的 BackdropScaffold 组件。 (Iad908)
错误修复
- Matrix4 已被替换为 Matrix。vectormath 包的其他部分已被删除。 (Ibd665, b/160140398)
版本 1.0.0-alpha01
2020 年 8 月 26 日
androidx.compose.material:material:1.0.0-alpha01
、androidx.compose.material:material-icons-core:1.0.0-alpha01
和 androidx.compose.material:material-icons-extended:1.0.0-alpha01
已发布。 版本 1.0.0-alpha01 包含这些提交。
已知问题
= 材质 TextField
中的第一个字符无法使用退格键删除 (b/165956313)
版本 0.1.0-dev
版本 0.1.0-dev17
2020 年 8 月 19 日
androidx.compose.material:material:0.1.0-dev17
、androidx.compose.material:material-icons-core:0.1.0-dev17
和 androidx.compose.material:material-icons-extended:0.1.0-dev17
已发布。 版本 0.1.0-dev17 包含这些提交。
API 变更
- 之前已弃用的 RadioGroup 和 RadioGroupItems 已被删除。改用 Row 和 RadioBotton (I381b7, b/163806637)
- 从 TextField 中删除了 onFocusChanged 回调。改用 Modifier.focusObserver (I51089, b/161297615)
- Modifier.drawBorder 已被弃用。改用 Modifier.border。Border 数据类已被 BorderStroke 替换 (I4257d, b/158160576)
- SwipeableState 中的一些属性已重命名:swipeTarget -> targetValue,swipeProgress -> progress,swipeDirection -> direction。添加了一个 rememberSwipeableState 函数用于创建 SwipeableState。 (I2fc9c, b/163129614, b/163132293)
- 添加了具有定位和适当排队的 Snackbar 支持。通过
SnackbarHostState.showSnackbar
暂停函数访问它。- 添加了 SnackbarHost 组件。它根据状态托管 Snackbar,并负责 Snackbar 之间的转换。
- 添加了 SnackbarHostState 以允许控制 Snackbar、Snackbar 主机,并将其与 ScaffoldState 解耦。您也可以通过
scaffoldState.snackbarHostState
访问此状态。 - 添加了 Snackbar 重载以支持 SnackbarHostState 和 Snackbar 本身之间的通用接口。 (I79aaa)
- 在 IconButton 中添加了 enabled 参数,并在 IconToggleButton 中重新排序了参数 (I0a941, b/161809385, b/161807956)
- 具有基于字符串的 API 的 ListItem 版本已被删除。改用插槽版本。 (Ib8f57, b/161804681)
- 删除了已弃用的 FilledTextField 组件。请改用 TextField 以获取 Filled 文本字段的 Material Design 实现。 (I5e889)
- AlertDialog 现在对按钮使用 FlowRow (I00ec1, b/161809319, b/143682374)
- 在 Modifier.swipeable 中添加了参数,用于更改在滑动超出边界时滑动的阻力量。删除了 [min/max]Value 参数。 (I93d98)
- 在 LinearProgressIndicator 中添加了 backgroundColor 参数,并从 CircularProgressIndicator 中删除了内部填充。添加了新的 ProgressIndicatorConstants.DefaultProgressAnimationSpec,它可以在动画进度值之间时用作默认 AnimationSpec (If38b5, b/161809914, b/161804677)
- 在 Modifier.swipeable 中添加了可选参数 velocityThreshold。 (I698ba)
- bottomBarSize、fabSize 等在 ScaffoldState 中不再可用。在您想了解大小的组件上改用 Modifier.onPosition。contentColor 和 Modifier 参数已添加到 Scaffold (Ic6f7b, b/161811485, b/157174382)
- 为了一致性,在 Tab 中重新命名和重新排序了一些参数 (Ia2d12, b/161807532)
- 将 TabRow 拆分为 TabRow 和 ScrollableTabRow,从 TabRow 中删除 isScrollable。还公开了 ScrollableTabRow 中的 edgePadding,它允许控制标签之前/之后的空闲空间。 (I583e8, b/161809544)
TabRow
对象已被删除,并用 TabConstants 替换。TabRow.TabPosition 已移至顶层 (TabPosition),indicatorContainer 已重命名为indicator
。有关如何使用更新的 API 和默认值的信息,请参阅示例和文档。 (I54d45, b/161809544)- Modifier.swipeable 中的 thresholds 参数进行了调整;它现在接受一对状态(类型为 T)并以 ThresholdConfig 的形式返回它们之间的阈值。一个参数 dismissThresholds 被添加到 SwipeToDismiss 中,它是一个 lambda (DismissDirection) -> ThresholdConfig。 (Ie1080)
- Slider 具有更多颜色,可进行细粒度的自定义 (I73e64, b/161810475)
- Card 的 color 参数已重命名为 backgroundColor (I01fc1, b/161809546)
- Snackbar 现在可以自定义背景和内容颜色 (I238f2, b/161804381)
- modifier、backgroundColor、contentColor 和 scrimColor 自定义参数已添加到 Drawers (I23655, b/161804378)
- 为了清晰起见,
state { ... }
可组合函数现在已弃用,取而代之的是对remember { mutableStateOf(...) }
的显式调用。这减少了整体 API 表面和状态管理的概念数量,并匹配类属性委托的by mutableStateOf()
模式。 (Ia5727) - Button 的 padding 参数已重命名为 contentPadding (Id252e, b/161809394)
- 添加了一个实验性的材料组件 SwipeToDismiss。 (I129e5)
错误修复
- 删除了
onChildPositioned
和OnChildPositionedModifier
。开发人员应在子布局上改用onPositioned
和OnPositionedModifier
。 (I4522e, b/162109766) - 在 SemanticsPropertyKey 中添加了 mergePolicy lambda。这可用于定义自定义策略以合并所有后代语义的合并。默认策略是在已存在时使用父级值,否则使用子级值。 (Iaf6c4, b/161979921)
- IntSize 现在是一个内联类 (I2bf42)
PlacementScope.placeAbsolute()
已重命名为PlacementScope.place()
,之前的PlacementScope.place()
已重命名为PlacementScope.placeRelative()
。因此,PlacementScope.place()
方法将不再自动在从右到左的上下文中镜像位置。如果需要,请改用PlacementScope.placeRelative()
。 (I873ac, b/162916675)- 弃用 PxBounds,取而代之的是 Rect。使用 rect 更新了所有 PxBounds 的用法,并添加了适当的弃用/替换注释以帮助迁移。 (I37038, b/162627058)
- 将 RRect 重命名为 RoundRect 以更好地适应 compose 命名模式。创建了与 RRect 类似的函数构造函数,并弃用了 RRect 函数构造函数 (I5d325)
版本 0.1.0-dev16
2020 年 8 月 5 日
androidx.compose.material:material:0.1.0-dev16
、androidx.compose.material:material-icons-core:0.1.0-dev16
和 androidx.compose.material:material-icons-extended:0.1.0-dev16
已发布。 版本 0.1.0-dev16 包含这些提交。
API 变更
- Colors 现在是一个最终类,而不是一个接口。您应该创建一个新的环境来保存您的自定义主题对象,而不是扩展并提供自定义实现,然后通过新的环境在您的组件中访问主题对象,这类似于 MaterialTheme 在内部的工作方式。 (Ibae84)
- 将 ColorPalette 重命名为 Colors,以便更好地映射到 Material 颜色系统,并消除对 ColorPalette 作为“通用”主题对象的混淆,因为它只是 Material 颜色系统的具体实现。此外,还将 lightColorPalette 和 darkColorPalette 分别重命名为 lightColors 和 darkColors。 (I9e976、b/161812111)
- 将 BottomNavigationItem 的
text
参数重命名为label
,onSelected
重命名为onSelect
,activeColor
重命名为selectedContentColor
,inactiveColor
重命名为unselectedContentColor
,并将参数顺序更新为符合指南。 (Icb605、b/161809324) Modifier.stateDraggable
已完全重写并重命名为 Modifier.swipeable。引入了新的 SwipeableState 类,DrawerState 和 BottomDrawerState 已重构为继承自它。[Modal/Bottom]DrawerLayout 不再接受 onStateChange 参数。 (I72332、b/148023068)- foundation.shape.corner 包被扁平化到 foundation.share (I46491、b/161887429)
- 添加了 ExperimentalMaterialApi 注解。RippleTheme 被标记为 Experimental (Ic5fa0、b/161784800)
- Material FilledTextField 被重命名为 TextField,基础 TextField 被重命名为 BaseTextField,以使最简单的所需 API 易于发现和使用 (Ia6242、b/155482676)
错误修复
- OnChildPositioned 已被弃用。改为在子节点上使用 OnPositioned。 (I87f95、b/162109766)
- 解决广泛的 API 修复 (I077bc)
- 删除未使用的 OffsetBase 接口
- 对齐 Offset 和 IntOffset 类以具有一致的 API 表面
- 将 IntOffset.Origin 重命名为 IntOffset.Zero,以与 Offset API 保持一致
- 将 nativeCanvas 方法从 Canvas 接口移开,以支持消费者创建自己的 Canvas 实例
- 创建了存根 EmptyCanvas 类,将 DrawScope 重构为非空参数,而不是 lateinit,并确保该字段的非空性
- 将 ClipOp 枚举重命名为 PascalCase
- 将 FilterQuality 枚举重命名为 PascalCase
- 将 StrokeJoin 枚举重命名为 PascalCase
- 将 PointMode 枚举重命名为 PascalCase
- 将 PaintingStyle 枚举重命名为 PascalCase
- 将 PathFillType 枚举重命名为 PascalCase
- 将 StrokeCap 枚举重命名为 PascalCase
- 更新 DrawCache 实现,不再使用 lateinit 参数
- 更新 DrawScope,不再对 fillPaint 和 strokePaint 内部参数使用延迟委托
- 更新 Image 可组合,以避免使用 Box,从而降低开销
- 更新 Outline 类以具有 @Immutable 注解
- 更新 PathNode 以对每个路径指令具有 @Immutable 注解
- 更新 Vector 子组合以删除冗余的相等性条件检查,因为 compose 已经处理了它们
- 弃用 Rect 伴随构造函数方法,改为使用函数构造函数
- 使用 @Immutable 和 @Stable API 更新 Brush 类和函数构造函数
- 更新 VertexMode 枚举以使其成为 PascalCase
- 更新 DrawScope selectPaint 方法以在 paint 上有条件地覆盖笔触参数(如果它们已更改)
- 更新 Size 以添加解构 API,将 UnspecifiedSize 重命名为 Unspecified 并删除未使用的使用方法
- 将对话框移到 ui (I47fa6)
- 删除了
SemanticsNodeInteraction.performPartialGesture
。改为使用SemanticsNodeInteraction.performGesture
。 (Id9b62) - 将
SemanticsNodeInteraction.getBoundsInRoot()
重命名为SemanticsNodeInteraction.getUnclippedBoundsInRoot()
(Icafdf、b/161336532) - 已更新用于从右到左支持的 API。已添加 LayoutDirectionAmbient,可用于读取和更改布局方向。Modifier.rtl 和 Modifier.ltr 已被删除。 (I080b3)
- Modifier.deternimateProgress 已被重命名为 Modifier.progressSemantics (I9c0b4)
- 使用添加到 Material.io/icons 的最新图标更新 material-icons-extended。 (I4b1d3)
- 要求为 transitionDefinition 明确指定类型 T。 (I1aded)
- Modifier.plus 已被弃用,改为使用 Modifier.then。'Then' 具有更强的排序信号,同时也禁止键入
Modifier.padding().background() + anotherModifier
,这会破坏链条,难以阅读 (Iedd58、b/161529964) - 将 AndroidComposeTestRule 重命名为 createAndroidComposeRule。 (I70aaf)
- 添加 isFocused() 和 isNotFocused() SemanticsMatcher。 (I0b760)
- 删除了
BaseGestureScope.globalBounds
,不应该从测试中使用它。改为使用与您交互的节点的本地坐标。 (Ie9b08) - 修复了在开孔显示屏上弹出窗口的位置。 (Idd7dd)
- Modifier.drawBackground 已被重命名为 Modifier.background (I13677)
版本 0.1.0-dev15
2020 年 7 月 22 日
androidx.compose.material:material:0.1.0-dev15
、androidx.compose.material:material-icons-core:0.1.0-dev15
和 androidx.compose.material:material-icons-extended:0.1.0-dev15
已发布。 版本 0.1.0-dev15 包含这些提交。
依赖项更新
- 要使用 Compose 的
0.1.0-dev15
版本,您需要根据上面在 声明依赖项 中显示的新代码段更新您的依赖项。
API 变更
@Model
注解现在已弃用。使用 state 和 mutableStateOf 作为替代方案。这个弃用决定是在经过仔细讨论之后做出的。理由
理由包括但不限于
- 减少我们需要的 API 表面积和概念
- 更接近于其他类似的工具包(Swift UI、React、Flutter)
- 可逆决定。我们始终可以稍后恢复
@Model
。 - 删除了极端情况下的用法,以及关于配置
@Model
的难以回答的问题,因为我们需要处理这些问题。 @Model
数据类、equals、hashcode 等。- 如何让某些属性“被观察”,而另一些属性不被观察?
- 如何指定在观察中使用结构相等还是引用相等?
- 减少系统中的“魔术”。将会降低有人认为系统比实际更智能(例如,它知道如何区分列表)的可能性。
- 使观察的粒度更直观。
- 改进从变量->属性到类的重构能力。
- 有可能为手工制作的特定于状态的优化打开可能性。
- 更接近于生态系统的其余部分,减少对不可变性或我们“拥抱可变状态”的歧义。
迁移说明
@Model
的几乎所有现有用法都可以通过以下两种方式中的其中一种轻松转换。以下示例有一个@Model
类,它有两个属性(仅出于示例目的),并在一个可组合项中使用它。@Model class Position( var x: Int, var y: Int ) @Composable fun Example() { var p = remember { Position(0, 0) } PositionChanger( position=p, onXChange={ p.x = it } onYChange={ p.y = it } ) }
替代方案 1:使用
State<OriginalClass>
并创建副本。Kotlin 的数据类使这种方法变得更容易。本质上,将所有以前是
var
的属性转换为数据类的val
属性,然后使用state
而不是remember
,并将状态值分配给使用数据类copy(...)
方便方法克隆的原始副本。需要注意的是,这种方法只有在对该类的唯一修改是在创建
State
实例的同一作用域中进行的情况下才有效。如果该类在使用范围之外内部进行自我修改,并且您依赖于对该修改的观察,那么您需要使用下一个方法。data class Position( val x: Int, val y: Int ) @Composable fun Example() { var p by state { Position(0, 0) } PositionChanger( position=p, onXChange={ p = p.copy(x=it) } onYChange={ p = p.copy(y=it) } ) }
替代方案 2:使用 mutableStateOf 和属性委托
Kotlin 的属性委托和
mutableStateOf
API 使这种方法变得更容易,该 API 允许您在组合之外创建 MutableState 实例。本质上,将原始类中的所有var
属性替换为具有mutableStateOf
作为属性委托的var
属性。这样做的好处是,类的使用方式不会发生任何变化,只有它的内部实现会发生变化。但是,行为与原始示例并不完全相同,因为每个属性现在都是单独观察/订阅的,因此您在此重构之后看到的重新组合可能会更窄(这是好事)。class Position(x: Int, y: Int) { var x by mutableStateOf(x) var y by mutableStateOf(y) } // source of Example is identical to original @Composable fun Example() { var p = remember { Position(0, 0) } PositionChanger( position=p, onXChange={ p.x = it } onYChange={ p.y = it } ) }
(I409e8、b/152050010、b/146362815、b/146342522、b/143413369、b/135715219、b/143263925、b/139653744)
文本字段中的 onFocusChange 回调已重命名为 onFocusChanged (Ida4a1)
在 stateDraggable 中添加了 thresholds 参数,以指定锚点之间的阈值。这用于在底部抽屉中设置 56dp 阈值。此外,BottomDrawerLayout 现在使用单独的 BottomDrawerState 枚举。 (I533fa)
删除了之前已弃用的 Modifier.ripple。Clickable 现在使用 ripple 作为默认指示(如果您在应用程序中设置了 MaterialTheme {}),因此在大多数情况下,您只需使用 clickable 并免费获得 ripple 指示。如果您需要自定义 ripple 的颜色/大小/边界参数,您可以手动创建一个 RippleIndication 并将其作为指示参数传递给 clickable。 (I663b2、b/155375067)
删除了已弃用的 FilledTextField 可组合项的重写 (I7f8f8)
将 Button 对象(包含 Button 函数使用的默认值)重命名为 ButtonConstants (I7c5f7、b/159687878)
Button 的内容插槽现在表现为 Row(当您需要与文本一起使用图标时很有用,请参阅有关 Button 的示例,了解如何编写它) (I0ff10、b/158677863)
RadioGroup 和 RadioGroupItem 已被弃用。请使用带有 Modifier.selectable 的 Box,以及 Row 和 Column 来根据您的设计创建适当的单选按钮选项集 (I7f5cf, b/149528535)
添加了 Material 带边框文本框 (I1a518)
androidx.ui.foundation.TextFieldValue 和 androidx.ui.input.EditorValue 已被弃用。使用这些类型的 TextField、FilledTextField 和 CoreTextField 可组合函数也被弃用。请改用 androidx.ui.input.TextFieldValue (I4066d, b/155211005)
TabRow.TabPosition 不包含以 Dp 表示的位置,而是以 IntPx 表示 (I34a07, b/158577776)
用 Int 替换了 IntPx 的使用。用 IntOffset 替换了 IntPxPosition。用 IntSize 替换了 IntPxSize。 (Ib7b44)
为了整合用于表示尺寸信息的类数量,将使用 Size 类来标准化,而不是 PxSize。这样可以利用内联类来使用长整型打包两个浮点型值,以表示用浮点型表示的宽度和高度。 (Ic0191)
弃用 Modifier.ripple。Clickable 现在使用涟漪作为默认指示(如果您在应用程序中设置了 MaterialTheme {}),因此在大多数情况下,您只需使用 Clickable 即可免费获得涟漪指示。如果您需要自定义涟漪的颜色/大小/边界参数,您可以手动创建一个 RippleIndication 并将其作为指示参数传递给 Clickable。 (I101cd, b/155375067)
Scaffold API 已重新设计:一些参数更改了名称,添加了新的参数以实现更好的自定义。添加了用于查询 Fab、TopBar 和 BottomBar 尺寸的 getter (I0e7ce)
在 ui-material 中添加了 DropdownMenu 组件,这是一个 Material Design 菜单实现。 (I9bb3d)
允许使用 SoftwareKeyboardController 手动显示/隐藏软件键盘 (Ifb9d6, b/155427736)
Modifier.indication 已添加到 foundation 包中。使用它在自定义的可交互元素上显示按下/拖动/其他指示 (I8425f, b/155287131)
合并了 CanvasScope 实现,现在只有 DrawScope 和 ContentDrawScope 将 CanvasScope 重命名为 DrawScope。更新 DrawScope 以实现 Density 接口并提供 LayoutDirection 删除 ContentDrawScope 中的 DrawScope 子类 Painter 和 PainterModifier 已更新,不再维护自己的 RTL 属性,因为 DrawScope 已经提供了该属性,无需手动提供 (I1798e)
将 Emphasis.emphasize() 重命名为 Emphasis.applyEmphasis() (Iceebe)
禁用的按钮现在在视觉上遵循 Material Design 规范 (I47dcb, b/155076924)
FilledTextField 获取了 IME 操作、视觉转换和键盘类型支持 (I1f9cf, b/155075201)
在 CircularProgressIndicator 中添加了 strokeWidth 参数,用于自定义笔触大小。要更改 LinearProgressIndicator 的笔触大小(高度),您可以使用 Modifier.preferredHeight() 或其他尺寸修饰符。 (Icea16, b/154919081)
在 CircularProgressIndicator 中添加了 strokeWidth 参数,用于自定义笔触大小。要更改 LinearProgressIndicator 的笔触大小(高度),您可以使用 Modifier.preferredHeight() 或其他尺寸修饰符。 (Icea16, b/154919081)
在 FilledTextField 中添加了用于尾随图标和前置图标的插槽 API,以及对错误状态的处理 (Ic12e0)
FAB 和扩展 FAB 的默认颜色已更改为 MaterialTheme.colors.secondary。 (I3b9b9, b/154118816)
用非空类型替换了 API 中所有可为空的 Color 使用,并使用 Color.Unset 而不是 null (Iabaa7)
将 EdgeInsets 重命名为 InnerPadding。将 Material Button 的 innerPadding 参数重命名为 paddding。 (I66165)
Slider 现在是无状态的。用户需要自己传递和更新状态,就像在其他任何控件中一样。 (Ia00aa)
StaticDrawer 已被删除。如果您需要它,请改用带有 material-spec 指定宽度的 Box (I244a7)
添加了 Material Design 实现的 Filled Text Field (Ic75cd)
在 ListItem 中添加了修饰符参数,并重新排序了参数以促进尾随 lambda 体 (I66e21)
在 Typography 中添加了 defaultFontFamily 构造函数参数,允许指定默认字体系列,该字体系列将用于任何未设置字体系列的 TextStyles。 (I89d07)
暂时从 API 表面上移除了 Material 数据表格。 (Iaea61)
重命名了 Divider 可组合函数中的参数 (Ic4373)
children (Ia6d19)
移除 MaterialTheme.emphasisLevels,改用 EmphasisAmbient.current 获取强调级别 (Ib5e40)
形状主题系统已根据 Material Design 规范更新。现在,您可以提供小、中和大形状,供大多数组件使用 (Ifb4d1)
将 MaterialTheme API(如 MaterialTheme.colors()、MaterialTheme.typography())更改为属性,而不是函数。从现有调用中删除括号,预期不会发生行为变化。 (I3565a)
重构了 FloatingActionButton API,使其接受可组合 lambda,而不是原始类型。有关用法信息,请参阅更新的示例。 (I00622)
在 Checkbox、Switch 和 Toggleable 中添加
enabled
参数 (I41c16)Ripple 现在是一个 Modifier。虽然 Clickable 尚未转换,但推荐的用法是
Clickable(onClick = { ... }, modifier = ripple())
(Ie5200, b/151331852, b/150060763)Surface 和 Card 已从 androidx.ui.material.surface 移动到 androidx.ui.material (I88a6d, b/150863888)
Button、FloatingActionButton 和 Clickable 现在都有一个单独的
enabled
参数。Button 上的一些参数已被重命名或重新排序。 (I54b5a)将 Image 重命名为 ImageAsset,以更好地区分 Image 数据和即将推出的用于参与布局和绘制内容的 Image 可组合函数。_正文:在 android.graphics.Bitmap 上创建了扩展方法 Bitmap.asImageAsset(),以创建 ImageAsset 实例,该实例可用于将传统的 Android 应用程序开发与 Compose 框架相结合 (Id5bbd)
删除了使用 String 参数的 Snackbar API,改用接受可组合 lambda 的重载。有关用法信息,请参阅更新的示例 (I55f80)
重构了 Tab API,使其接受
text
和icon
lambda, (Ia057e)添加了 BottomNavigation 组件,有关用法信息,请参阅文档和示例 (I731a0)
添加了 Icon、IconButton 和 IconToggleButton,并删除了 AppBarIcon。您可以直接将 AppBarIcon 的现有用法替换为 IconButton,它们现在将具有正确的触摸目标。有关用法信息,请参阅示例,并参阅 Icons 以了解您可以直接与这些组件一起使用的提供 Material Icons。 (I96849)
用不同的函数替换了 ButtonStyle,并删除了文本(字符串)重载。有关用法信息,请参阅更新的示例。 (If63ab, b/146478620, b/146482131)
将
Border
修饰符重命名为DrawBorder
(I8ffcc)LayoutCoordinates 不再具有 position 属性。在考虑 LayoutModifiers、旋转或缩放时,position 属性没有意义。相反,开发人员应该使用 parentCoordinates 和 childToLocal() 来计算从一个 LayoutCoordinate 到另一个 LayoutCoordinate 的变换。
LayoutCoordinates 使用 IntPxSize 作为 size 属性,而不是 PxSize。布局使用整数像素大小进行布局,因此所有布局大小都应该使用整数,而不是浮点值。 (I9367b)
对 ambient API 的重大更改。有关详细信息,请参阅日志和
Ambient<T>
文档 (I4c7ee, b/143769776)添加了 Scaffold 材料组件。Scaffold 实现 (I7731b)
用 Border Modifier 替换了 DrawBorder (Id335a)
错误修复
- FocusModifier 已被弃用,改用 Modifier.focus、Modifier.focusRequester、Modifier.focusObserver。FocusState 和 FocusDetailedState 已被弃用,改用 FocusState2 (I46919, b/160822875, b/160922136)
- VerticalScroller 和 HoriziontalScroller 已被弃用。使用 ScrollableColumn 和 ScrollableRow 创建具有 Column/Row 行为和参数的内置体验,或者在您自己的元素上使用 Modifier.verticalScroll 和 Modifier.horizontalScroll。类似地,ScrollerPosition 已被弃用,改用 ScrollState' (I400ce, b/157225838, b/149460415, b/154105299)
- Modifier.draggable 和 Modifier.scrollable API 已重新设计。DragDirection 已被删除,改用 Orientation。可滚动所需的状态已简化。ScrollableState 已被重命名为 ScrollableController (Iab63c, b/149460415)
runOnIdleCompose
已被重命名为runOnIdle
(I83607)- 单值语义属性现在使用调用样式。例如,'semantics { hidden = true }' 现在写为:'semantics { hidden() }'。 (Ic1afd, b/145951226, b/145955412)
- 一些测试 API 被重命名,使其更加直观。所有 findXYZ API 被重命名为 onNodeXYZ。所有 doXYZ API 被重命名为 performXYZ。 (I7f164)
- Transition API 已更改为返回 TransitionState,而不是将 TransitionState 传递给子元素。这使 API 与 animate() API 更加一致。(I24e38)
- 添加了一个 IntBounds 单位类,代表来自布局的整数像素边界。PopupPositionProvider 的 API 已更新为使用它。(I0d8d0,b/159596546)
- 为测试查找器添加了一个新的可选标志 useUnmergedTree。(I2ce48)
- 删除了过时的尺寸测试 API。(Iba0a0)
- 删除了包装 NativeShader 预期类的 Shader 内联类。将 NativeShader 重命名为 Shader。包装的 Shader 内联类没有在 API 表面上添加任何有价值的东西,而且是一个内联类,因此直接使用 NativeShader 类。(I25e4d)
- 弹出窗口、对话框和菜单现在继承上下文 MaterialTheme。(Ia3665,b/156527485)
- Material DropdownMenu 现在可滚动。(Ide699)
- 从 Layout() 函数的测量块中删除了布局方向参数。但是,布局方向在回调内部通过测量范围对象可用。(Ic7d9d)
- 在顶级 API 中使用 AnimationSpec 而不是 AnimationBuilder,以阐明静态动画规范的概念 -通过删除创建 AnimationSpec(如补间、弹簧)的 lambda 要求来改进转换 DSL。相反,它们直接采用构造函数参数。-提高 AnimationSpec 的整体易用性,打开构造函数而不是依赖于构建器 -将 KeyFrames 和补间的持续时间和延迟更改为 Int。这消除了不必要的类型转换和方法重载(用于支持 Long 和 Int)。(Ica0b4)
- 当
enabled
设置为 false 时,开关现在显示为禁用状态。(If4624,b/155941869,b/159331694) - Modifier.tag 已重命名为 Modifier.layoutId,以避免与 Modifier.testTag 混淆。(I995f0)
- 从 Placeable#get(AlignmentLine) 返回的对齐线 Int 位置现在不为空。如果查询的对齐线丢失,将返回 AlignmentLine.Unspecified。(I896c5,b/158134875)
Radius 类已重构为内联类。删除了伴随创建方法,有利于使用默认参数的函数构造函数,使沿 y 轴的半径与沿 x 轴的强制性半径参数匹配。
更新了 DrawScope.drawRoundRect 以使用单个 Radius 参数,而不是沿 x 轴和 y 轴使用 2 个单独的浮点数。(I46d1b)
为了合并用于表示定位信息的类的数量,将标准化使用 Offset 类而不是 PxPosition。这提供了内联类的优势,可以利用 long 来打包 2 个浮点值,以表示以浮点数表示的 x 和 y 偏移量。(I3ad98)
在各种 compose 类中替换 Px 类的用法,这是大规模重构工作的一部分,以仅依靠 Dp 和基本类型作为像素参数。完全删除了 Px 类。(I3ff33)
Toggleable 组件已弃用。改为使用 Modifier.toggleable。(I35220,b/157642842)
在各种 compose 类中替换 Px 类的用法,这是大规模重构工作的一部分,以仅依靠 Dp 和基本类型作为像素参数。(I086f4)
在各种 compose 类中替换 Px 类的用法,这是大规模重构工作的一部分,以仅依靠 Dp 和基本类型作为像素参数。(Id3434)
在各种 compose 类中替换 Px 类的用法,这是大规模重构工作的一部分,以仅依靠 Dp 和基本类型作为像素参数。(I97a5a)
修复了 DropdonMenuItems 的 onClick 未被调用的问题。(I3998b,b/157673259)
MutuallyExclusiveSetItem 已弃用。改为使用 Modifier.selectable。(I02b47,b/157642842)
TestTag 现在已弃用。改为使用 Modifier.testTag。(If5110,b/157173105)
TextField 的光标具有闪烁动画。(Id10a7)
在各种 compose 类中替换 Px 类的用法,这是大规模重构工作的一部分,以仅依靠 Dp 和基本类型作为像素参数。(I19d02)
VerticalScroller 现在开箱即用提供 Column。HorizontalScroller 现在开箱即用提供 Row。(Ieca5d,b/157020670)
在各种 compose 类中替换 Px 类的用法,这是大规模重构工作的一部分,以仅依靠 Dp 和基本类型作为像素参数。(Iede0b)
Modifier.semantics 已取消弃用,以允许在高级组件中使用。(I4cfdc)
DrawLayer 修饰符 API 已更改:outlineShape 重命名为 shape 并且具有 RectangleShape 默认值,现在不可为空;clipToOutline 重命名为 clip;clipToBounds 已删除,因为它与 clip == true 和 RectangleShape 相同。(I7ef11,b/155075735)
更新了公开 Canvas 的更高层 compose API 以公开 CanvasScope。这样一来,消费者就不需要维护自己的 Paint 对象。对于仍然需要访问 Canvas 的消费者,他们可以使用 drawCanvas 扩展方法,该方法提供回调以使用底层 Canvas 发出绘图命令。(I80afd)
AlignmentLineOffset 可组合对象已弃用,请改用 relativePaddingFrom() 修饰符。CenterAlignmentLine 可组合对象已删除。(I60107)
WithConstraints 尾随 lambda API 已更改。现在,它没有两个参数,而是有一个接收器范围,除了约束和布局方向外,它还提供以 Dp 为单位的 minWidth、maxWidth、minHeight 和 maxHeight 属性。(I91b9a,b/149979702)
添加了 defaultMinSizeConstraints 布局修饰符,该修饰符仅在传入的对应约束未指定(最小约束为 0,最大约束为无穷大)时将尺寸约束设置为包装的布局。(I311ea,b/150460257)
FocusManagerAmbient 已删除。使用 FocusModifier.requestFocus 获取焦点。(Ic4826)
创建了 CanvasScope API,它包装了 Canvas 对象以公开无状态、声明式绘图 API 表面。变换包含在它们自己的接收器范围内,并且大小信息也被限定到相应的内插边界。它不需要消费者维护自己的 Paint 状态对象来配置绘图操作。
添加了 CanvasScopeSample,以及更新了演示应用程序以包含声明式图形演示。(Ifd86d)
向 TextField 添加了光标颜色自定义。(I6e33f)
TextField 中使用的 TextFieldValue 现在可以像这样使用时在活动重建时幸存下来:
var text by savedInstanceState(saver = TextFieldValue.Saver) { TextFieldValue() }
。(I5c3ce,b/155075724)将 LayoutModifier2 重命名为 LayoutModifier。(Id29f3)
删除了已弃用的 LayoutModifier 接口。(I2a9d6)
用 FocusNode 替换 CoreTextField/TextField 的 focusIdentifier 参数,以与焦点子系统集成。(I7ea48)
Layout 和 LayoutModifier2 中的固有测量函数现在具有 IntrinsicMeasureScope 接收器,该接收器提供具有隐式传播的布局方向的固有查询 API。(Id9945)
添加了新的 Modifier.zIndex() 来控制同一父布局中子元素的绘制顺序。DrawLayerModifier 上的 elevation 属性已重命名为 shadowElevation,不再控制绘制顺序。DrawShadow 的参数顺序已更改:elevation 现在是第一个,shape 是第二个,默认值为 RectangleShape。(I20150,b/152417501)
RectangleShape 已从 androidx.ui.foundation.shape.* 移动到 androidx.ui.graphics.*。(Ia74d5,b/154507984)
TextField API 更新 - 将 onFocus 和 onBlur 回调合并为一个带有参数的 onFocusChange(Boolean) 回调。(I66cd3)
分别向 Row 和 Column 添加了 verticalGravity 和 horizontalGravity 参数。(I7dc5a)
更新了 wrapContentWidth 和 wrapContentHeight 以预期垂直或水平对齐,而不是任何对齐。gravity 修饰符已更新为接受垂直或水平对齐。Row、Column 和 Stack 已更新为支持自定义连续对齐。(Ib0728)
创建了 PixelMap API 以支持从 ImageAsset 查询像素信息。(I69ad6)
删除了 ProvideContentColor,改为直接使用 ContentColorAmbient 和
Providers
。(Iee942)ui-text-compose 模块已重命名为 ui-text。ui-text 现在包含 CoreText 和 CoreTextField 可组合对象。(Ib7d47)
ui-text 模块已重命名为 ui-text-core。(I57dec)
将 ui-framework/CoreText、CoreTextField 可组合对象移至 ui-text-compose 下。您可能想要在您的项目中包含 ui-text-compose。(I32042)
改进 DrawModifier API
- 将 draw() 的接收器范围设为 ContentDrawScope
- 删除 draw() 上的所有参数
- DrawScope 与以前的 CanvasScope 具有相同的接口
- ContentDrawScope 具有 drawContent() 方法。(Ibaced,b/152919067)
runOnIdleCompose
和runOnUiThread
现在是全局函数,而不是 ComposeTestRule 上的方法。(Icbe8f)[Mutable]State 属性委托运算符已移至扩展,以支持 Kotlin 1.4 属性委托优化。调用者必须添加导入才能继续使用
by state { ... }
或by mutableStateOf(...)
。(I5312c)为 LayoutCoordinates 添加了 positionInParent 和 boundsInParent。(Icacdd,b/152735784)
ColoredRect 已弃用。改为使用 Box(Modifier.preferredSize(width, height).drawBackground(color))。(I499fa,b/152753731)
已将 LayoutResult 重命名为 MeasureResult。(Id8c68)
添加了 LayoutModifier2,一个用于定义布局修饰符的新 API;弃用 LayoutModifier (If32ac)
用工厂扩展函数替换了 Modifier 加号运算符 (I225e4)
Draggable 已移动到修饰符 (Id9b16, b/151959544)
ParentData 可组合函数已弃用。您应该创建实现 ParentDataModifier 接口的修饰符,或者使用 LayoutTag 修饰符,如果您只需要标记布局子项以在测量块中识别它们。(I51368, b/150953183)
已弃用 Center 可组合函数。它应该被 LayoutSize.Fill + LayoutAlign.Center 修饰符,或者被带有合适修饰符的 Box 或 Stack 可组合函数之一替换 (Idf5e0)
添加了 VectorPainter API 以替换用于矢量图形的现有子组合 API。子组合的结果是 VectorPainter 对象,而不是 DrawModifier。已弃用以前的 DrawVector 可组合函数,以支持 VectorPainter。
已将 Image(Painter) API 重命名为 PaintBox(Painter)。创建了 Vector 可组合函数,其行为类似于 Image 可组合函数,但使用的是 VectorAsset 而不是 ImageAsset (I9af9a, b/149030271)
已将 LayoutFlexible 重命名为 LayoutWeight。已将 tight 参数重命名为 fill。(If4738)
已删除 RepaintBoundary,以支持 DrawLayerModifier (I00aa4)
DrawVector 已从常规可组合函数更改为返回 Modifier drawVector(),该函数将矢量绘制为布局的背景。(I7b8e0)
Opacity 可组合函数已替换为 drawOpacity 修饰符。(I5fb62)
用可组合函数 Clip 替换修饰符 drawClip()。DrawClipToBounds 是一个方便的修饰符,当您只需要使用矩形形状剪裁到图层边界时使用。(If28eb)
用 drawShadow() 修饰符替换了 DrawShadow 可组合函数。阴影现在作为 LayerModifier 的一部分绘制。(I0317a)
添加了 LayerModifier,一个允许为布局添加 RenderNode 的修饰符。它允许设置裁剪、不透明度、旋转、缩放和阴影。这将取代 RepaintBoundary。(I7100d, b/150774014)
androidx.compose.ViewComposer 已移动到 androidx.ui.node.UiComposer androidx.compose.Emittable 已删除。它与 ComponentNode 重复。androidx.compose.ViewAdapters 已删除。它们不再是支持的用例。Compose.composeInto 已弃用。请改用
setContent
或setViewContent
。Compose.disposeComposition 已弃用。请改用setContent
返回的Composition
上的dispose
方法。androidx.compose.Compose.subcomposeInto 已移动到 androidx.ui.core.subcomposeInto ComponentNode#emitInsertAt 已重命名为 ComponentNode#insertAt ComponentNode#emitRemoveAt 已重命名为 ComponentNode#removeAt ComponentNode#emitMode 已重命名为 ComponentNode#move (Idef00)创建了 Image 可组合函数,用于处理大小/布局,以及将给定的 ImageAsset 绘制到屏幕上。此可组合函数还支持绘制任何任意 Painter 实例,并尊重其固有大小,以及支持给定的固定大小或最小大小 (Ibcc8f)
已弃用 Wrap 可组合函数。它可以被 LayoutAlign 修饰符或 Stack 可组合函数替换 (Ib237f)
WithConstraints 获得了 LayoutDirection 参数 (I6d6f7)
使布局方向从父布局节点传播到子节点。添加了布局方向修饰符。(I3d955)
Stack 组件支持从右到左的方向性 (Ic9e00)
DrawShape 可组合函数已删除。请改用 DrawBackground 修饰符。(I7ceb2)
在 LayoutPadding 修饰符中支持从右到左的方向 (I9e8da)
添加了 AdapterList,一个滚动列表组件,它只组合和布局可见项目。当前已知问题包括它是垂直的,并且不能完全处理对其子项的所有更改。(Ib351b)
更新了
ComposeFlags.COMPOSER_PARAM
标志为true
,这将改变 compose 插件的代码生成策略。从总体上讲,这会导致 @Composable 函数以一个额外的合成参数生成,该参数被传递给后续的 @Composable 调用,以便运行时能够正确管理执行。这是一个重大的二进制不兼容变更,但是应该在 compose 的所有允许使用情况下保留源级兼容性。(I7971c)添加了 Canvas 组件。此可组合函数占用一定的空间(由用户提供),并允许您使用 CanvasScope 绘制 (I0d622)
Density 和 DensityScope 已合并为一个接口。现在可以使用 DensityAmbient.current 而不是 ambientDensity()。可以使用 with(density) 而不是 withDensity(density) (I11cb1)
更改了 LayoutCoordinates 以使提供的 AlignmentLines 成为一个 Set 而不是一个 Map,并且使 LayoutCoordinates 实现 get() 运算符以检索值。这使得修饰符更容易修改集合中的一个或多个值,而无需为每个修饰符创建新的集合。(I0245a)
滚动器现在展现出原生 Android 抛掷运动行为。(I922af, b/147493715)
对 Constraints 的 API 表面进行了改进 (I0fd15)