Compose Material

使用现成的 Material Design 组件构建 Jetpack Compose UI。这是 Compose 的更高级别的入口点,旨在提供与 www.material.io 中描述的组件相匹配的组件。
最新更新 稳定版 候选发布版 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.runtimeCompose 编程模型和状态管理的基本构建块,以及 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 更改时始终重新组合主体内容。(I8c8e2b/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+ 上扩展组件中波纹的支持,例如点击时展开的卡片。以前,波纹不会填充新的大小,但现在它将扩展到新的边界。(If509ab/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 构建器,用于使用安全参数创建底部表单((I28589I777dbb/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。这允许某些组件仅在需要时延迟创建实例,从而提高性能。建议您在自己的组件中进行类似的更改。
  • BottomDrawerModalBottomSheetBackdropScaffold 和标准底部表单已提升到稳定 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 并从材料中删除了 TextDefaultsI5477b

版本 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 未应用于 TextFieldDecorationBoxOutlinedTextFieldDecorationBox。装饰框现在接受 shape 参数。(I371c2b/307694651
  • RippleConfiguration#isEnabled 已被移除,并且 LocalRippleConfiguration 已变为可为空。要禁用波纹,请勿提供 isEnabled = falseRippleConfiguration,而是将 null 提供给 LocalRippleConfiguration。(I22725
  • 文本链接除了普通样式、悬停和聚焦外,还具有按下状态样式选项。TextDefaults 方法分别具有 pressedStyle 参数以支持该功能。(Ic473fb/139312671

错误修复

  • OutlinedTextField 标签的顶部填充现在考虑了系统字体大小。(Idc781

版本 1.7.0-alpha07

2024 年 4 月 17 日

androidx.compose.material:material-*:1.7.0-alpha07 已发布。版本 1.7.0-alpha07 包含这些提交

API 更改

  • 文本链接除了普通样式、悬停和聚焦外,还具有按下状态样式选项。(I5f864b/139312671
  • 添加了一个 TextDefaults 对象,其中包含用于构建 LinkAnnotation 和解析应用 MaterialTheme 到链接的 HTML 标记字符串的方法。(I98532b/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 更改

  • 将更多 ModalDrawerBottomDrawer 默认值移动到 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 包含这些提交

新功能

版本 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 规范。 BackdropScaffoldsnackbarHost 参数不再是最后一个参数,以避免与尾随 lambda 混淆。 BackdropScaffoldState 公开了一个 progress(from, to) API 来查询锚点之间的进度。 (I73f48, b/261423218)
  • 标准底部表单已从实验性功能提升至稳定版。 已删除弃用的构造函数。 动画规范现在是根据指南的 tween 规范。 (I3c1a8, b/278692145, b/261409034)
  • 模态底部表单已从实验性功能提升至稳定版。 已删除弃用的构造函数。 动画规范现在是根据指南的 tween 规范。 (Ic53f4, b/278692145, b/266780235, b/261409034)

错误修复

  • 修复了在特定场景下 BackdropScaffoldLookaheadScope 结合使用时可能崩溃的问题。 (I51396)
  • 移除 BottomSheetScaffold 内部的子组合以提高性能。 修复了在特定场景下 BottomSheetScaffoldLookaheadScope 结合使用时可能崩溃的问题。 (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 更改

  • rememberRippleRippleTheme 已在 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)
  • 修复了 DropdownMenuoffset 计算,使其 x 偏移量仅取决于本地布局方向,并且当菜单靠近屏幕底部时,y 偏移量将不再反转。(Iccc74b/294103942
  • 优化了 BottomSheetScaffold 的布局内部结构,并修复了 BottomSheetScaffoldLookaheadLayout 内部的潜在问题。(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 文件以注释兼容性抑制。(I8e87ab/287516207
  • FabPosition 添加了新的开始对齐方式。(Ib7aeab/170592777
  • Material 2 中的 TextFieldColorsWithIcons 已弃用,取而代之的是 TextFieldColors。在覆盖 leadingIconColortrailingIconColor 时,也应覆盖带有 interactionSource 的重载。(Id57edb/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.NoneAlignment.Center,并且已在 TypographyTextStyle 中添加了显式的 lineHeight(以 sp 为单位)。如果您想自定义这些值,请查阅API 文档,并查看博文以了解这些更改的详细说明。(Icabc3I3f801I04c03

API 更改

  • Material 的 Swipeable API 已弃用。请参考 Foundation 的 AnchoredDraggable API,这些 API 针对简单和复杂的使用场景进行了优化。(I732e0

错误修复

  • BottomSheetStateModalBottomSheetStateBottomDrawerState 现在公开了 progress 属性,该属性指示当前(已设置)锚点和滑动方向中最近的锚点之间的进度。(I1b317b/271169225b/276375124b/276776071b/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 中的更改。BottomSheetStateconfirmStateChange 参数已重命名为 confirmValueChangeprogress 现在以浮点数形式公开。animateTosnapTo 是内部的。请改用 expand()collapse()directionoverflow 已删除。offset 已替换为 requireOffset()I323b4
  • 将 Drawer 中的 snapTo 函数标记为非实验性 API。(Ib9c18b/261425368
  • 为圆形进度指示器添加了轨道颜色参数,并为圆形和线性进度指示器都添加了笔触端点参数。(Ie668cb/216325962b/222964817
  • ModalBottomSheetStateModalBottomSheetState.SaverrememberModalBottomSheetStateconfirmStateChange 重命名为 confirmValueChange。(Ib48d1
  • 添加 Modifier.minimumInteractiveComponentSize。如果元素的测量尺寸较小,则可以使用它保留至少 48.dp 的大小以消除触摸交互的歧义。(I33f58b/258495559
  • ModalBottomSheetLayout 中合并了 Swipeable API 中的更改。ModalBottomSheetState 的 animateTo 不再采用 animationSpec 参数,并且公开的偏移量现在是可空的。使用 requireOffset 以要求偏移量。(Ia2e79
  • 添加 @JvmDefaultWithCompatibility 注释。(I8f206
  • ModalDrawer 中合并了 Swipeable API 中的更改。DrawerStateanimateTo 已替换为 open 和 close 方法,并且偏移量现在是可空的。使用 requireOffset 以要求偏移量。(I3de9e
  • 更新了抽屉和表单,以便在手势可能成为滚动事件的情况下正确延迟按下。
  • 在 Material 和 Material3 的 Text、TextFieldOutlinedTextField 中添加了 minLines 参数,允许根据行数设置组件的最小高度。(I4af1d

错误修复

  • 修复了 pullRefresh 未消耗速度,导致出现过度滚动的问题。还更改了 Modifier.pullRefreshonRelease lambda 的 API 签名,以便返回一个 Float 以表示消耗的速度。(I7db65b/266874741
  • BottomSheetStateModalBottomSheetStateBottomDrawerState 现在公开了 progress 属性,该属性指示当前(已设置)锚点和滑动方向中最近的锚点之间的进度。(I1b317b/271169225b/276375124b/276776071b/270066861
  • 修复了当操作堆叠在一起以适应对话框宽度时,AlertDialog 取消操作出现在确认操作下方的错误。此修复使实现与 Material Design 规范保持一致。(I029deb/235454277
  • gesturesEnabled 设置为 false 时,BottomSheetScaffold 将不再参与嵌套滚动。(I634f3b/215403277
  • 修复了当为插槽提供空内容时,BottomSheetScaffold 会崩溃的错误。(Ib24a5b/235588730
  • 修复了 PullRefreshIndicator 拦截点击/指针事件的问题。(2494256b/271777421
  • 修复了 ModalBottomSheetLayout 在屏幕方向更改时的极端情况下会崩溃的问题。表单内容中/上的布局动画(例如 Modifier.animateContentSize)现在可以流畅地工作。(I2f981b/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 包含以下提交。

错误修复

  • BottomSheetStateModalBottomSheetStateBottomDrawerState 现在公开了 progress 属性,该属性指示当前(已设置)锚点和滑动方向中最近的锚点之间的进度。(I1b317b/271169225b/276375124b/276776071b/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 更改

  • DrawerStateBottomDrawerState 的偏移量不再可为空。它们改为返回 Float.NaN 以指示偏移量的缺失。(Ie9855
  • 添加了一个选项,在构造 DropdownMenuExposedDropdownMenu 时传入 ScrollState,用于控制显示的菜单项的垂直滚动状态。(Idb009b/185304441
  • 添加了支持启用/禁用 ModalBottomSheetLayout 手势的功能,以便用户可以为功能更丰富的底部表单配置此功能(I40af0)。
  • BasicText 添加了一个颜色参数,以便高效地动画化或设置文本颜色。(Iffd88b/246961787)。
  • 将语义属性 isContainer 重命名为 isTraversalGroupI121f6)。

错误修复

  • 修复了当操作堆叠在一起以适应对话框宽度时,AlertDialog 的关闭操作出现在确认操作下方的现象。此修复使实现与 Material Design 规范保持一致。(I029deb/235454277)。

版本 1.5.0-alpha04

2023年5月10日

androidx.compose.material:material-*:1.5.0-alpha04 已发布。版本 1.5.0-alpha04 包含这些提交。

API 更改

  • 我们正在将密度依赖项移至组件级别。这适用于以下组件:BottomDrawerModalBottomSheetLayoutBottomSheetScaffoldSwitchModalDrawer。请使用提供的密度作为参数的新重载。(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)继续受支持。(Iad40cb/178529942b/220676296)。

错误修复

  • 更新了 Switch 组件的内部结构。现在,在拖动时,开关将预览最接近的(目标状态)。(Id90d4)。
  • 优化了 BottomSheetScaffold 中的动画表单内容(例如,表单内容上的 Modifier.animateContentSize),现在可以流畅地工作。(Ia913cb/270518202b/254446195)。
  • gesturesEnabled 设置为 false 时,BottomSheetScaffold 将不再参与嵌套滚动。(I634f3b/215403277)。

版本 1.5.0-alpha02

2023年4月5日

androidx.compose.material:material-*:1.5.0-alpha02 已发布。版本 1.5.0-alpha02 包含这些提交。

错误修复

  • 修复了当为插槽提供空内容时,BottomSheetScaffold 会崩溃的错误。(Ib24a5b/235588730
  • 修复了 PullRefreshIndicator 拦截点击/指针事件的问题(2494256b/271777421)。

版本 1.5.0-alpha01

2023年3月22日

androidx.compose.material:material-*:1.5.0-alpha01 已发布。版本 1.5.0-alpha01 包含这些提交。

错误修复

  • 添加了一个芯片组重排示例。更新单行芯片组示例中子芯片之间的水平填充,以匹配规范。(I3b155)。
  • 修复了 ModalBottomSheetLayout 在屏幕方向更改时的极端情况下会崩溃的问题。表单内容中/上的布局动画(例如 Modifier.animateContentSize)现在可以流畅地工作。(I2f981b/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 的大小,以消除触摸交互的歧义。(I33f58b/258495559)。
  • 合并了 ModalDrawer 中 Swipeable API 的更改。DrawerStateanimateTo 已被 open 和 close 方法替换,并且偏移量现在是可为空的。使用 requireOffset 来强制要求偏移量。(I3de9e)。
  • 在 Material 和 Material3 的 Text、TextFieldOutlinedTextField 中添加了 minLines 参数,允许根据行数设置组件的最小高度。(I4af1d
  • BasicTextBasicTextField 添加了 minLines 参数。它允许根据行数设置这些组合项的最小高度(I24294b/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 的更改。BottomSheetStateconfirmStateChange 参数已重命名为 confirmValueChangeprogress 现在作为浮点值公开。animateTosnapTo 是内部的。请改用 expand()collapse()directionoverflow 已删除。offset 已替换为 requireOffset()。(I323b4)。

错误修复

  • 从可点击和可选表面中删除了语义角色,更新了使用它们通过 modifier.semantics 设置角色的组件(Ibb4ba)。
  • 对扩展的 Material 图标进行了细微更新,调整了填充的 desktop_macdirectionskitchen 图标。(I65f5e)。

版本 1.4.0-beta01

2023年2月8日

androidx.compose.material:material-*:1.4.0-beta01 已发布。版本 1.4.0-beta01 包含这些提交。

API 更改

  • 修复了 pullRefresh 未消耗速度,导致出现过度滚动的问题。还更改了 Modifier.pullRefreshonRelease lambda 的 API 签名,以便返回一个 Float 以表示消耗的速度。(I7db65b/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 状态计算错误,导致表单看起来像悬浮的问题。(I8c615b/265610459)。
  • 修复了 ModalBottomSheetLayout 中的一个错误,在某些情况下,表单在从隐藏状态变为可见状态时会崩溃。(Ia9265b/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。(Ib9c18b/261425368
  • 为圆形进度指示器添加了轨道颜色参数,并为圆形和线性进度指示器都添加了笔触端点参数。(Ie668cb/216325962b/222964817
  • ModalBottomSheetStateModalBottomSheetState.SaverrememberModalBottomSheetStateconfirmStateChange 重命名为 confirmValueChange。(Ib48d1
  • 更多已弃用隐藏函数的返回类型可空性(Ibf7b0)。
  • 添加 Modifier.minimumInteractiveComponentSize。如果元素的测量尺寸较小,则可以使用它保留至少 48.dp 的大小以消除触摸交互的歧义。(I33f58b/258495559
  • 合并了 ModalBottomSheetLayout 中 Swipeable API 的更改。ModalBottomSheetStateanimateTo 不再接受 animationSpec 参数,并且公开的 offset 现在是可为空的。使用 requireOffset 来强制要求 offset。(Ia2e79)。

错误修复

  • ModalBottomSheetLayout 的表单现在最大宽度为 640 dp。(I71a4fb/234927577)。

  • 修复了 rememberPullRefreshState 未随时间更新 refreshThresholdrefreshingOffset 的问题。(Ifed10b/263159832
  • 进度指示器的进度现在已正确限制在其预期范围内。(I8a7ebb/262262727
  • ModalBottomSheetState 尚未收到任何锚点时,调用 snapToanimateTo 时,它将无动画地更新 currentValue,而不是抛出异常。(I2c91b
  • 修复了 Material 2 FilterChip 实现中的启用状态。(Id326ab/261329817
  • 修复了当从纵向旋转到横向时,如果 ModalBottomSheetLayoutHalfExpanded 状态,则会导致崩溃的错误。请确保您传递了正确的 initialValue,例如通过检查配置。(Ie8df7b/182882364
  • 修复了如果工作表内容为空,则 ModalBottomSheetLayout 会崩溃的问题。ModalBottomSheetLayout 现在允许空的工作表内容。如果工作表内容为空,它将只具有隐藏状态。(Ic2288b/200980998b/216693030

已知问题

  • androidx.compose.foundation:1.4.0-alpha03 更新到 androidx.compose.foundation:1.4.0-alpha04 时,您可能会遇到 java.lang.NoSuchFieldError 错误。此处是最初报告该问题的位置。已提交修复程序,并将在下一次 Compose 更新中提供。作为变通方法,请将您的 androidx.compose.materialandroidx.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
  • 合并了 ModalDrawerSwipeable API 的更改。DrawerStateanimateTo 已被 openclose 方法取代,并且偏移量现在可以为空。使用 requireOffset 来要求偏移量。(I3de9e
  • 添加了一个 Modifier API 来查询祖先滚动信息。(I2ba9db/203141462
  • Clickable 中使用,以在手势可能成为滚动事件时正确延迟按下交互。
  • 修复了在 Scrollable ViewGroup 内使用时,Clickables 未正确延迟波纹的问题。
  • 更新了抽屉和表单,以便在手势可能成为滚动事件的情况下正确延迟按下。

错误修复

  • 修复了如果刷新状态未更改为 true,则 PullRefreshIndicator 在调用 onRefresh 后可能会卡住的问题。(Ie2416b/248274004

依赖项更新

  • Compose UI 和 Compose Material 现在依赖于 Lifecycle 2.5.1。(I05ab0b/258038814

版本 1.4.0-alpha02

2022 年 11 月 9 日

androidx.compose.material:material-*:1.4.0-alpha02 已发布。版本 1.4.0-alpha02 包含以下提交。

API 更改

  • awaitFirstDownwaitForUpOrCancellation 现在接受 PointerEventPass 以获得更大的灵活性。(I7579ab/212091796
  • 在 Material 和 Material3 的 Text、TextFieldOutlinedTextField 中添加了 minLines 参数,允许根据行数设置组件的最小高度。(I4af1d
  • BasicText 和 BasicTextField 添加了 minLines 参数。它允许根据行数设置这些可组合项的最小高度(I24294b/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(),因为它允许事件在手势之间丢失。(Iffc3fb/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 更改

  • 向 Compose 添加下拉刷新组件(I29168)。
  • 将 RangeSlider 中的参数名称从 values 更改为 value(I3b79a)。

版本 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 中 AnimatedVisibilityFloatingActionButton 相关的问题(I3a0aeb/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 更改

  • LazyVerticalGridLazyHorizontalGrid 现在处于稳定状态。(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)
  • 添加了 TextFieldDecorationBoxOutlinedTextFieldDecorationBox。将它们与 BasicTextField 一起使用将帮助您根据 Material Design 文本字段构建自定义文本字段,但可以提供更多自定义选项。
  • 提供了一种调整文本字段中水平和垂直填充的方法。(I8c9f1, b/203764564, b/191543915, b/189971673, b/183136600, b/179882597, b/168003617)
  • 添加了 ComposableTargetComposableTargetMarkerComposableOpenTarget,允许在编译时报告可组合函数何时被调用以针对它并非设计为使用的应用器。

    在大多数情况下,注释可以由 Compose 编译器插件推断,因此直接使用这些注释的情况应该很少。无法推断的情况包括创建和使用自定义应用器、抽象可组合函数(例如接口方法)、可组合 Lambda 的字段或全局变量(局部变量和参数被推断),或使用 ComposeNode 或相关的可组合函数时。

    对于自定义应用器,调用 ComposeNodeReusableComposeNode 的可组合函数需要为该函数和任何可组合 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 包含以下提交。

错误修复

版本 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 标志。它可以通过构造函数设置,也可以通过将 ModalBottomSheetStateisSkipHalfExpanded 属性设置为 true 来在稍后更新。更新 isSkipHalfExpanded 的值会导致底部的重新组合。(I18b86b/186669820

版本 1.1

版本 1.1.1

2022 年 2 月 23 日

androidx.compose.material:material-*:1.1.1 已发布。 版本 1.1.1 包含这些提交。

错误修复

版本 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 包含这些提交。

错误修复

版本 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() 容器内,而不是始终延迟按下事件。(Ibefe0b/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,其中包含 TextFieldDropdownMenuIf60b2
  • 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 以考虑新最小大小时提供临时的应急方案。(I9b966b/149691127b/171509422
  • 添加了实验性的 TextFieldColorsWithIcons 接口,扩展了 TextFieldColors 以向 leadingColortrailingColor 提供 InteractionSource。这使得能够根据焦点状态修改 TextField 的外观。(I66923b/198402662

版本 1.1.0-alpha04

2021 年 9 月 15 日

androidx.compose.material:material-*:1.1.0-alpha04 已发布。 版本 1.1.0-alpha04 包含这些提交。

API 更改

  • 已弃用 performGestureGestureScope,它们已被 performTouchInputTouchInjectionScope 取代。(Ia5f3fb/190493367
  • SemanticsNode 添加了 touchBoundsInRoot,其中包含最小触摸目标大小,以便开发人员可以确保触摸目标满足辅助功能的最低要求。(I2e14bb/197751214

错误修复

  • 允许剪辑将触摸目标边界扩展到剪辑区域之外,以用于最小触摸目标。(I43e10b/171509422
  • 更新了 Divider 可组合项以尊重 Dp.Hairline 的厚度参数,以支持绘制单像素分隔符,而不管显示密度如何。(I16ffbb/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 以依赖 Kotlin 1.5.30。(I74545

API 更改

  • 添加了测试方法以获取裁剪后的边界。(I6b28e
  • 向 ViewConfiguration 添加了最小触摸目标大小,以便在语义和指针输入中使用,以确保辅助功能。(Ie861c

版本 1.1.0-alpha02

2021 年 8 月 18 日

androidx.compose.material:material-*:1.1.0-alpha02 已发布。 版本 1.1.0-alpha02 包含这些提交。

外部贡献

  • 修复了 SwipeableState 在滑动偏移量在锚点的舍入误差范围内的行为。(I03d39b/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 参数(Ie4fb0b/180311607)。
  • 将 BadgeBox 重命名为 BadgedBox,更改参数以接受 Badge 可组合项。添加了 Badge 组件,它是 BadgedBox 的典型徽章内容。(I639c6)。
  • 添加了 NavigationRail 组件,请参阅文档和示例以获取使用信息(I8de77)。

错误修复

  • 添加了一个底部对齐的 NavigationRail 示例和 Catalog 应用演示。(I3cffc)。
  • 对话框现在遵循平台大小行为。将 usePlatformDefaultWidth 设置为 false 以覆盖此行为。(Iffaedb/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 和 AGP 7.1 的下一个版本中修复。(b/194289155)。

版本 1.0.0-rc02

2021 年 7 月 14 日

androidx.compose.material:material-*:1.0.0-rc02 已发布。版本 1.0.0-rc02 包含这些提交。

错误修复

  • 对话框现在遵循平台大小行为。将 usePlatformDefaultWidth 设置为 false 以覆盖此行为。(Iffaedb/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)。
  • 对话框现在可以使用整个屏幕宽度。(I83929b/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 以能够自定义边框的形状(I8f39eb/181322957)。
  • TextOverflow 已更改为内联类。(I433af)。

错误修复

  • 当传递 Color.Unspecified 时,BottomDrawer、BackdropScaffold 和 ModalBottomSheetLayout 中的 Scrim 将消失(I2d899b/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> 是字符 HSP 中的一个或多个,以指示是否应将此方法标记为“热”、“启动”或“启动后”。

  • <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。(Ia8744b/183775620)。
    • 添加了一个新的 Card 重载,它处理点击事件以及其他可点击功能:指示、interactionSource、启用/禁用。无法将常规的不可点击 Card 与 Modifier.clickable 一起使用,因为 Card 在这些情况下不会裁剪波纹指示。
  • 行为破坏性更改:Surface 现在会消耗点击事件,使通过 Surface(Modifier.clickable) 添加的点击事件变为无效操作。请使用 Surface 的新实验性重载,该重载接受 onClick。(I73e6cb/183775620)。
    • 添加了一个新的 Surface 重载,它处理点击事件以及其他可点击功能:指示、interactionSource、启用/禁用。无法将常规的不可点击 Surface 与 Modifier.clickable 一起使用,因为 Surface 在这些情况下不会裁剪波纹指示。

API 更改

  • FabPosition 已从枚举转换为内联类,以支持将来可能的扩展(I030fb)。
  • 将枚举用法重构为内联类,以避免在添加新枚举值时出现详尽的 when 语句问题。(I2b5eb)。
  • 向可点击/可切换添加了点击超时,以防止在滚动/拖动期间显示波纹(Ia2704b/168524931)。

  • ContentDescription 和 Text semantics 属性不再是单个值,而是列表。这使得能够合并它们本身,而不是进行连接。还提供了更好的测试 API 来利用这些更改(Ica6bfb/184825850)。
  • Modifier.focusModifier() 已弃用,并替换为 Modifier.focusTarget()I6c860)。
  • FocusState 枚举替换为 FocusState 接口(Iccc1ab/187055290)。
  • 删除了 LocalRippleNativeRendering,因为现在基于 View 的波纹实现已稳定(I7fab3b/188569367)。

错误修复

  • Modifier.onGloballyPositioned() 已更改为报告修饰符链中此修饰符的坐标,而不是应用所有修饰符后的布局坐标。这意味着现在修饰符的顺序会影响报告的坐标。(Ieb67db/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 中使用扩展方法来支持路由。(I22bebb/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 的问题,请提交错误报告。(I902f8b/168777351b/183019123)。
  • 添加了 CollectionInfo 和 CollectionItemInfo 可访问性 API,允许为辅助功能服务标记集合及其项目(Id54efb/180479017)。
  • 添加了可访问性 API error,允许标记包含无效输入的节点(I12997b/180584804b/182142737)。

错误修复

  • 更新了 Compose Material 目录内嵌套的实现,来自:https://github.com/google/accompanist/pull/365。(I25dc3)。
  • 具有 weight(fill = false) 的 Row 和 Column 子项不再使父项填充整个可用的主轴空间。(Ied94db/186012444b/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 组件(I81114b/181656094)。
  • SoftwareKeyboardController 上的 hideSoftwareKeyboardshowSoftwareKeyboard 分别重命名为 hide()show()
    • 提供 LocalSoftwareKeyboardController 的完整 CompositionLocal 接口,允许设置它(尤其是在测试中很有用)(I579a6)。
  • 添加了 LiveRegion 可访问性 API。如果节点被标记为活动区域,辅助功能服务将自动通知用户其更改(Idcf6fb/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 的情况下调用 withFrameNanosRecomposer.runRecomposeAndApplyChanges 将抛出 IllegalStateException。(I4eb0d)。
  • 添加了一个新的 API LeadingIconTab,以支持在选项卡中显示图标和内联文本。(I23267)。

外部贡献

  • [by Jossi Wolf] BottomDrawer 现在包装了抽屉插槽的内容。BottomDrawer 在父项具有无限高度时不会抛出 IllegalStateException。如果底部抽屉小于其父项的 50%,它现在将打开到展开状态。已更新围绕 BottomDrawerStateModalBottomSheetLayoutState 的文档。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 接口。(I5951eb/168778053)。

错误修复

  • 强制执行对实验性 API 的公共使用的限制(I6aa29b/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 所需的生命周期和保存状态所有者所必需的。(I1d6fab/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 替换。(Iae869b/168778053)。
  • Switch、Checkbox 和 RadioButton 操作 lambda 现在可以为空。Checkbox-in-clickable-row 示例已更新为使用此功能。(If601bb/171819073)。
  • InteractionState 已替换为 [Mutable]InteractionSource
    • 接口负责发出/收集 Interaction 事件。
    • 不要将 interactionState = remember { InteractionState() } 传递给诸如 ButtonModifier.clickable() 之类的组件,而是使用 interactionSource = remember { MutableInteractionSource() }
    • 不要使用:Interaction.Pressed in interactionState,而应使用 InteractionSource 上的扩展函数,例如 InteractionSource.collectIsPressedAsState()。
    • 对于复杂用例,您可以使用 InteractionSource.interactions 来观察 Interactions 流。有关更多信息,请参阅 InteractionSource 文档和示例。
    • I85965b/152525426b/171913923b/171710801b/174852378)。
  • 在 CompositionLocals 中添加 AccessibilityMananger 接口和 LocalAccessibilityMananger(I53520)。

  • 移除了已弃用的 LayoutCoordinates 方法,使用函数代替属性来获取 positionInParent 和 boundsInParent (I580edb/169874631b/175142755)
  • Slider 现在支持启用/禁用状态 (I6d56bb/179793072)
  • 为来自低级文本组件(如 CoreTextField)的输入会话创建了新的 TextInputSession。(I8817fb/177662148)
  • 移除了 AnimationEndReason.Interrupted。如果动画被打断,将抛出 CancellationException。(I2cbbcb/179695417)
  • 移除了 @ExperimentalRippleApi 并将 RippleAlpha 更改为具有属性的类而不是接口。(I6df7c)
  • 添加了 TextFieldColors 接口来表示 TextField 和 OutlinedTextField 在不同状态下使用的不同颜色。对于默认实现,请参阅 TextFieldDefaults.textFieldColors 和 TextFieldDefaults.outlinedTextFieldColors。
  • 添加了 selectionGroup 修饰符,允许出于辅助功能目的标记 Tab 或 RadioButton 的集合 (Ie5c29)
  • 添加 LazyListState.animateScrollToItem

    此方法平滑滚动到列表中的特定项目。(I4bfd7)

  • ScrollableState.smoothScrollBy() 已重命名为 animateScrollBy() LazyListState.snapToItemIndex() 已重命名为 scrollToItem() ScrollState.smoothScrollTo() 已重命名为 animateScrollTo() (I35ded)

  • 现在对标记有 @ReadOnlyComposable 的任何可组合项进行编译时验证,以确保它们仅调用其他 @ReadOnlyComposables (I58961)

  • TargetAnimation API 已被移除。(If47d1b/177457083)

  • Modifier.verticalScroll()/horizontalScroll() 中的滚动位置现在使用 Int 表示 (I81298)

  • smoothScrollBy 和 scrollBy 方法的包已更改为 androidx.compose.foundation.gestures.* (I3f7c1b/175294473)

  • FlingConfig 已重命名为 FlingBehavior,现在允许自定义挂起动画而不是预定义的 Decays。(I02b86b/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。(Iff4a8b/175294473)

  • drawerState.open() 和 drawerState.close() 现在是挂起函数。使用 rememberCoroutineScope() 获取组合的范围以调用它们 (I16f60b/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 的文件类语义,这将破坏二进制兼容性,但不会破坏源代码兼容性,因此对于大多数用户来说应该不是问题。
    • (I99b7db/177245490)
  • Modifier.scrollable 已重新设计。现在它使用 Scrollable 接口而不是 ScrollableController 类 (I4f5a5b/174485541b/175294473)

  • Modifier.draggable 现在接受 DraggableState 而不是简单的 lambda。您可以通过 rememberDraggableState { delta -> } 创建状态以获得与之前相同的行为 (Ica70fb/175294473)

  • ZoomableController.smoothScaleBy 和 ZoomableController.stopAnimation 现在是挂起函数。(I7f970b/177457083)

  • 删除了一些以前已弃用的 API (Ice5dab/178633932)

  • 进行了以下 Material API 更改

    • 向 Top/BottomAppBar 添加了 contentPadding 参数,以允许自定义默认填充。
    • 重新排序 BackdropScaffold 中的参数,以遵循 API 指南,将必需参数放在可选参数之前。
    • 将 BottomNavigationItem 中的 icon 参数移动到 selectedonClick 之后。
    • 将 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 参数也更改为必需参数。(Ic1764b/152525426)

错误修复

  • 添加了新的 LocalSoftwareKeyboardController 组合本地 API 来替换 TextField 上以前的 SoftwareKeyboardController 接口。(I658b6b/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 (If0bbdb/179071523)
  • 为了更好地匹配 ImageBitmap 和 ImageVector 的命名约定,ImagePainter 已重命名为 BitmapPainter 以与 VectorPainter 并行。(Iba381b/174565889)
  • Animatable.snapTo 和 Animatable.stop 现在是挂起函数 (If4288)
  • ComponentActivity.setContent 已移动到 androidx.activity.compose.setContent,位于 androidx.activity:activity-compose 模块中。(Icf416)
  • 已从一些很少使用的类中删除了解构和 copy() 方法。(I26702b/178659281)
  • 使 ModalBottomSheetState 中的 halfExpand() 和 expand() 变为内部方法 (Ic914e)
  • 将 Indication#createInstance 更改为 @Composable,并将 LocalIndication 更改为包含 Indication,而不是 () -> Indication。(I5eeeab/157150564)
  • 将 AlertDialog 和 DropdownMenu 移动到目前仅限 Android 使用。向 DropdownMenu 添加了 PopupProperties 参数,以进一步配置底层的 Popup。(I9c443)
  • loadFontResource 已弃用。请改用 fontResource。imageResource、loadImageResource、vectorResource 和 loadVectorResource 已弃用。请改用 painterResource。(I6b809)

  • 从 DropdownMenu 中移除了 toggletoggleModifier 参数,并将 dropdownModifierdropdownOffsetdropdownContent 分别重命名为 modifieroffsetcontent。DropdownMenu 现在与 Popup 保持一致的行为,其中父布局用于菜单的位置。在大多数情况下,您可以将 toggle 移动到 DropdownMenu 的同级元素,并将两者都包装在 Box 中。有关此 API 用法的更多信息,请参阅文档中的更新示例。(I884fb
  • toIntPx() 已重命名为 roundToPx()。(I9b7e4b/173502290
  • IntBounds 已重命名为 IntRect,并且 API 已得到改进。(I1f6ff
  • 添加了展开和折叠语义操作。在 ModalBottomSheetState 中添加了 expand 和 halfExpand(Ib5064
  • Modifier.dragGestureFilter 已弃用。请改用 Modifier.pointerInput { detectDragGestures (...)}。或者,对于单轴拖动,请使用 Modifier.draggable(I0ba93b/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)) }Ib4c26b/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 包。(I1366eb/177338004

  • Saver、listSaver()、mapSaver()、autoSaver 已从 androidx.compose.runtime.savedinstancestate 移至 androidx.compose.runtime.saveable(I77fe6

  • RounderCornerShape、CutCornerShape 和 CornerBasedShape 上的参数已从 left/right 重命名为 start/end,以便支持形状在 rtl 方向上的自动镜像。引入了 AbsoluteRounderCornerShape 和 AbsoluteCutCornerShape 以用于不需要自动镜像的情况。(I61040b/152756983

  • 更改了 Tab 的 texticon 参数,以及 BottomNavigationItem 的 label 参数为可空,以更好地传达当这些参数提供/未提供时组件的行为,因为它会影响组件的大小和布局。如果您当前正在传递 emptyContent() 来表示没有文本/图标/标签,则应改用 null。(I57ed4

  • 将 contentColorFor 颜色参数重命名为 backgroundColor(I5bb67

  • 弃用 TabDefaults 并将其替换为 TabRowDefaults。(I0f189

  • 引入了 ColorMatrix API 用于修改源内容的 rgb 值。重构了 ColorFilter API 以成为一个接口并匹配 PathEffect 的实现。(Ica1e8

  • AnimatedValue/Float 现已弃用。请改用 Animatable。(I71345b/177457083

  • 添加 SemanticsProperties.PaneTitle API。(I20d5a

  • 向 Tab 和 BottomNavigationItem 添加了 enabled 参数,以防止它们可点击。将 BottomNavigationItem 更改为 RowScope.BottomNavigationItem 以更好地表达其 API 中的布局要求。(Id683d

  • tapGestureFilter、doubleTapGestureFilter、longPressGestureFilter 和 pressIndicaitonGestureFilter 已弃用。请改用 Modifier.clickable 或 Modifier.pointerInput 以及 detectTapGestures 函数。(I6baf9b/175294473

  • 向 Shape 的 createOutline 添加 layoutDirection 参数。这允许创建布局方向感知的形状。(I57c20b/152756983

  • 删除了 Recomposer.current()。[抽象]ComposeView 现在默认使用延迟创建的、窗口范围的 Recomposers,这些 Recomposers 由窗口的 ViewTreeLifecycleOwner 驱动。当主机 Lifecycle 停止时,重新组合和基于 withFrameNanos 的动画滴答会被暂停。(I38e11

错误修复

  • Icon 现在将按比例放大以适应其大小,并尊重应用于它的 size 修饰符。例如,Icon(.., modifier = Modifier.size(50.dp) 现在将在 50x50dp 的空间中绘制。(Ib2ba9b/178796190

版本 1.0.0-alpha11

2021 年 1 月 28 日

androidx.compose.material:material-*:1.0.0-alpha11 已发布。版本 1.0.0-alpha11 包含这些提交。

API 更改

  • 提升一些 Material API,使其不再为 @ExperimentalI5d20e
  • 已向 Image 和 Icon 添加内容描述参数。它用于向辅助功能服务提供描述(I2ac4c
  • 将 Material 有状态参数接口更改为具有返回 State<T> 的 @Composable 函数。添加 Animatable.asState() 以便于将 Animatable 转换为 State。还将 animateElevation 更改为 Animatable 上的挂起扩展。(If613c
  • Snackbar、SnackbarHost、SnackbarHostState 不再为 @ExperimentalMaterialAPIId1fb5
  • 更改 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。(I9420bb/173387208
  • 弃用非挂起 scrollBy,删除非挂起 scrollTo

    我们现在建议使用挂起函数来控制滚动并等待滚动完成。作为此转换的一部分,我们正在弃用和/或删除这些函数的非挂起版本。(Ie9ced

  • 弃用非挂起 smoothScrollBy 我们现在建议使用挂起函数来控制滚动并等待滚动完成。作为此转换的一部分,我们正在弃用这些函数的非挂起版本。(I12880

  • 引入了 ComposeContentTestRule,它扩展了 ComposeTestRule 并定义了 setContent,后者已从 ComposeTestRule 中删除。添加了一个工厂方法 createEmptyComposeRule(),它返回一个 ComposeTestRule 并且不会为您启动 Activity。当您希望在测试期间启动您的 Activity 时使用此方法,例如使用 ActivityScenario.launchI9d782b/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)

  • invalidatecompositionReference() 现已弃用,推荐使用 currentRecomposeScoperememberCompositionReference 代替。(I583a8)

  • PopupPositionProvider 更改为使用相对于窗口的坐标,而不是全局坐标。将 parentGlobalBounds 重命名为 anchorBounds,并将 windowGlobalBounds 更改为 windowSize: IntSize (I2994a)

  • DurationUptime 将被替换为 Long 毫秒,此步骤消除了指针输入对这些类的依赖。(Ia33b2, b/175142755, b/177420019)

  • 接受 FlingConfigAnimatedFloat.fling 已被移除。请改用 suspend Animatable.animateDecay。(I4659b, b/177457083)

  • clickabletoggleableselectable 现在可以在组合体外部创建 (I0a130, b/172938345, b/175294473)

  • Easing 已更改为函数式接口 (Ib14e5)

  • ScrollableColumn/Row 已弃用。当您有大量滚动内容时,使用 ScrollableColumn 的效率低于 LazyColumn,因为使用 LazyColumn 我们只能组合/测量/绘制可见元素。为了防止用户使用低效的方式,我们决定弃用 ScrollableColumnScrollableRow,并推荐使用 LazyColumnLazyRow。用户仍然可以决定他们不需要懒加载行为,并直接使用修饰符,例如: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 并标记为 @ExperimentalComposeUiApiAccessibilityRangeInfo 重命名为 ProgressBarRangeInfostateDescriptionRange 重命名为 progressBarRangeInfoAccessibilityScrollState 重命名为 ScrollAxisRangehorizontalAccessibilityScrollState 重命名为 horizontalScrollAxisRangeverticalAccessibilityScrollState 重命名为 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)
  • FlowRowFlowColumn 已弃用。请改用自定义布局。(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 作为参数添加到 clickableselectabletoggleable 的 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.onFocusChangedModifier.onFocusEvent (I30f17, b/168511863, b/168511484)

  • 弃用 LazyColumnForLazyRowForLazyColumnForIndexedLazyRowForIndexed。请改用 LazyColumnLazyRow (I5b48c)

  • Dp.VectorConverterPosition.VectorConverter 等移动到 animation-core,并弃用旧的 VectorConveters (If0c4b)

  • 自动填充 API 现在是实验性 API,需要选择加入 (I0a1ec)

  • 添加解构声明以创建 FocusRequester 实例 (I35d84, b/174817008)

  • accessibilityLabel 已重命名为 contentDescriptionaccessibilityValue 已重命名为 stateDescription。(I250f2)

  • 用于创建 InfiniteRepeatableSpec 的新的 infiniteRepeatable 函数 (I668e5)

  • 根据 Material 规范略微更改了 DropdownMenus 的定位行为。(I34c72, b/168594123)

  • 添加了对 TextFieldsInteractionState 支持。(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-alpha08androidx.compose.material:material-icons-core:1.0.0-alpha08androidx.compose.material:material-icons-extended:1.0.0-alpha08 已发布。 版本 1.0.0-alpha08 包含以下提交。

API 更改

  • MaterialTheme 现在为选择句柄和选择背景设置正确的颜色。非 Material 应用可以手动使用 AmbientTextSelectionColors 来自定义用于选择的颜色。(I1e6f4b/139320372b/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 以使文本字段成为一个水平可滚动的单行。(I57004b/168187755)

错误修复

  • 添加语义操作 Dismiss (I2b706)
  • 将 DrawModifier API 从 androidx.compose.ui 包移动到 androidx.compose.ui.draw 包。创建 DrawModifierDeprecated.kt 文件以包含类型别名/辅助方法,以帮助从已弃用的 API 迁移到当前 API。(Id6044b/173834241)
  • 将 Modifier.drawLayer 重命名为 Modifier.graphicsLayer 还根据 API 反馈将相关类更新为 GraphicsLayer。(I0bd29b/173834241)
  • <T> 已从 SubcomposeLayout 声明中删除。您现在可以在不指定类型的情况下使用它。(Ib60c8)
  • 添加了 Modifier.scale/rotate API 作为 drawLayer 的便利功能。
    • Modifier.drawOpacity 重命名为 Modifier.alpha
    • Modifier.drawShadow 重命名为 Modifier.shadow (I264cab/173208140)
  • Box 的对齐参数已重命名为 contentAlignment。(I2c957)
  • offsetPx 修饰符已重命名为 offset。它们现在采用 lambda 参数而不是 State。(Ic3021b/173594846)
  • 引入了 SweepGradientShader 和 SweepGradientBrush API。(Ia22c1)
  • 添加了 lint 检查以检查 Composable 函数中的 Modifier 参数。此 lint 检查检查参数的命名、返回类型、默认值和顺序,以确保与 Compose 指南一致。(If493b)
  • 更新了 TextFieldValue API
    • 使 TextFieldValue.composition 只读
    • 删除了针对无效选择范围抛出的异常 (I4a675b/172239032)
  • 添加了一个新的 Modifier.drawLayer() 重载。它在新的 GraphicsLayerScope 上采用 lambda 块,您可以在其中以一种允许在状态发生变化时跳过重新组合和重新布局的方式定义图层参数。DrawLayerModifier 现在是内部的,准备将其逻辑迁移到 LayoutModifier 的 placeable.placeWithLayer() 方法 (I15e9fb/173030831)
  • 弃用了以 Ambient 作为后缀命名的 Ambients,并用以 Ambient 为前缀的新属性替换它们,遵循其他 Ambients 和 Compose API 指南。(I33440)
  • 添加了 lint 检查以检查 Modifier 工厂在内部使用 androidx.compose.ui.composed {},而不是标记为 @Composable。(I3c4bc)
  • 语义参数 mergeAllDescendants 已重命名为 mergeDescendants。(Ib6250)
  • 测试中的时间控制(TestAnimationClock 及其用法)现在是实验性的 (I6ef86b/171378521)
  • 删除旧的 ui-test 模块及其存根 (I3a7cb)
  • TextUnit.Inherit 重命名为 TextUnit.Unspecified 以与其他单位保持一致。(Ifce19)
  • Alignment 接口已更新并使其成为函数式。(I46a07b/172311734)
  • id 已重命名为 layoutId 以用于 LayoutIdParentData。Measurable.id 已重命名为 Measurable.layoutId。(Iadbcbb/172449643)

版本 1.0.0-alpha07

2020 年 11 月 11 日

androidx.compose.material:material:1.0.0-alpha07androidx.compose.material:material-icons-core:1.0.0-alpha07androidx.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。(Idf03eb/159017896)
  • 添加 androidx.compose.material.AmbientContentColor 以替换 androidx.compose.foundation.AmbientContentColor (I84f7bb/172067770)
  • 添加 androidx.compose.material.Text 以替换 androidx.compose.foundation.Text 作为高级、可主题化的文本组件。对于不使用主题中的颜色/文本样式的基本文本组件,请使用 BasicText。(Ie6ae0)
  • 在 TextFields 中添加了 maxLines (Ib2a5b)
  • 更新 TextFields 以接受 KeyboardOptions (Ida7f3)
  • Surface 现在在计算高程叠加层时使用绝对(总)高程,因此嵌套在另一个 Surface 中的 Surface 将使用组合高程绘制叠加层。(I7bd2bb/171031040)

错误修复

  • captureToBitmap 已移动到 captureToImage。(I86385)
  • 基础 AmbientTextStyle、ProvideTextStyle 和 AmbientContentColor 已弃用。改为使用 Material 库中提供的新版本。对于非 Material 应用程序,您应该改为创建您自己的设计系统特定主题环境,这些环境可以在您自己的组件中使用。(I74accb/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 忽略着色会导致使用透明颜色着色,最终导致没有任何内容呈现。(I049e2b/171624632)
  • relativePaddingFrom 已重命名为 paddingFrom。添加了 paddingFromBaseline 修饰符,作为指定从布局边界到文本基线的距离的便利功能。(I0440ab/170633813)

  • 为了与 SideEffect 和 DisposableEffect API 保持一致,LaunchedTask 重命名为 LaunchedEffect。为了鼓励最佳实践,不允许使用没有主题参数的 LaunchedEffect。(Ifd3d4
  • MeasureResult 已移出 MeasureScope。(Ibf96db/171184002
  • 一些与布局相关的符号已从 androidx.compose.ui 移动到 androidx.compose.layout.ui。(I0fa98b/170475424

版本 1.0.0-alpha06

2020 年 10 月 28 日

androidx.compose.material:material:1.0.0-alpha06androidx.compose.material:material-icons-core:1.0.0-alpha06androidx.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()(I70417b/170623932
  • 弃用 VectorPainter,转而使用 rememberVectorPainter,以更好地表明可组合 API 在内部利用“remember”在组合之间持久化数据。(Ifda43
  • 在 ComposeTestRule 中启用过渡;从 ComposeTestRule 中删除启用闪烁光标的选项。(If0de3
  • 在 CoreTextField 中添加了单行键盘选项(I72e6d
  • 将 Radius API 重命名为 CornerRadius,以更好地表达它在 Compose 中的使用方式。更新文档以指示负角半径被钳制为零。(I130c7b/168762961
  • 重构 DrawScope 和 ContentDrawScope 以成为接口而不是抽象类
    • 创建 DrawScope 的 CanvasDrawScope 实现
    • 重构 DrawScope 的实现以使用 CanvasScope 代替
    • 创建 DrawContext 以包装 DrawScope 的依赖项
    • 删除 DrawScope 上已弃用的方法(I56f5e
  • Box 已成为内联函数。(Ibce0cb/155056091

版本 1.0.0-alpha05

2020 年 10 月 14 日

androidx.compose.material:material:1.0.0-alpha05androidx.compose.material:material-icons-core:1.0.0-alpha05androidx.compose.material:material-icons-extended:1.0.0-alpha05 已发布。版本 1.0.0-alpha05 包含这些提交。

API 更改

  • 弹出窗口和对话框现在从父窗口继承 FLAG_SECURE。还添加了显式配置此选项的选项(I64966b/143778148b/143778149
  • Modifier.swipeable 现在默认情况下具有 56.dp 状态阈值(Iab825b/168610267
  • 所有脚手架状态均标记为 @Stable。ScaffoldState 中的 drawerGesturesEnabled 已移至 Scaffold 本身。(I36645b/168297016
  • 从 Scaffold lambda 参数中删除可空类型,您可以使用 emptyContent() 来表示给定参数的无内容。(I2b318b/157633857b/158551084
  • 弃用 contentColor() 和 currentTextStyle() API,并分别用 AmbientContentColor 和 AmbientTextStyle 环境替换它们。您可以通过在环境属性上使用 .current 来访问当前值,就像任何其他环境一样。进行此更改是为了保持一致性并避免有多种方法来完成同一件事。此外,还重命名了一些环境属性以更好地描述其目的,如下所示

    • ContentColorAmbient -> AmbientContentColor
    • TextStyleAmbient -> AmbientTextStyle
    • IndicationAmbient -> AmbientIndication
    • EmphasisAmbient -> AmbientEmphasisLevels
    • RippleThemeAmbient -> AmbientRippleTheme(I37b6d
  • 添加 AmbientElevationOverlay,允许自定义/禁用应用于深色主题中表面的默认海拔高度覆盖。(I5b74d

错误修复

  • 作为标准化内联类的哨兵值的一部分,将 Color.Unset 重命名为 Color.Unspecified 以与其他内联类保持一致(I97611b/169797763
  • 引入了 TextOverflow.None。当溢出为 None 时,Text 将不再处理溢出,它会将其实际大小报告给 LayoutNode。(I175c9b/158830170
  • launchInComposition 重命名为 LaunchedTask 以匹配 Compose API 指南(I99a8e
  • OnPositionedModifier 重命名为 OnGloballyPositionedModifier,onPositioned() 重命名为 onGloballyPositioned()。(I587e8b/169083903

版本 1.0.0-alpha04

2020 年 10 月 1 日

androidx.compose.material:material:1.0.0-alpha04androidx.compose.material:material-icons-core:1.0.0-alpha04androidx.compose.material:material-icons-extended:1.0.0-alpha04 已发布。版本 1.0.0-alpha04 包含这些提交。

API 更改

  • 在有状态的 Material 组件中公开 InteractionState 参数,以允许提升状态并读取/控制状态。(Iaca5fb/168025711b/167164434
  • 更改 RadioButton 和 TriStateCheckbox 上的 *color 参数以允许完全自定义每个状态下使用的颜色,以及在需要时更改颜色在状态之间动画的方式。有关更多信息,请参阅 CheckboxConstants 和 RadioButtonConstants 中新的 animateDefault* 颜色函数。(I1c532
  • 将 rememberBackdropState 重命名为 rememberBackdropScaffoldState 并为动画时钟添加了另一个参数。将 BackdropScaffold 的参数 backdropScaffoldState 重命名为 scaffoldState。将 BackdropConstants 重命名为 BackdropScaffoldConstants。(Ib644d
  • 添加了实验性的 BottomSheetScaffold 组件。(Ie02f0b/148996320
  • 添加了实验性的 ModalBottomSheetLayout 组件。(Ic209eb/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 扩展函数迁移为属性
    • I8f5c7b/168762961
  • foundation.Box 已弃用。请改用 foundation.layout.Box。(Ie5950b/167680279
  • Stack 已重命名为 Box。先前存在的 Box 将被弃用,转而使用 compose.foundation.layout 中的新 Box。新 Box 的行为是在它有多个子项时将子项一个叠放在另一个之上——这与之前的 Box 不同,之前的 Box 的行为类似于 Column。(I94893b/167680279
  • Box 装饰参数已弃用。如果您想在您的框上添加装饰/填充,请改用修饰符(Modifier.background、Modifier.border、Modifier.padding)(Ibae92b/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-alpha03androidx.compose.material:material-icons-core:1.0.0-alpha03androidx.compose.material:material-icons-extended:1.0.0-alpha03 已发布。 版本 1.0.0-alpha03 包含这些提交。

API 更改

  • BottomNavigationItemonSelect 参数重命名为 onClick (I91925, b/161809324)
  • 将 InteractionState 参数添加到 BottomNavigationItem 和 Tab,允许提升此状态并调整组件在不同状态下的显示方式。(Ia3e9e, b/168025711)
  • 删除了按钮的 disabledBackgroundColordisabledContentColor 参数。您应该改用 ButtonConstants 中的新默认颜色函数。如果您已经显式设置了 contentColor/backgroundColor,则应改用这些默认函数并自定义某些/所有参数,以避免覆盖启用/禁用状态的颜色。(If9b52)
  • 文本字段的背景颜色不再隐式应用透明度 alpha。相反,通过 backgroundColor 参数提供的任何颜色都将直接应用。(Iecee9, b/167951441)
  • InnerPadding 已重命名为 PaddingValues。(I195f1, b/167389171)
  • Modifier.swipeable 中的参数 resistanceFactorAtMinresistanceFactorAtMax 已替换为单个 resistance 参数。在 SwipeableConstants 中添加了一个新的 defaultResistanceConfig 方法。(I54238)
  • 为 Button 和 FloatingActionButton 添加了动画状态提升支持。提升现在在默认状态和按下状态之间进行动画切换。要自定义状态之间的提升,请使用 ButtonConstants.defaultAnimatedElevation()FloatingActionButtonConstants.defaultAnimatedElevation(),而不是在所有情况下都设置一个扁平的 Dp 值。(I37925)
  • Label 成为 TextField 和 OutlinedTextField 中的可选参数 (I267f6, b/162234081)

错误修复

  • 诸如 onNodewaitForIdle 之类的全局测试函数现已弃用,请迁移到在 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)
  • createAndroidComposeRuleAndroidInputDispatcherandroidx.ui.test.android 移动到 androidx.ui.test (Idef08, b/164060572)

版本 1.0.0-alpha02

2020 年 9 月 2 日

androidx.compose.material:material:1.0.0-alpha02androidx.compose.material:material-icons-core:1.0.0-alpha02androidx.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-alpha01androidx.compose.material:material-icons-core:1.0.0-alpha01androidx.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-dev17androidx.compose.material:material-icons-core:0.1.0-dev17androidx.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 现在可以自定义背景色和内容颜色了(I238f2b/161804381
  • 在抽屉(Drawer)中添加了 `modifier`、`backgroundColor`、`contentColor` 和 `scrimColor` 等自定义参数(I23655b/161804378)。
  • 为了提高清晰度,state { ... } 可组合函数已被弃用,建议使用显式调用 remember { mutableStateOf(...) } 来替代。这减少了状态管理的整体 API 表面积和概念数量,并且与类属性委托的 by mutableStateOf() 模式相匹配。(Ia5727
  • 按钮的 `padding` 参数已重命名为 `contentPadding`(Id252eb/161809394)。
  • 添加了一个实验性的材质组件 `SwipeToDismiss`。(I129e5

错误修复

  • 已移除 onChildPositionedOnChildPositionedModifier。开发者应该在子布局上使用 onPositionedOnPositionedModifier 来代替。(I4522eb/162109766
  • 在 `SemanticsPropertyKey` 中添加了 `mergePolicy` lambda 表达式。这可以用来定义一个自定义策略,用于 `mergeAllDescendants` 语义合并。默认策略是如果父级值已存在,则使用父级值,否则使用子级值。(Iaf6c4b/161979921
  • `IntSize` 现在是一个内联类(I2bf42
  • PlacementScope.placeAbsolute() 已重命名为 PlacementScope.place(),之前的 PlacementScope.place() 已重命名为 PlacementScope.placeRelative()。因此,PlacementScope.place() 方法将不再自动在从右到左的上下文中镜像位置。如果需要此功能,请改用 PlacementScope.placeRelative()。(I873acb/162916675
  • 已弃用 `PxBounds`,建议使用 `Rect` 代替。所有使用 `PxBounds` 的地方都已更新为 `rect`,并添加了适当的弃用/替换注释以帮助迁移。(I37038b/162627058
  • 将 `RRect` 重命名为 `RoundRect`,以更好地符合 Compose 的命名模式。创建了与 `RRect` 类似的函数构造器,并弃用了 `RRect` 函数构造器(I5d325

版本 0.1.0-dev16

2020 年 8 月 5 日

androidx.compose.material:material:0.1.0-dev16androidx.compose.material:material-icons-core:0.1.0-dev16androidx.compose.material:material-icons-extended:0.1.0-dev16 已发布。版本 0.1.0-dev16 包含这些提交。

API 更改

  • `Colors` 现在是一个最终类,而不是一个接口。您不应该扩展并提供自定义实现,而应该为您的自定义主题对象创建一个新的环境,并在您的组件中通过新的环境访问主题对象,类似于 `MaterialTheme` 在内部的工作方式。(Ibae84
  • 将 `ColorPalette` 重命名为 `Colors`,以更好地映射到材质颜色系统并消除 `ColorPalette` 是一个“通用”主题对象而不是材质颜色系统的特定实现的混淆。此外,将 `lightColorPalette` 和 `darkColorPalette` 分别重命名为 `lightColors` 和 `darkColors`。(I9e976b/161812111
  • 将 `BottomNavigationItem` 的 text 参数重命名为 labelonSelected 重命名为 onSelectactiveColor 重命名为 selectedContentColorinactiveColor 重命名为 unselectedContentColor,并更新参数顺序以符合指南。(Icb605b/161809324
  • Modifier.stateDraggable 已完全重做并重命名为 `Modifier.swipeable`。引入了新的 `SwipeableState` 类,并且 `DrawerState` 和 `BottomDrawerState` 已重构为继承自它。[Modal/Bottom]DrawerLayout 不再接受 `onStateChange` 参数。(I72332b/148023068
  • `foundation.shape.corner` 包已扁平化到 `foundation.share`(I46491b/161887429
  • 添加了 `ExperimentalMaterialApi` 注解。`RippleTheme` 被标记为实验性(Ic5fa0b/161784800
  • `Material FilledTextField` 已重命名为 `TextField`,基础 `TextField` 已重命名为 `BaseTextField`,以便更容易发现和使用最简单的所需 API。(Ia6242b/155482676

错误修复

  • `OnChildPositioned` 已被弃用。请改用子元素上的 `OnPositioned`。(I87f95b/162109766
  • 解决广泛的 API 修复问题(I077bc
    1. 移除未使用的 `OffsetBase` 接口
    2. 使 `Offset` 和 `IntOffset` 类具有统一的 API 表面积
    3. 将 `IntOffset.Origin` 重命名为 `IntOffset.Zero`,以与 `Offset` API 保持一致
    4. 将 `nativeCanvas` 方法从 `Canvas` 接口中移出,以便使用者可以创建自己的 `Canvas` 实例
    5. 创建存根 `EmptyCanvas` 类,将 `DrawScope` 重构为非空参数,而不是 `lateinit`,并确保字段的非空性
    6. 将 `ClipOp` 枚举重命名为 PascalCase
    7. 将 `FilterQuality` 枚举重命名为 PascalCase
    8. 将 `StrokeJoin` 枚举重命名为 PascalCase
    9. 将 `PointMode` 枚举重命名为 PascalCase
    10. 将 `PaintingStyle` 枚举重命名为 PascalCase
    11. 将 `PathFillType` 枚举重命名为 PascalCase
    12. 将 `StrokeCap` 枚举重命名为 PascalCase
    13. 更新 `DrawCache` 实现,不再使用 `lateinit` 参数
    14. 更新 `DrawScope`,不再对 `fillPaint` 和 `strokePaint` 内部参数使用惰性委托
    15. 更新 `Image` 可组合函数,避免使用 `Box` 以减少开销
    16. 更新 `Outline` 类,使其具有 `@Immutable` 注解
    17. 更新 `PathNode`,使其每个路径指令都具有 `@Immutable` 注解
    18. 更新矢量子组合,删除冗余的相等性条件检查,因为 Compose 已经处理了它们
    19. 已弃用 `Rect` 的伴随构造器方法,建议使用函数构造器代替
    20. 更新 `Brush` 类和函数构造器,使其具有 `@Immutable` 和 `@Stable` API
    21. 更新 `VertexMode` 枚举为 PascalCase
    22. 更新 `DrawScope` 的 `selectPaint` 方法,如果笔刷参数已更改,则有条件地覆盖笔刷上的笔触参数
    23. 更新 `Size` 以添加解构 API,将 `UnspecifiedSize` 重命名为 `Unspecified` 并删除未使用的的方法
  • 将对话框移动到 UI(I47fa6
  • 已移除 SemanticsNodeInteraction.performPartialGesture。请改用 SemanticsNodeInteraction.performGesture。(Id9b62
  • SemanticsNodeInteraction.getBoundsInRoot() 重命名为 SemanticsNodeInteraction.getUnclippedBoundsInRoot()Icafdfb/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,这会破坏链并难以阅读(Iedd58b/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-dev15androidx.compose.material:material-icons-core:0.1.0-dev15androidx.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 }
     )
    }
    

    (I409e8b/152050010b/146362815b/146342522b/143413369b/135715219b/143263925b/139653744)

  • 文本字段中的 onFocusChange 回调已重命名为 onFocusChanged (Ida4a1)

  • 在 stateDraggable 中添加了 thresholds 参数以指定锚点之间的阈值。这用于在底部抽屉中设置 56dp 的阈值。此外,BottomDrawerLayout 现在使用单独的 BottomDrawerState 枚举。(I533fa)

  • 删除了之前已弃用的 Modifier.ripple。Clickable 现在使用 ripple 作为默认指示(如果您的应用程序中设置了 MaterialTheme {}),因此在大多数情况下,您只需使用 clickable 即可免费获得 ripple 指示。如果您需要自定义 ripple 的颜色/大小/边界参数,您可以手动创建一个 RippleIndication 并将其作为 indication 参数传递给 clickable。(I663b2b/155375067)

  • 删除了已弃用的 FilledTextField 可组合项的覆盖 (I7f8f8)

  • 将 Button 对象(包含 Button 函数使用的默认值)重命名为 ButtonConstants (I7c5f7b/159687878)

  • Button 的内容插槽现在表现为 Row(当您需要在文本旁边添加图标时很有用,请参阅 Button 上的示例了解如何编写它)(I0ff10b/158677863)

  • RadioGroup 和 RadioGroupItem 已弃用。使用 Box 以及 Modifier.selectable、Row 和 Column 根据您的设计创建合适的 radioButton 选择集 (I7f5cfb/149528535)

  • 添加了 Material Outlined Textfield (I1a518)

  • androidx.ui.foundation.TextFieldValue 和 androidx.ui.input.EditorValue 已弃用。使用该类型的 TextField、FilledTextField 和 CoreTextField 可组合项也已弃用。请改用 androidx.ui.input.TextFieldValue (I4066db/155211005)

  • TabRow.TabPosition 不包含以 Dp 表示的位置,也不包含以 IntPx 表示的位置 (I34a07b/158577776)

  • 将 IntPx 的用法替换为 Int。将 IntPxPosition 替换为 IntOffset。将 IntPxSize 替换为 IntSize。(Ib7b44)

  • 为了整合用于表示大小信息的类的数量,标准化使用 Size 类而不是 PxSize。这提供了内联类的优势,可以利用 long 打包 2 个浮点值来表示以浮点数表示的宽度和高度。(Ic0191)

  • 弃用 Modifier.ripple。Clickable 现在使用 ripple 作为默认指示(如果您的应用程序中设置了 MaterialTheme {}),因此在大多数情况下,您只需使用 clickable 即可免费获得 ripple 指示。如果您需要自定义 ripple 的颜色/大小/边界参数,您可以手动创建一个 RippleIndication 并将其作为 indication 参数传递给 clickable。(I101cdb/155375067)

  • Scaffold API 已重新设计:一些参数更改了名称,添加了新参数以实现更好的自定义。添加了 getter 以查询 Fab、TopBar 和 BottomBar 的大小 (I0e7ce)

  • 在 ui-material 中添加了 DropdownMenu 组件,这是一个 Material Design 菜单实现。(I9bb3d)

  • 允许使用 SoftwareKeyboardController 手动显示/隐藏软件键盘 (Ifb9d6b/155427736)

  • Modifier.indication 已添加到 foundation 包中。使用它在自定义的可交互元素上显示按下/拖动/其他指示 (I8425fb/155287131)

  • 合并了 CanvasScope 实现,因此现在只有 DrawScope 和 ContentDrawScope 将 CanvasScope 重命名为 DrawScope。更新 DrawScope 以实现 Density 接口并提供 LayoutDirection 删除 ContentDrawScope 中的 DrawScope 子类 Painter 和 PainterModifier 已更新为不再自行维护 RTL 属性,因为 DrawScope 已在无需手动提供的情况下提供了此属性 (I1798e)

  • 将 Emphasis.emphasize() 重命名为 Emphasis.applyEmphasis() (Iceebe)

  • 禁用的按钮现在在视觉上遵循 Material Design 规范 (I47dcbb/155076924)

  • FilledTextField 获得了 ime 操作、视觉转换和键盘类型支持 (I1f9cfb/155075201)

  • 向 CircularProgressIndicator 添加了 strokeWidth 参数以自定义笔划大小。要更改 LinearProgressIndicator 的笔划大小(高度),您可以使用 Modifier.preferredHeight() 或其他大小修饰符。(Icea16b/154919081)

  • 向 CircularProgressIndicator 添加了 strokeWidth 参数以自定义笔划大小。要更改 LinearProgressIndicator 的笔划大小(高度),您可以使用 Modifier.preferredHeight() 或其他大小修饰符。(Icea16b/154919081)

  • 添加了用于 FilledTextField 中尾随和前导图标以及错误状态处理的插槽 API (Ic12e0)

  • FAB 和 Extended FAB 的默认颜色已更改为 MaterialTheme.colors.secondary。(I3b9b9b/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()) (Ie5200b/151331852b/150060763)

  • Surface 和 Card 已从 androidx.ui.material.surface 移动到 androidx.ui.material (I88a6db/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 以接受 texticon Lambda 表达式(Ia057e

  • 添加了 BottomNavigation 组件,有关用法信息,请参阅文档和示例(I731a0

  • 添加了 Icon、IconButton 和 IconToggleButton,并删除了 AppBarIcon。您可以直接用 IconButton 替换现有 AppBarIcon 的用法,它们现在将具有正确的触摸目标。有关用法信息,请参阅示例,并参阅 Icons 以获取您可以直接与这些组件一起使用的提供的 Material Icons。(I96849

  • 用不同的函数替换了 ButtonStyle 并删除了文本(字符串)重载。有关用法信息,请参阅更新后的示例。(If63abb/146478620b/146482131

  • Border 修饰符重命名为 DrawBorderI8ffcc

  • LayoutCoordinates 不再具有 position 属性。在考虑 LayoutModifiers、旋转或缩放时,position 属性没有意义。相反,开发人员应使用 parentCoordinates 和 childToLocal() 来计算从一个 LayoutCoordinate 到另一个 LayoutCoordinate 的变换。

    LayoutCoordinates 使用 IntPxSize 作为 size 属性,而不是 PxSize。布局使用整数像素大小进行布局,因此所有布局大小都应使用整数而不是浮点数。(I9367b

  • 对环境 API 进行了重大更改。有关详细信息,请参阅日志和 Ambient<T> 文档(I4c7eeb/143769776

  • 已添加 Scaffold 材料组件。Scaffold 实现(I7731b

  • 用 Border 修饰符替换了 DrawBorder(Id335a

错误修复

  • FocusModifier 已弃用,转而使用 Modifier.focus、Modifier.focusRequester、Modifier.focusObserver。FocusState 和 FocusDetailedState 已弃用,转而使用 FocusState2(I46919b/160822875b/160922136
  • VerticalScroller 和 HoriziontalScroller 已弃用。使用 ScrollableColumn 和 ScrollableRow 获取与 Column/Row 行为和参数内置的体验,或者在您自己的元素上使用 Modifier.verticalScroll 和 Modifier.horizontalScroll。类似地,ScrollerPosition 已弃用,转而使用 ScrollState'(I400ceb/157225838b/149460415b/154105299
  • Modifier.draggable 和 Modifier.scrollable API 已重新设计。DragDirection 已删除,转而使用 Orientation。可滚动所需的 State 已简化。ScrollableState 已重命名为 ScrollableController(Iab63cb/149460415
  • runOnIdleCompose 重命名为 runOnIdleI83607
  • 单值语义属性现在使用调用样式。例如,“semantics { hidden = true }”现在写成:“semantics { hidden() }”。(Ic1afdb/145951226b/145955412
  • 几个测试 API 已重命名,使其更直观。所有 findXYZ API 均已重命名为 onNodeXYZ。所有 doXYZ API 均已重命名为 performXYZ。(I7f164
  • Transition API 已更改为返回 TransitionState,而不是将 TransitionState 传递给子项。这使得 API 与 animate() API 更一致。(I24e38
  • 已添加 IntBounds 单位类,表示来自布局的整数像素边界。PopupPositionProvider 的 API 已更新为使用它。(I0d8d0b/159596546
  • 已向测试查找器添加了一个新的可选标志 useUnmergedTree。(I2ce48
  • 删除了过时的尺寸测试 API。(Iba0a0
  • 删除了包装 NativeShader 预期类的 Shader 内联类。将 NativeShader 重命名为 Shader。包装的 Shader 内联类没有为 API 表面添加任何有价值的内容,并且是一个内联类,因此请直接使用 NativeShader 类。(I25e4d
  • 弹出窗口、对话框和菜单现在继承上下文 MaterialTheme(Ia3665b/156527485
  • Material DropdownMenu 现在可以滚动。(Ide699
  • 从 Layout() 函数的测量块中删除了布局方向参数。但是,可以通过测量范围对象在回调中获得布局方向(Ic7d9d
  • 在顶级 API 中使用 AnimationSpec 而不是 AnimationBuilder 以阐明静态动画规范的概念 -通过删除创建 AnimationSpec(如 tween、spring)的 Lambda 表达式要求来改进转换 DSL。它们改为直接使用构造函数参数。-改进 AnimationSpec 的整体易用性,打开构造函数而不是依赖构建器 -将 KeyFrames 和 Tween 的持续时间和延迟更改为 Int。这消除了不必要的类型转换和方法重载(以支持 Long 和 Int)。(Ica0b4
  • enabled 设置为 false 时,Switch 现在显示为禁用状态(If4624b/155941869b/159331694
  • Modifier.tag 已重命名为 Modifier.layoutId,以避免与 Modifier.testTag 混淆。(I995f0
  • Placeable#get(AlignmentLine) 返回的对齐线 Int 位置现在不为空。如果查询的对齐线丢失,将返回 AlignmentLine.Unspecified。(I896c5b/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(I35220b/157642842

  • 在各种 Compose 类中替换了 Px 类的用法,作为大型重构工作的一部分,该工作仅依赖于 Dp 和基本类型作为像素参数(I086f4

  • 在各种 Compose 类中替换了 Px 类的用法,作为大型重构工作的一部分,该工作仅依赖于 Dp 和基本类型作为像素参数(Id3434

  • 在各种 Compose 类中替换了 Px 类的用法,作为大型重构工作的一部分,该工作仅依赖于 Dp 和基本类型作为像素参数(I97a5a

  • 修复了 DropdonMenuItems 未调用 onClick 的问题。(I3998bb/157673259

  • MutuallyExclusiveSetItem 已弃用。请改用 Modifier.selectable。(I02b47b/157642842

  • TestTag 现已弃用。请改用 Modifier.testTag。(If5110b/157173105

  • TextField 的光标具有闪烁动画(Id10a7

  • 在各种 Compose 类中替换了 Px 类的用法,作为大型重构工作的一部分,该工作仅依赖于 Dp 和基本类型作为像素参数(I19d02

  • VerticalScroller 现在开箱即用地提供 Column。HorizontalScroller 现在开箱即用地提供 Row。(Ieca5db/157020670

  • 在各种 Compose 类中替换了 Px 类的用法,作为大型重构工作的一部分,该工作仅依赖于 Dp 和基本类型作为像素参数(Iede0b

  • Modifier.semantics 已取消弃用,以允许高级组件的用法。(I4cfdc

  • DrawLayer 修饰符 API 已更改:outlineShape 重命名为 shape 并具有 RectangleShape 默认值,现在不可为空;clipToOutline 重命名为 clip;clipToBounds 已删除,因为它与 clip == true 且 RectangleShape 相同(I7ef11b/155075735

  • 更新了公开 Canvas 的高级 Compose API,以公开 CanvasScope。这消除了使用者维护自己的 Paint 对象的需要。对于仍然需要访问 Canvas 的使用者,他们可以使用 drawCanvas 扩展方法,该方法提供一个回调以使用底层 Canvas 发出绘图命令。(I80afd

  • AlignmentLineOffset 可组合项已弃用,请改用 relativePaddingFrom() 修饰符。CenterAlignmentLine 可组合项已删除。(I60107

  • WithConstraints 后续 Lambda 表达式 API 已更改。现在,它不是有两个参数,而是有一个接收器范围,除了约束和布局方向外,它还提供以 Dp 为单位的 minWidth、maxWidth、minHeight 和 maxHeight 属性(I91b9ab/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)
  • runOnIdleComposerunOnUiThread 现在是全局函数,而不是 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 已弃用。改为使用 setContentsetViewContent。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)