Compose Material
最新更新 | 稳定版 | 候选发布版 | Beta 版 | Alpha 版 |
---|---|---|---|---|
2024 年 11 月 13 日 | 1.7.5 | - | - | 1.8.0-alpha06 |
结构
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.5" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.material:material:1.7.5") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
有关依赖项的更多信息,请参阅添加构建依赖项。
反馈
您的反馈有助于改进 Jetpack。如果您发现新的问题或有改进此库的想法,请告诉我们。在创建新问题之前,请查看此库中现有的问题。您可以通过点击星形按钮为现有问题添加您的投票。
请参阅问题跟踪器文档以获取更多信息。
版本 1.8
版本 1.8.0-alpha06
2024 年 11 月 13 日
androidx.compose.material:material-*:1.8.0-alpha06
已发布。版本 1.8.0-alpha06 包含这些提交。
版本 1.8.0-alpha05
2024 年 10 月 30 日
androidx.compose.material:material-*:1.8.0-alpha05
已发布。版本 1.8.0-alpha05 包含这些提交。
错误修复
- 优化 Scaffold
contentPadding
行为,以避免在contentPadding
更改时始终重新组合主体内容。(I8c8e2,b/373904168) - 使 Material 滑块在按下控制键时更改其值。(I1c442)
版本 1.8.0-alpha04
2024 年 10 月 16 日
androidx.compose.material:material-*:1.8.0-alpha04
已发布。版本 1.8.0-alpha04 包含这些提交。
API 更改
- 从
TextFields
中删除readOnly
以固定到稳定的基础版本。(I3aaba)
错误修复
- 添加了对 Android S+ 上扩展组件中波纹的支持,例如点击时展开的卡片。以前,波纹不会填充新的大小,但现在它将扩展到新的边界。(If509a,b/183019123)
版本 1.8.0-alpha02
2024 年 9 月 18 日
androidx.compose.material:material-*:1.8.0-alpha02
已发布。版本 1.8.0-alpha02 包含这些提交。
版本 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.5
2024 年 10 月 30 日
androidx.compose.material:material-*:1.7.5
已发布。版本 1.7.5 包含这些提交。
版本 1.7.4
2024 年 10 月 16 日
androidx.compose.material:material-*:1.7.4
已发布。版本 1.7.4 包含这些提交。
版本 1.7.2
2024 年 9 月 18 日
androidx.compose.material:material-*:1.7.2
已发布。版本 1.7.2 包含这些提交。
版本 1.7.1
2024 年 9 月 10 日
- Android 工件没有更改。
-desktop
工件已被移除,并且添加了-jvmStubs
和-linuxx64Stubs
工件。这些目标都不应该被使用,它们是帮助 Jetbrains Compose 工作的占位符。
版本 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 更改
- 更新了在文本中获取 Material 主题链接的 API。具体来说,删除了用于构建主题
LinkAnnotations
和使用主题链接解析 HTML 的TextDefaults
方法。相反,添加了一个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
已变为可为空。要禁用波纹,请勿提供isEnabled = false
的RippleConfiguration
,而是将null
提供给LocalRippleConfiguration
。(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 中弃用,并在 material 和其他设计系统库中添加了新的波纹和RippleConfiguration
API。以前接受
MutableInteractionSource
并默认为 `remember { 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
包裹在一个 Drawer 可组合项中以实现以前的功能。请参阅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 布局上自动镜像的图标。请参阅 材质图标列表 以获取可以(并且应该)自动镜像的图标列表。
API 更改
- 添加了对在从右到左布局中呈现时自动镜像图标的支持。material-icons-core 和 material-icons-extended 模块中的图标现在提供了其他图标集,以便在图标允许的情况下支持自动镜像。新集以
Icons.AutoMirrored.Filled...
等为前缀,并包含将在 RTL 布局上自动镜像的图标。请参阅 材质图标列表 以获取可以(并且应该)自动镜像的图标列表。这些图标以前提供的图标属性现在被标记为已弃用,并提供了一个替换块建议来帮助迁移。如果您对在 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 包含以下提交。
错误修复
- 修复了在
LookaheadScope
内部的 Scaffold 内使用Subcomposition
(例如BottomSheetScaffold
)的一些组件过早尝试读取其大小的问题。 (If2c5d) - 修复了
DropdownMenu
的offset
计算,使其 x 偏移量仅取决于本地布局方向,并且当菜单靠近屏幕底部时,y 偏移量将不再反转。(Iccc74,b/294103942) - 优化了
BottomSheetScaffold
的布局内部结构,并修复了BottomSheetScaffold
在LookaheadLayout
内部的潜在问题。(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
和基于 Sheet 的组件。请使用提供的新的重载,其中密度作为参数。(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
现在公开了 progress 属性,该属性指示当前(已设置)锚点和滑动方向中最近的锚点之间的进度。(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 - 将 Drawer 中的
snapTo
函数标记为非实验性 API。(Ib9c18,b/261425368) - 为圆形进度指示器添加了轨道颜色参数,并为圆形和线性进度指示器都添加了笔触端点参数。(Ie668c,b/216325962,b/222964817)
- 将
ModalBottomSheetState
、ModalBottomSheetState.Saver
和rememberModalBottomSheetState
的confirmStateChange
重命名为confirmValueChange
。(Ib48d1) - 添加
Modifier.minimumInteractiveComponentSize
。如果元素的测量尺寸较小,则可以使用它保留至少 48.dp 的大小以消除触摸交互的歧义。(I33f58,b/258495559) - 在
ModalBottomSheetLayout
中合并了 Swipeable API 中的更改。ModalBottomSheetState
的 animateTo 不再采用animationSpec
参数,并且公开的偏移量现在是可空的。使用requireOffset
以要求偏移量。(Ia2e79) - 添加
@JvmDefaultWithCompatibility
注释。(I8f206) - 在
ModalDrawer
中合并了 Swipeable API 中的更改。DrawerState
的animateTo
已替换为 open 和 close 方法,并且偏移量现在是可空的。使用requireOffset
以要求偏移量。(I3de9e) - 更新了抽屉和表单,以便在手势可能成为滚动事件的情况下正确延迟按下。
- 在 Material 和 Material3 的 Text、
TextField
和OutlinedTextField
中添加了minLines
参数,允许根据行数设置组件的最小高度。(I4af1d)
错误修复
- 修复了
pullRefresh
未消耗速度,导致出现过度滚动的问题。还更改了Modifier.pullRefresh
中onRelease
lambda 的 API 签名,以便返回一个 Float 以表示消耗的速度。(I7db65,b/266874741) BottomSheetState
、ModalBottomSheetState
和BottomDrawerState
现在公开了 progress 属性,该属性指示当前(已设置)锚点和滑动方向中最近的锚点之间的进度。(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
现在公开了 progress 属性,该属性指示当前(已设置)锚点和滑动方向中最近的锚点之间的进度。(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 的大小,以消除触摸交互的歧义。(I33f58,b/258495559)。 - 合并了
ModalDrawer
中 Swipeable API 的更改。DrawerState
的animateTo
已被 open 和 close 方法替换,并且偏移量现在是可为空的。使用requireOffset
来强制要求偏移量。(I3de9e)。 - 在 Material 和 Material3 的 Text、
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)。
错误修复
- 从可点击和可选表面中删除了语义角色,更新了使用它们通过 modifier.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 签名,以便返回一个 Float 以表示消耗的速度。(I7db65,b/266874741) - 恢复了属性 getter
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)。 - 将 Drawer 中的
snapTo
函数标记为非实验性 API。(Ib9c18,b/261425368) - 为圆形进度指示器添加了轨道颜色参数,并为圆形和线性进度指示器都添加了笔触端点参数。(Ie668c,b/216325962,b/222964817)
- 将
ModalBottomSheetState
、ModalBottomSheetState.Saver
和rememberModalBottomSheetState
的confirmStateChange
重命名为confirmValueChange
。(Ib48d1) - 更多已弃用隐藏函数的返回类型可空性(Ibf7b0)。
- 添加
Modifier.minimumInteractiveComponentSize
。如果元素的测量尺寸较小,则可以使用它保留至少 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) - 添加了一个 Modifier API 来查询祖先滚动信息。(I2ba9d,b/203141462)
- 在
Clickable
中使用,以在手势可能成为滚动事件时正确延迟按下交互。 - 修复了在
Scrollable ViewGroup
内使用时,Clickables
未正确延迟波纹的问题。 - 更新了抽屉和表单,以便在手势可能成为滚动事件的情况下正确延迟按下。
错误修复
- 修复了如果刷新状态未更改为 true,则
PullRefreshIndicator
在调用onRefresh
后可能会卡住的问题。(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 的 Text、
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()
已弃用,取而代之的是awaitEachGesture()
,因为它允许事件在手势之间丢失。(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。此更改会影响材料和 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
现在还会在放置 Snackbar 时考虑表单的状态:在折叠状态下,Snackbar 位于表单和 FAB 之上;在展开状态下,Snackbar 锚定到表单底部。(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 的第一个 Beta 版本!
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
,请改用构造函数。(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 更改
- 更新可点击的卡片 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)- 恢复了之前仅依赖于
WindowInsetsControllerCompat
的 View 的更改,并再次需要一个 Window,该 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 包含这些提交。
错误修复
- 修复
NullPointerException
在androidx.compose.ui.platform.RenderNodeLayer.updateDisplayList
(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)。 PopupProperties
中的useDefaultMaxWidth
已重命名为usePlatformDefaultWidth
。(I05710)。- 对话框现在可以使用整个屏幕宽度。(I83929,b/190810877)。
- 添加了实验性范围滑块实现(I2f4b3)。
错误修复
- 为了与 Material Design 规范保持一致,当标签用作占位符时,带有无效输入的 OutlinedTextField 停止使用错误颜色作为标签。当文本字段中没有输入文本且文本字段未处于焦点状态时,后者为真。通过此更改,
TextFieldColors.labelColor()
函数中error:Boolean
参数的含义也发生了变化:即使输入无效,如果标签用作占位符,它现在也会返回false
。(I45f78)。
版本 1.0.0-beta09
2021 年 6 月 16 日
androidx.compose.material:material-*:1.0.0-beta09
已发布。版本 1.0.0-beta09 包含这些提交。
API 更改
- 将 Shape 参数添加到 OutlinedTextField 以能够自定义边框的形状(I8f39e,b/181322957)。
- TextOverflow 已更改为内联类。(I433af)。
错误修复
- 当传递 Color.Unspecified 时,BottomDrawer、BackdropScaffold 和 ModalBottomSheetLayout 中的 Scrim 将消失(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 更改
- 行为破坏性更改:Card 现在会消耗点击事件,使通过
Card(Modifier.clickable)
添加的点击事件变为无效操作。请使用 Card 的新实验性重载,该重载接受 onClick。(Ia8744,b/183775620)。- 添加了一个新的 Card 重载,它处理点击事件以及其他可点击功能:指示、interactionSource、启用/禁用。无法将常规的不可点击 Card 与
Modifier.clickable
一起使用,因为 Card 在这些情况下不会裁剪波纹指示。
- 添加了一个新的 Card 重载,它处理点击事件以及其他可点击功能:指示、interactionSource、启用/禁用。无法将常规的不可点击 Card 与
- 行为破坏性更改:Surface 现在会消耗点击事件,使通过
Surface(Modifier.clickable)
添加的点击事件变为无效操作。请使用 Surface 的新实验性重载,该重载接受 onClick。(I73e6c,b/183775620)。- 添加了一个新的 Surface 重载,它处理点击事件以及其他可点击功能:指示、interactionSource、启用/禁用。无法将常规的不可点击 Surface 与
Modifier.clickable
一起使用,因为 Surface 在这些情况下不会裁剪波纹指示。
- 添加了一个新的 Surface 重载,它处理点击事件以及其他可点击功能:指示、interactionSource、启用/禁用。无法将常规的不可点击 Surface 与
API 更改
FabPosition
已从枚举转换为内联类,以支持将来可能的扩展(I030fb)。- 将枚举用法重构为内联类,以避免在添加新枚举值时出现详尽的 when 语句问题。(I2b5eb)。
- 向可点击/可切换添加了点击超时,以防止在滚动/拖动期间显示波纹(Ia2704,b/168524931)。
- ContentDescription 和 Text semantics 属性不再是单个值,而是列表。这使得能够合并它们本身,而不是进行连接。还提供了更好的测试 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 目录添加了一个 README。(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 更改
- 波纹已迁移到在 Android 设备上内部使用
RippleDrawable
。这意味着波纹动画将在渲染线程上发生,因此即使 UI 线程处于负载下(例如在屏幕之间导航时)也能保持流畅。这不会更改波纹的 API 表面,但由于此更改,可能会引入行为更改。为了帮助迁移,添加了LocalRippleNativeRendering
- 为此 CompositionLocal 提供false
的值以回退到 CompositionLocalProvider 内部的先前波纹实现。此 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)。
- 具有 weight(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 的默认水平对齐方式更改为 Start,与 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
。- 接口负责发出/收集 Interaction 事件。
- 不要将
interactionState = remember { InteractionState() }
传递给诸如Button
和Modifier.clickable()
之类的组件,而是使用interactionSource = remember { MutableInteractionSource() }
。 - 不要使用:
Interaction.Pressed in interactionState
,而应使用 InteractionSource 上的扩展函数,例如 InteractionSource.collectIsPressedAsState()。 - 对于复杂用例,您可以使用 InteractionSource.interactions 来观察 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 修饰符,允许出于辅助功能目的标记 Tab 或 RadioButton 的集合 (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,现在允许自定义挂起动画而不是预定义的 Decays。(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 现在需要 remember 键来指示指针输入检测协程何时应为新的依赖项重新启动。(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.compose.setContent,位于 androidx.activity:activity-compose 模块中。(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) - 重命名 Ambients 以匹配 Ambient -> CompositionLocal 的重命名。Ambients 以前名为 AmbientFoo,现在 CompositionLocals 名为 LocalFoo。(I2d55d)
- Selection 已移至 foundation。(I7892b)
- 与我们之前删除
state { 0 }
可组合项并现在推广类似remember { mutableStateOf(0) }
的用法类似,我们将删除savedInstanceState { 0 }
可组合项。您应该改用rememberSaveable { mutableStateOf(0) }
,如果 MutableState 内部使用的类型可以存储在 Bundle 中,它将自动保存和恢复。如果之前您传递了一个自定义的 saver 对象,现在您需要使用一个新的 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 现在默认使用延迟创建的、窗口范围的 Recomposers,这些 Recomposers 由窗口的 ViewTreeLifecycleOwner 驱动。当主机 Lifecycle 停止时,重新组合和基于 withFrameNanos 的动画滴答会被暂停。(I38e11)
错误修复
- Icon 现在将按比例放大以适应其大小,并尊重应用于它的 size 修饰符。例如,
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 中的 Initial State(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)
Modifier.draggable
中的canDrag
参数已被移除 (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
已弃用。当您有大量滚动内容时,使用ScrollableColumn
的效率低于LazyColumn
,因为使用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) - 在基础
Strings.kt
中添加Toggle
(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
。这可以提高性能,因为失效范围可以缩小到读取 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 检查以检查 Composable 函数中的 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 应用程序,您应该改为创建您自己的设计系统特定主题环境,这些环境可以在您自己的组件中使用。(I74acc、b/172067770)
- foundation.Text 已弃用,并替换为 material.Text。对于不使用主题中的值的简单、无偏见的文本 API,请参阅 androidx.compose.foundation.BasicText。(If64cb)
- 将 KeyboardOptions 重命名为 ImeOptions (I82f36)
- 将 KeyboardType 和 ImeAction 移动到 KeyboardOptions 中 (I910ce)
- BaseTextField 已弃用。改为使用 BasicTextField。(I896eb)
- ExperimentalSubcomposeLayoutApi 注解已删除。现在可以使用 SubcomposeLayout 而无需添加 @OptIn (I708ad)
- FirstBaseline 和 LastBaseline 已移动到 androidx.compose.ui.layout 包 (Ied2e7)
- 更新了 Icon API 以接受 Color.Unspecified 作为可能的色调颜色,这将绘制提供的资源或画家而无需 ColorFilter。以前尝试使用 Color.Unspecified 忽略着色会导致使用透明颜色着色,最终导致没有任何内容呈现。(I049e2、b/171624632)
- relativePaddingFrom 已重命名为 paddingFrom。添加了 paddingFromBaseline 修饰符,作为指定从布局边界到文本基线的距离的便利功能。(I0440a、b/170633813)
- 为了与 SideEffect 和 DisposableEffect API 保持一致,LaunchedTask 重命名为 LaunchedEffect。为了鼓励最佳实践,不允许使用没有主题参数的 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。如果您不想使用 Material 库,还可以使用 Image 组件/Modifier.paint() 和 Painter。(I9f622)
- 添加了 FloatingActionButtonElevation 以表示 FAB 在不同状态下使用的海拔高度。有关默认实现,请参阅 FloatingActionButtonConstants.defaultElevation()(I2d4f5)
- 添加了 SwitchColors 接口以表示 Switch 在不同状态下使用的颜色。请参阅 SwitchConstants.defaultColors 以自定义这些颜色。(I93805)
- 添加了 ButtonElevation 和 ButtonColors 接口以表示按钮在不同状态下使用的海拔高度和颜色。请参阅 ButtonConstants 中的默认函数以自定义这些参数。(Ic5b7b)
- 添加了 RadioButtonColors 接口以表示 RadioButton 在不同状态下使用的颜色。请参阅 RadioButtonConstants.defaultColors() 以自定义不同状态下使用的颜色。(I74130)
- 添加了 CheckboxColors 接口以表示复选框在不同状态下使用的颜色。请参阅 CheckboxConstants.defaultColors() 以自定义不同状态下使用的颜色。(I7dbdb)
错误修复
- Material 组件不再将海拔高度设置为 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,允许自定义/禁用应用于深色主题中表面的默认海拔高度覆盖。(I5b74d)
错误修复
- 作为标准化内联类的哨兵值的一部分,将 Color.Unset 重命名为 Color.Unspecified 以与其他内联类保持一致(I97611,b/169797763)
- 引入了 TextOverflow.None。当溢出为 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 更改
- 在有状态的 Material 组件中公开 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 对象
- 删除了查询 topRight、bottomRight、bottomCenter 等的 RoundRect API。
- 弃用 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
- 添加了 inset 的重载方法,该方法为所有 4 个边界提供相同的内边距值
- 删除了 inset 方法的文档,该文档指示内边距将应用于所有 4 个边
- 更新了 Rect 类的文档
- 更新了 Rect 参数的注释以匹配 kdoc 样式
- 删除了 Rect.join 和 Rect.expandToInclude
- 创建了 Rect.translate(offset) 的重载方法,并弃用了 Rect.shift
- (If086a, b/167737376)
- 我们阻止了布局作用域内容的静态导入(例如,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) - 将 InteractionState 参数添加到 BottomNavigationItem 和 Tab,允许提升此状态并调整组件在不同状态下的显示方式。(Ia3e9e, b/168025711)
- 删除了按钮的
disabledBackgroundColor
和disabledContentColor
参数。您应该改用 ButtonConstants 中的新默认颜色函数。如果您已经显式设置了 contentColor/backgroundColor,则应改用这些默认函数并自定义某些/所有参数,以避免覆盖启用/禁用状态的颜色。(If9b52) - 文本字段的背景颜色不再隐式应用透明度 alpha。相反,通过 backgroundColor 参数提供的任何颜色都将直接应用。(Iecee9, b/167951441)
- InnerPadding 已重命名为 PaddingValues。(I195f1, b/167389171)
Modifier.swipeable
中的参数resistanceFactorAtMin
和resistanceFactorAtMax
已替换为单个 resistance 参数。在SwipeableConstants
中添加了一个新的defaultResistanceConfig
方法。(I54238)- 为 Button 和 FloatingActionButton 添加了动画状态提升支持。提升现在在默认状态和按下状态之间进行动画切换。要自定义状态之间的提升,请使用
ButtonConstants.defaultAnimatedElevation()
和FloatingActionButtonConstants.defaultAnimatedElevation()
,而不是在所有情况下都设置一个扁平的 Dp 值。(I37925) - Label 成为 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 中的重力用法已一致重命名为对齐或对齐方式。(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)
- 将 enabled 参数添加到 IconButton,并在 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)
- 可选参数 velocityThreshold 添加到 Modifier.swipeable。(I698ba)
- bottomBarSize、fabSize 等在 ScaffoldState 中不再可用。在您想了解其大小的组件上改用 Modifier.onPosition。contentColor 和 Modifier 参数已添加到 Scaffold (Ic6f7b, b/161811485, b/157174382)
- 重命名并重新排序 Tab 中的一些参数以与其他 API 保持一致 (Ia2d12, b/161807532)
- 将 TabRow 分割成 TabRow 和 ScrollableTabRow,从 TabRow 中删除 isScrollable。还在 ScrollableTabRow 中公开了 edgePadding,这允许控制选项卡之前/之后的空闲空间。(I583e8, b/161809544)
- 已删除
TabRow
对象,并将其替换为 TabConstants.TabRow。TabRow.TabPosition 已移至顶层(TabPosition),indicatorContainer 已重命名为indicator
。有关如何使用更新的 API 和默认值的信息,请参阅示例和文档。(I54d45, b/161809544) - Modifier.swipeable 中的 thresholds 参数进行了调整;它现在采用一对状态(类型为 T),并以 ThresholdConfig 的形式返回它们之间的阈值。向 SwipeToDismiss 添加了一个参数 dismissThresholds,它是一个 lambda (DismissDirection) -> ThresholdConfig。(Ie1080)
- Slider 具有更多颜色以进行细粒度自定义 (I73e64, b/161810475)
- Card 的 color 参数已重命名为 backgroundColor (I01fc1, b/161809546)
- Snackbar 现在可以自定义背景色和内容颜色了(I238f2,b/161804381)
- 在抽屉(Drawer)中添加了 `modifier`、`backgroundColor`、`contentColor` 和 `scrimColor` 等自定义参数(I23655,b/161804378)。
- 为了提高清晰度,
state { ... }
可组合函数已被弃用,建议使用显式调用remember { mutableStateOf(...) }
来替代。这减少了状态管理的整体 API 表面积和概念数量,并且与类属性委托的by mutableStateOf()
模式相匹配。(Ia5727) - 按钮的 `padding` 参数已重命名为 `contentPadding`(Id252e,b/161809394)。
- 添加了一个实验性的材质组件 `SwipeToDismiss`。(I129e5)
错误修复
- 已移除
onChildPositioned
和OnChildPositionedModifier
。开发者应该在子布局上使用onPositioned
和OnPositionedModifier
来代替。(I4522e,b/162109766) - 在 `SemanticsPropertyKey` 中添加了 `mergePolicy` lambda 表达式。这可以用来定义一个自定义策略,用于 `mergeAllDescendants` 语义合并。默认策略是如果父级值已存在,则使用父级值,否则使用子级值。(Iaf6c4,b/161979921)
- `IntSize` 现在是一个内联类(I2bf42)
PlacementScope.placeAbsolute()
已重命名为PlacementScope.place()
,之前的PlacementScope.place()
已重命名为PlacementScope.placeRelative()
。因此,PlacementScope.place()
方法将不再自动在从右到左的上下文中镜像位置。如果需要此功能,请改用PlacementScope.placeRelative()
。(I873ac,b/162916675)- 已弃用 `PxBounds`,建议使用 `Rect` 代替。所有使用 `PxBounds` 的地方都已更新为 `rect`,并添加了适当的弃用/替换注释以帮助迁移。(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`,以更好地映射到材质颜色系统并消除 `ColorPalette` 是一个“通用”主题对象而不是材质颜色系统的特定实现的混淆。此外,将 `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` 被标记为实验性(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` 注解
- 更新矢量子组合,删除冗余的相等性条件检查,因为 Compose 已经处理了它们
- 已弃用 `Rect` 的伴随构造器方法,建议使用函数构造器代替
- 更新 `Brush` 类和函数构造器,使其具有 `@Immutable` 和 `@Stable` API
- 更新 `VertexMode` 枚举为 PascalCase
- 更新 `DrawScope` 的 `selectPaint` 方法,如果笔刷参数已更改,则有条件地覆盖笔刷上的笔触参数
- 更新 `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
,并将 state 值赋予使用数据类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) } ) }
方法二:使用 mutableStateOf 和属性委托
Kotlin 的属性委托和
mutableStateOf
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 并将其作为 indication 参数传递给 clickable。(I663b2,b/155375067)
删除了已弃用的 FilledTextField 可组合项的覆盖 (I7f8f8)
将 Button 对象(包含 Button 函数使用的默认值)重命名为 ButtonConstants (I7c5f7,b/159687878)
Button 的内容插槽现在表现为 Row(当您需要在文本旁边添加图标时很有用,请参阅 Button 上的示例了解如何编写它)(I0ff10,b/158677863)
RadioGroup 和 RadioGroupItem 已弃用。使用 Box 以及 Modifier.selectable、Row 和 Column 根据您的设计创建合适的 radioButton 选择集 (I7f5cf,b/149528535)
添加了 Material Outlined Textfield (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)
将 IntPx 的用法替换为 Int。将 IntPxPosition 替换为 IntOffset。将 IntPxSize 替换为 IntSize。(Ib7b44)
为了整合用于表示大小信息的类的数量,标准化使用 Size 类而不是 PxSize。这提供了内联类的优势,可以利用 long 打包 2 个浮点值来表示以浮点数表示的宽度和高度。(Ic0191)
弃用 Modifier.ripple。Clickable 现在使用 ripple 作为默认指示(如果您的应用程序中设置了 MaterialTheme {}),因此在大多数情况下,您只需使用 clickable 即可免费获得 ripple 指示。如果您需要自定义 ripple 的颜色/大小/边界参数,您可以手动创建一个 RippleIndication 并将其作为 indication 参数传递给 clickable。(I101cd,b/155375067)
Scaffold API 已重新设计:一些参数更改了名称,添加了新参数以实现更好的自定义。添加了 getter 以查询 Fab、TopBar 和 BottomBar 的大小 (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 和 Extended FAB 的默认颜色已更改为 MaterialTheme.colors.secondary。(I3b9b9,b/154118816)
将 API 中所有可为空的 Color 用法替换为不可为空的用法,并使用 Color.Unset 而不是 null (Iabaa7)
将 EdgeInsets 重命名为 InnerPadding。将 Material Buttons 的 innerPadding 参数重命名为 paddding。(I66165)
Slider 现在是无状态的。用户需要自己传递和更新状态,就像在任何其他控件中一样。(Ia00aa)
StaticDrawer 已删除。如果您需要它,请改用具有 material 规范宽度 的 Box (I244a7)
添加了 Material Design 实现的 Filled Text Field (Ic75cd)
向 ListItem 添加了 modifier 参数,并将参数重新排序以提升尾随 lambda 主体 (I66e21)
向 Typography 添加了 defaultFontFamily 构造函数参数,允许指定将用于任何未设置系列的提供的 TextStyles 的默认字体系列。(I89d07)
暂时从 API 表面删除了 Material Data Tables。(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)
删除了使用字符串参数的 Snackbar API,转而使用接受可组合 Lambda 表达式的重载方法。有关用法信息,请参阅更新后的示例(I55f80)
重构了 Tab API 以接受
text
和icon
Lambda 表达式(Ia057e)添加了 BottomNavigation 组件,有关用法信息,请参阅文档和示例(I731a0)
添加了 Icon、IconButton 和 IconToggleButton,并删除了 AppBarIcon。您可以直接用 IconButton 替换现有 AppBarIcon 的用法,它们现在将具有正确的触摸目标。有关用法信息,请参阅示例,并参阅 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)
对环境 API 进行了重大更改。有关详细信息,请参阅日志和
Ambient<T>
文档(I4c7ee,b/143769776)已添加 Scaffold 材料组件。Scaffold 实现(I7731b)
用 Border 修饰符替换了 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。可滚动所需的 State 已简化。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(如 tween、spring)的 Lambda 表达式要求来改进转换 DSL。它们改为直接使用构造函数参数。-改进 AnimationSpec 的整体易用性,打开构造函数而不是依赖构建器 -将 KeyFrames 和 Tween 的持续时间和延迟更改为 Int。这消除了不必要的类型转换和方法重载(以支持 Long 和 Int)。(Ica0b4)
- 当
enabled
设置为 false 时,Switch 现在显示为禁用状态(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 参数,而不是使用 2 个单独的浮点值作为沿 x 轴和 y 轴的半径(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 在像这样使用时可以保留 Activity 重建:
var text by savedInstanceState(saver = TextFieldValue.Saver) { TextFieldValue() }
(I5c3ce, b/155075724)将 LayoutModifier2 重命名为 LayoutModifier。(Id29f3)
移除已弃用的 LayoutModifier 接口。(I2a9d6)
将 CoreTextField/TextField 的 focusIdentifier 参数替换为 FocusNode,以便与焦点子系统集成。(I7ea48)
Layout 和 LayoutModifier2 中的 Intrinsic 测量函数现在有一个 IntrinsicMeasureScope 接收器,它提供了具有隐式传播布局方向的 Intrinsic 查询 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 以期望垂直或水平 Alignment 而不是任何 Alignment。gravity 修饰符已更新为接受垂直或水平 Alignment。Row、Column 和 Stack 已更新为支持自定义连续 Alignment。(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,使其将 providedAlignmentLines 设为 Set 而不是 Map,并使 LayoutCoordinates 实现 get() 运算符以检索值。这使得修饰符更容易修改集合的一个或多个值,而无需为每个修饰符创建新的集合。(I0245a)
滚动条现在表现出原生 Android 抛掷运动行为。(I922af, b/147493715)
约束 API 表面的改进 (I0fd15)