Wear Compose

  
通过提供支持不同设备尺寸和导航手势的功能,为 Wear OS 设备编写 Jetpack Compose 应用。
最新更新 稳定版 发布候选版 Beta 版 Alpha 版
2025 年 6 月 4 日 1.4.1 - 1.5.0-beta03 -

声明依赖项

要添加对 Wear 的依赖项,您必须将 Google Maven 存储库添加到您的项目。阅读 Google 的 Maven 存储库了解更多信息。

在应用或模块的 `build.gradle` 文件中添加所需工件的依赖项

Groovy

dependencies {
    implementation "androidx.wear.compose:compose-foundation:1.4.1"

    // For Wear Material Design UX guidelines and specifications
    implementation "androidx.wear.compose:compose-material:1.4.1"

    // For integration between Wear Compose and Androidx Navigation libraries
    implementation "androidx.wear.compose:compose-navigation:1.4.1"

    // For Wear preview annotations
    implementation("androidx.wear.compose:compose-ui-tooling:1.4.1")
    
    // NOTE: DO NOT INCLUDE a dependency on androidx.compose.material:material.
    // androidx.wear.compose:compose-material is designed as a replacement
    // not an addition to androidx.compose.material:material.
    // If there are features from that you feel are missing from
    // androidx.wear.compose:compose-material please raise a bug to let us know.
}

Kotlin

dependencies {
    implementation("androidx.wear.compose:compose-foundation:1.4.1")

    // For Wear Material Design UX guidelines and specifications
    implementation("androidx.wear.compose:compose-material:1.4.1")

    // For integration between Wear Compose and Androidx Navigation libraries
    implementation("androidx.wear.compose:compose-navigation:1.4.1")
    
    // For Wear preview annotations
    implementation("androidx.wear.compose:compose-ui-tooling:1.4.1")

    // NOTE: DO NOT INCLUDE a dependency on androidx.compose.material:material.
    // androidx.wear.compose:compose-material is designed as a replacement
    // not an addition to androidx.compose.material:material.
    // If there are features from that you feel are missing from
    // androidx.wear.compose:compose-material please raise a bug to let us know.
}

有关依赖项的更多信息,请参阅添加构建依赖项

反馈

您的反馈有助于 Jetpack 变得更好。如果您发现新问题或有改进此库的想法,请告诉我们。在创建新问题之前,请查看此库中的现有问题。您可以通过点击星形按钮为您关注的现有问题添加一票。

创建新问题

有关更多信息,请参阅问题跟踪器文档

Wear Compose 版本 1.5

版本 1.5.0-beta03

2025 年 6 月 4 日

`androidx.wear.compose:compose-*:1.5.0-beta03` 已发布。版本 1.5.0-beta03 包含这些提交

API 变更

  • `OpenOnPhoneDialog` 现在仅在 TalkBack 下宣布消息文本,并跳过图标语义。`OpenOnPhoneDialogDefaults` 已更新,移除了 `iconContentDescription` 和 `icon()` 中的 `contentDescription` 参数。此外,`ConfirmationDialogDefaults` 现在在 `SuccessIcon` 和 `FailureIcon` 可组合项上具有修饰符参数。(Id2ae2

Bug 修复

  • 更改了应用 `SurfaceTransformation` 参数效果的顺序。之前,应用于 Wear Material3 组件的转换如下进行:背景绘制器、容器转换、内容转换。现在,前两个颠倒了,并且我们在它们之间应用任何传入的修饰符,使其受容器转换的影响。这解决了在使用转换参数的 TLC 中,对带有元素的占位符微光效果等情况。(I786cf
  • 添加了 `RevealState.Saver`,用于在活动或进程重新创建时恢复 `SwipeToReveal` 的状态。`rememberRevealState` 函数现在默认使用此 Saver。(Ie0ecb
  • `SwipeToReveal` 主要和次要操作按钮应默认为 `ButtonDefault.Height`(修复了这些按钮填充较高按钮的最大高度的错误)。(Ibfba1
  • 更改了 `SwipeToReveal`,使其在执行向右滑动手势时重置上次交互的组件。(Ia8450
  • 更改了 `SwipeToReveal`,使其在滑动的结束位置位于显示和已显示锚点之间,且更接近显示锚点时,停留在 `Revealing` 状态。(If4458
  • 现在 `ButtonGroup` 的内容在 RTL 布局中正确反转(Ib378d
  • `AnimatedText` 现在支持 RTL 文本方向(I4533c
  • `TransformingLazyColumn` 现在在底部项目被移除时正确调整项目大小(Idacab
  • `TransformingLazyColumn` 现在只进行一次测量,通过减少帧时间来提高性能。(I501a1

版本 1.5.0-beta02

2025 年 5 月 20 日

`androidx.wear.compose:compose-*:1.5.0-beta02` 已发布。版本 1.5.0-beta02 包含这些提交

Bug 修复

  • 更新了 foundation、material 和 material3 库的基线配置文件。(I53f06
  • 修复了 `TransformingLazyColumn` 中的一个错误,即当底部项目被移除时,项目会调整大小。(Idacab
  • 修复了 `TransformingLazyColumn` 的一个错误,即列表停留在列表顶部或底部。(I49d00
  • TalkBack 下的 `OpenOnPhoneDialog` 应该宣布弧形文本,而不是图标内容描述。(I4efe8
  • 修复了 `SwipeToReveal` 中的一个错误,当 `hasPartiallyRevealedState` 设置为 false 时,该错误会在 `RevealState.currentValue` 中报告错误的锚点。(I9c7cf
  • `SwipeToReveal` 撤消按钮现在默认为 `ButtonDefaults.Height`。(I1f6c8
  • 通过消除使用 Canvas 绘制背景,`BasicSwipeToDismissBox` 的性能得到了改进。(I68f2c
  • 修复了 Slider 中的一个无障碍错误,即宣布的百分比与更新后的值不匹配(I91146
  • 修复了 `placeholderShimmer` 实现中的一个错误。(Iee39b
  • 通过将 `ScrollProgress` 计算优化 30%,`TransformingLazyColumn` 的性能得到了改进。(I4c4cb

版本 1.5.0-beta01

2025 年 5 月 7 日

`androidx.wear.compose:compose-*:1.5.0-beta01` 已发布。版本 1.5.0-beta01 包含这些提交

Compose for Wear OS 的 1.5.0-beta01 版本表明该库的功能已完善,API 已锁定(除非标记为实验性)。

Wear Compose 1.5.0-beta01 包含了 Wear Compose Material3 库,该库支持名为 Material 3 Expressive 的新 UI 设计系统。建议从 Material 升级到 Material3,以在应用中采用新的视觉设计,并从以下新组件中受益:

  • `MaterialTheme` 用于更新和扩展的配色方案、排版和形状,为您的设计带来深度和多样性。
  • 动态色彩主题,可自动为您的应用生成与表盘颜色匹配的色彩方案。
  • 新组件默认自动适应更大的屏幕尺寸
  • 形状变形 - `IconButton`、`TextButton`、`IconToggleButton` 和 `TextToggleButton` 等圆形按钮组件支持在按下或选中时进行动画处理的变体。
  • `EdgeButton` - 一个新的贴边按钮,具有专为屏幕底部设计的特殊形状。
  • Scaffolds - 引入 `AppScaffold` 和 `ScreenScaffold` 来布局屏幕结构并协调 `ScrollIndicator` 和 `TimeText` 动画。
  • 按钮 - 支持多种体育场形状的按钮,具有灵活的单槽容器和带有图标和标签的按钮的多槽变体。当需要切换按钮时,提供 `CheckboxButton` 和 `SwitchButton`,而 `RadioButton` 是可用的选择按钮(还提供切换和选择按钮的“拆分”变体)。
  • `ButtonGroup` - 在一行中实现一组富有表现力的按钮,这些按钮在触摸时会发生形状变形。
  • `AlertDialog` 变体支持确定/取消按钮或 `EdgeButton`。
  • `ConfirmationDialog` 可用于显示带超时的消息,支持成功、失败和手机打开变体的特殊动画。
  • 选择器 - 支持 `TimePicker` 和 `DatePicker` 变体,以及用于构建您自己的选择器屏幕的 Picker 和 `PickerGroup` 组件。
  • `ProgressIndicators` - 支持圆形和线性进度指示器(`CircularProgressIndicator` 具有分段和不确定变体)。
  • 卡片 - 提供多种卡片变体,包括 `TitleCard`,它为带标题、时间、副标题或内容槽的卡片提供特定布局。`TitleCard` 还可以给定图像背景以强化卡片中信息的含义。
  • 寻呼器 - `HorizontalPagerScaffold`、`VerticalPagerScaffold` 和 `AnimatedPage` 组件协调 `HorizontalPageIndicator` 和 `VerticalPagerIndicator` 动画。`HorizontalPager` 和 `VerticalPager` 在 Wear Compose Foundation 库中发布。
  • 占位符 - 在没有可用临时内容的情况下,在组件上绘制骨架形状。
  • 滑动条和步进器 - 滑动条和步进器都允许用户从一系列值中进行选择。滑动条更紧凑且可以分段,而步进器是通常与 `StepperLevelIndicator` 配对的全屏组件。
  • `SwipeToReveal` - 用于在可组合项从右向左滑动时为其添加额外操作。

此外,Wear Compose Foundation 1.5.0-beta01 包含了这些新组件

  • `TransformingLazyColumn` - 一个延迟的垂直滚动列表,支持缩放和变形动画
  • 分层焦点组 - 用于注释应用程序中的可组合项,以跟踪组合的活动部分并协调焦点。
  • 寻呼器 - `HorizontalPager` 和 `VerticalPager` 组件,基于 Compose Foundation 组件构建,并具有 Wear 专用增强功能,以提高性能和符合 Wear OS 指南。

API 变更

  • 更新了分层焦点 API - 将 `Modifier.hierarchicalFocus` 重命名为 `Modifier.hierarchicalFocusGroup` 并移除了回调参数;移除了带 `FocusRequester` 参数的 `Modifier.hierarchicalFocusRequester` 重载;创建了一个新的 `CompositionLocal`,`LocalScreenIsActive`,以便组件可以通知和检查哪个屏幕是活动屏幕。(I5ff7c)。
  • Wear Compose Foundation 中的 `SwipeToReveal` 已弃用,取而代之的是 Wear Compose Material 和 Wear Compose Material3 中的 `SwipeToReveal` API。请将 Wear Foundation `SwipeToReveal` 导入替换为 Wear Compose Material/ Wear Compose Material3 导入,以继续使用这些 API。(Ia147d)。
  • Wear Compose Material3 `SwipeToReveal` 对 Foundation 的依赖项已移至 material3 包,例如 `RevealValue`、`RevealDirection`、`RevealActionType`、`RevealState`、`rememberRevealState`。开发者应将其对这些类和函数的导入从 `androidx.wear.compose.foundation` 更改为 `androidx.wear.compose.material3`。(I640e6)。
  • 进一步更新了 Wear Compose Material3 `SwipeToReveal` API 如下:向 `SwipeToReveal` 可组合项添加了 `primaryAction`、`onFullSwipe`、`secondaryAction`、`undoPrimaryAction`、`undoSecondaryAction` 和 `hasPartiallyRevealedState` 参数;移除了自定义 `RevealState` 中的 `positionalThreshold` 和 `animationSpec` 的能力;移除了 `RevealState` 中的 `lastActionType`、`revealThreshold` 和 width;更改了 `RevealState` 构造函数以接受 `RevealDirection` 而不是锚点;移除了 `createRevealAnchors`、锚点和 `bidirectionalAnchors` 函数;`SwipeToRevealScope` 函数 `primaryAction`、`secondaryAction`、`undoPrimaryAction` 和 `undoSecondaryAction` 已重命名为 `PrimaryActionButton`、`SecondaryActionButton`、`UndoActionButton` 并成为可组合函数;将 `RevealActionType` 标记为内部。(I885d0)。
  • 进一步更新了 `SwipeToReveal` API 如下:将 `onFullSwipe` 重命名为 `onSwipePrimaryAction`;将 `SwipeToRevealNonAnchoredSample` 重命名以指示 `hasPartiallyRevealedState` 参数的使用;移除了 `actionButtonHeight`,因为默认值是 Button 的默认高度,并且可以使用修饰符设置更大高度;从 `SwipeToRevealDefaults` 中移除了 `SmallActionButtonHeight`;将 `RevealValue` 和 `RevealDirection` 构造函数中的 value 参数设为私有。(I465ce)。

Bug 修复

  • 修复了 `ScreenScaffold` 的 `EdgeButton` 处理,以便在 `TransformingLazyColumn` 项目被移除后,`EdgeButton` 会动画到位。(I6d366)。
  • 将 Wear Compose 对 Compose 库的依赖项更新到版本 1.8.0。(I2ef3f)。
  • 更新了不确定 `CircularProgressIndicator` 的运动,使其不再暂时回退。(Ieddb1)。
  • 修复了 `SwipeDismissableNavHost` 错误 - 滑动返回后焦点未正确切换,导致旋转输入失败(这适用于 API 36+,使用预测性返回)。(Ieddb1)。
  • 修订了分层焦点 API 的文档(Idf2ff)。
  • 更新了 Button 和 Card 的文档,说明 `containerPainter` 和 `disabledContainerPainter` 如何覆盖 `containerColor` 和 `disabledContainerColor`(I4a453)。
  • 还原了上次发布中对 `TimeText` 的更改,该更改将 `BroadcastReceiver` 移动到工作线程,因为它导致了一些应用在导航期间管理自己线程的问题。(I34d02)。
  • 更新了 Picker 示例,移除了不必要的 remember 调用,转而在 Picker 中使用 `rememberUpdatedState` 来记住最新的 `contentDescription` lambda 函数。(Icb5b1)。
  • 更新了 `TimePicker` 和 `DatePicker` 中的文本样式,以便字体更改不再导致截断。(I26194)。
  • `ListHeader` 和 `ListSubHeader` 现在分别默认为居中对齐和起始对齐的文本对齐方式。(I78339)。
  • 更新了 Foundation 和 Material Swipe to Reveal 示例和演示,以宣布自定义无障碍操作(自定义操作必须作为语义添加到内容上,而不是添加到 `SwipeToReveal` 可组合项本身)。(Ie92a3)。
  • 根据 `EdgeButton` 的大小更新了其内容上设置的默认 `MaxLines` - 对于超小型,现在为 1 行;对于小型和中型,为 2 行;对于大型,为 3 行。(Ie35f6)。
  • 简化了 `LocalReduceMotion`,以便观察者只注册一次,从而提高性能。(Ib1979)。
  • 最小化了 `ScrollIndicator` 中的重绘次数,以提高性能。(Ia7a67)。
  • 修复了 `TransformingLazyColumn` 中的一个错误,即当 EdgeButton 达到其完整高度时,列表中顶部可见项目未能正确缩放。(I30580)。

版本 1.5.0-alpha14

2025 年 4 月 23 日

`androidx.wear.compose:compose-*:1.5.0-alpha14` 已发布。版本 1.5.0-alpha14 包含这些提交

API 变更

  • 所有 Material `SwipeToReveal` 对 Foundation `SwipeToReveal` 的依赖项都已移至 Material 包,例如 `RevealValue`、`RevealDirection`、`RevealActionType`、`RevealState`、`rememberRevealState`。开发者应将其对这些类和函数的导入从 `androidx.wear.compose.foundation` 更改为 `androidx.wear.compose.material`。(Ib7cb8
  • 更新了 `HierarchicalFocusCoordinator` 的 API,使其成为修饰符而不是可组合项。
  • 迁移说明
    • `HierarchicalFocusCoordinator(function, content)` 可以替换为在 `content` 或包含的可组合项中添加 `Modifier.hierarchicalFocus(function())`。
    • `ActiveFocusListener { if (it) focusRequester.requestFocus() }` 可以替换为添加 `Modifier.hierarchicalFocusRequester(focusRequester)`
    • `ActiveFocusListener` 的其他罕见用法可以使用 `Modifier.hierarchicalFocus` 上的新参数
    • `focusRequester(rememberActiveFocusRequester())` 可以替换为 `hierarchicalFocusRequester()`
    • `val focusRequester = rememberActiveFocusRequester()` 可以替换为 `remember { FocusRequester() }` 并添加 `Modifier.hierarchicalFocusRequester(focusRequester)`。(Ie319a

Bug 修复

  • 以下组件触发状态改变所需超过的速度阈值已增加:`SwipeToReveal`、`BasicSwipeToDismissBox` 和 `SwipeDismissableNavHost`(`SwipeDismissableNavHost` 仅适用于 API 35 及以下版本)。(If47bf
  • 修复了将新项目添加到 `TransformingLazyColumn` 时的动画问题。(I589b2

版本 1.5.0-alpha13

2025 年 4 月 9 日

`androidx.wear.compose:compose-*:1.5.0-alpha13` 已发布。版本 1.5.0-alpha13 包含这些提交

API 变更

  • 使用 Kotlin 2.0 发布的项目需要 KGP 2.0.0 或更高版本才能使用(Idb6b5
  • 向 `PagerState` 添加了 `targetPage` 属性(I4de8b

Bug 修复

  • 防止预测性返回期间不必要的重组。(Iecd6d
  • 修复了 `ScrollInfoProvider` 的 `isScrollable` 属性以返回当前值。(Icbfb8

版本 1.5.0-alpha12

2025 年 3 月 26 日

`androidx.wear.compose:compose-*:1.5.0-alpha12` 已发布。版本 1.5.0-alpha12 包含这些提交

API 变更

  • 改进了 `SwipeToReveal` 的默认 `gestureInclusion` 实现,使其仅在组件状态为 Covered 时忽略手势。(I7e3d6
  • 对于 `SwipeToReveal`,将 `bidirectionalGestureInclusion` 设为 val 而不是函数,并在 `gestureInclusion` 中将 `@FloatRange` 添加到 `edgeZoneFraction` 参数。(Ica7c3

Bug 修复

  • 将 `SwipeToReveal` `bidirectionalGestureInclusion` 更改为返回对象而不是类。(I29597
  • 在 `RoboElectric` 下运行测试时禁用触觉反馈。(I58bd1
  • 更新了 `SwipeToReveal` 内容和操作按钮之间的填充,以及操作按钮图标和文本之间的填充。(Ic46cb

版本 1.5.0-alpha11

2025 年 3 月 12 日

`androidx.wear.compose:compose-*:1.5.0-alpha11` 已发布。版本 1.5.0-alpha11 包含这些提交

API 变更

  • 更新了 `PagerState`,移除了 Compose Foundation `PagerState` 作为基类,并添加了 `currentPage`、`currentPageOffsetFraction` 和 `pageCount` 属性。更新了 `GestureInclusion` 接口,将方法重命名为 `ignoreGestureStart`。(I4ae07
  • 将 `requireOffset` 添加到 `SwipeToDismissBoxState` 作为获取 `SwipeToDismissBoxState` 偏移量的推荐方法。(I21042
  • 添加了 `CurvedModifier.semantics`,初步支持内容描述和遍历索引(I0b093
  • 我们添加了 `CurvedModifier.clearAndSetSemantics`,以提供一种关闭弧形语义的方法。`CurvedText` 继续将内容描述默认为文本,但 `timeTextCurvedText` 和 `timeTextSeparator` 现在不再宣布其内容。(I4b568
  • `HorizontalPager` 对滑动手势的默认处理已重命名为 `PagerDefaults.gestureInclusion`。现在的默认行为是仅在第一页的左边缘开始的滑动手势才被忽略,而且仅在 Talkback 关闭时。在其他情况下,默认行为是寻呼器不会忽略滑动手势,因此它们将无法用于滑动关闭处理程序。为了在所有页面上实现滑动关闭行为,只需提供一个自定义的 `GestureInclusion` 实例(请参阅 `PagerDefaults.disableLeftEdgeOnFirstPage`),它会忽略当前页面。此处引入的另一个重大更改是 Pager 组件默认不再是全屏,而是添加 `Modifier.fillMaxSize()` 以实现此行为。(Iee486
  • 为 `rotaryScrollable` api 添加了旋转过度滚动。将过度滚动和嵌套滚动添加到 `rotaryScrollable` 弹动行为。此更改应使触摸滚动和旋转滚动之间的过度滚动和嵌套滚动功能保持一致。(I71926
  • 为 `SwipeToReveal` 添加了对边缘滑动区域的支持。Foundation `SwipeToReveal` 的默认行为是,当手势从边缘开始时,不允许滑动。Material3 `SwipeToReveal` 的默认行为是,当 `SwipeDirection` 设置为单一方向时,不允许手势从边缘开始滑动。(I32ef0
  • TLC 现在默认使用空内容填充,而不是将第一个和最后一个项目放在中心。(I77ab7

Bug 修复

  • Wear Compose 库已更新为 Kotlin 2.0 编译器。(I2de79
  • 修复了 foundation 中弧形 `LetterSpacing` 示例。(Iebf7c

版本 1.5.0-alpha10

2025 年 2 月 26 日

`androidx.wear.compose:compose-*:1.5.0-alpha10` 已发布。版本 1.5.0-alpha10 包含这些提交

API 变更

  • 将 `SwipeToRevealDefaults` 设为 public。(I0c34c
  • 我们已经替换了 `HorizontalPager` 中的 `swipeToDismissEdgeZoneFraction` 参数。取而代之,引入了一个新参数 `gestureInclusion`,可用于实现必要的滑动关闭行为。`gestureInclusion` 接受 `GestureInclusion` 的实例,该实例决定后续的滚动事件是否应该继续。允许手势意味着 Pager 消耗它 - 否则,它将在其他地方处理,例如由滑动关闭处理程序处理。新的默认行为是禁止在 Pager 的第一页最左侧边缘上的手势,因此允许在该区域滑动关闭。所有其他页面都将允许 Pager 消耗所有手势,这意味着无法从它们触发滑动关闭。要在所有页面上实现滑动关闭行为,只需提供一个自定义的 `GestureInclusion` 实例(请参阅 `PagerDefaults.disableLeftEdgeOnFirstPage`),该实例会忽略当前页面。此处引入的另一个重大更改是 Pager 组件默认不再是全屏,而是添加 `Modifier.fillMaxSize()` 以实现此行为。(I9d3aa
  • 我们将 swipe-to-reveal API 中的 `createAnchors` 重命名为 `createRevealAnchors`(If5999
  • 我们已从 swipe-to-reveal API 中移除了 `RevealScope`。(Ie4ad5
  • 我们已从 swipe-to-reveal API 中移除了 `RevealValue` 的 Revealing 和 Revealed。(I8dbc5
  • 我们将 swipe-to-reveal API 中的 `SwipeDirection` 重命名为 `RevealDirection`。(I7472f
  • 我们更改了 `SwipeToReveal` 的 `rememberRevealState` 函数的 `positionalThreshold` 参数的签名。(I29c0a
  • 我们为 `ScalingLazyColumn`、`TransformingLazyColumn` 和 `ScreenScaffold` 添加了一个新的 `overscrollEffect` 参数。(I0cee8
  • 使用 `PagerDefaults#snapFlingBehaviour` 时,`pagerSnapDistance` 参数已替换为 Int 参数 `maxFlingPages`,可用于指定 Pager 应弹动的最大页数。(I8cfc0
  • Wear Pager 现在有自己的 `PagerScope`,而不是使用 Compose Foundation `PagerScope`。(I9195b
  • 我们为 Curved text 添加了对 `lineHeight` 的支持(I1c936
  • 我们已将 `initialAnchorItemIndex` 和 `initialAnchorItemOffset` 添加到 `TransformingLazyColumnState` 和 `rememberTransformingLazyColumnState` 中,以便在 `TransformationLazyColumn` 中指定初始滚动位置。(I0a0d5
  • 弃用 `runWithTimingDisabled`,转而使用 `runWithMeasurementDisabled`,后者更清楚地描述了行为 - 所有指标均暂停。此外,公开 `MicrobenchmarkScope` 超类,因为重新声明 `runWithMeasurementDisabled` 函数以开放访问是不可能的,因为它在内联。(I9e23bb/389149423b/149979716
  • 我们已将 `TransformingLazyColumnItemScrollProgress.Unspecified` 添加到 API,以避免在 `TransformingLazyColumnItemScrollProgress` 上进行装箱。(I0835d

Bug 修复

  • 改进了 `CurvedTextStyle` 的 Kdoc(Id45e3
  • 我们已将 `SwipeableV2`(`SwipeToReveal` 实现的一部分)设为内部,而不是公共但仅限于库组。(Idbb94
  • 我们为 `HierarchicalFocusCoordinator` 添加了测试(I1ce54b/395548918
  • 我们改进了 wear compose foundation 示例中的 `SwipeToReveal`。(I5f307
  • 修复了 `TransformingLazyColumn` 中 `verticalScrollAxisRange` 的滚动轴语义数据以实现无障碍功能(I68123
  • 通过移除不必要的后台线程,提高了 Wear4+ 上旋转触觉反馈的性能(I39cfe
  • 将 `SwipeDismissableNavHost` 更改为仅在 API 36 及更高版本上使用 `PredictiveBackNavHost`。(I59bed
  • 我们已添加防护措施,防止在访问减速设置时发生崩溃。(I01e2c
  • 我们已为 `TransformingLazyColumn` 实现了预取,以减少卡顿(Icca88

版本 1.5.0-alpha09

2025 年 1 月 29 日

`androidx.wear.compose:compose-*:1.5.0-alpha09` 已发布。版本 1.5.0-alpha09 包含这些提交

API 变更

  • 在 `CurvedTextStyle` 中,我们将字间距分为顺时针字间距和逆时针字间距。这是因为顺时针字母从基线向外展开,而逆时针字母向内收拢(因此需要更大的字间距)(I4b848
  • `CompositionLocal` `LocalReduceMotion` 已简化为返回布尔值而不是 `ReduceMotion` 对象。`ReduceMotion` 接口现已弃用。以前的调用,例如 `LocalReduceMotion.current.enabled()` 可以替换为 `LocalReduceMotion.current`(I4937f
  • 在 `PagerDefaults` 中,`snapAnimationSpec` 已重命名为 `SnapAnimationSpec`。(I20c9a

版本 1.5.0-alpha08

2025 年 1 月 15 日

`androidx.wear.compose:compose-*:1.5.0-alpha08` 已发布。版本 1.5.0-alpha08 包含这些提交

API 变更

  • 我们已将所有 Wear Compose 库更新为“显式 API”模式。(Iebf9f
  • 我们已将寻呼器的快照动画参数设为 `PagerDefaults` 的一部分。(Ifff64
  • 我们已将偏移参数添加到 `SwipeToDismissBoxState`。(I586bd

Bug 修复

  • Wear OS V 版之后的设备现在会调用旋转平台触觉反馈(Idb03e

版本 1.5.0-alpha07

2024 年 12 月 11 日

`androidx.wear.compose:compose-*:1.5.0-alpha07` 已发布。版本 1.5.0-alpha07 包含这些提交

API 变更

  • `TransformingLazyColumnState` 现在提供了一种根据锚定项目索引观察当前滚动进度的功能。(I72b01
  • 我们已在 `TransformingLazyColumn` 中添加了在添加、移除和移动项目时的动画,如果它们具有新的 `Modifier.animateItem`。(Iecb9c
  • `TransformingLazyColumn` 现在暴露 `beforeContentPadding` 和 `afterContentPadding` 的值。(Iccd5f
  • `TransformingLazyColumn` 现在提供了组合本地 `LocalTransformingLazyColumnItemScope`,组件(如 Material3 中的 `Card` 和 `Button`)可以使用它在 `TransformingLazyColumn` 中自动变形。调用方可以使用新的 `TransformExclusion` 包装器禁用自动变形。(I1652f

Bug 修复

  • 我们更新了针对 U 及更高版本设备旋转的最小和最大弹动速度。(I33559
  • 我们修复了在 `TransformingLazyColumn` 中的项目不包含任何可组合项时发生的崩溃(Idb99d
  • 我们已在 Android Vanilla Ice Cream 上为旋转触觉反馈添加了 `ScrollFeedbackProvider` 支持。(Ibc553
  • 我们已在使用 `SwipeToReveal` 时增加了触摸容差,以减少意外触发垂直滚动时滑动的可能性。(Ic0672
  • 我们已更新 `SwipeDismissableNavHost`,使其在 API 35 及更高版本可用时使用 `PredictiveBackHandler`。在这种情况下,将应用新的动画。(I08c11

版本 1.5.0-alpha06

2024 年 11 月 13 日

`androidx.wear.compose:compose-*:1.5.0-alpha06` 已发布。版本 1.5.0-alpha06 包含这些提交

API 变更

  • 我们已简化了 `PagerState` 的 `ScrollInfoProvider`,移除了不再需要的 `orientation` 参数。新行为是 `TimeText` 在水平和垂直分页时都保持在原位。(I71767
  • `TransformingLazyColumn` 已在早期版本中引入。我们现在正在移除 Wear 的 `LazyColumn` 别名(它们正在转发到 `TransformingLazyColumn`),转而使用新名称 `TransformingLazyColumn`。我们还移除了 `TransformingLazyColumnVisibleItemInfo` 的 `height` 属性 - 请改用 `measuredHeight`。(I0ea1e
  • 我们已将 `PagerDefaults.snapFlingBehavior` `snapAnimationSpec` 从 `Tween` 更改为 `Spring` 规范。(I10d02b/349781047b/303807950
  • 我们已将 `LocalReduceMotion` `CompositionLocal` 提升为稳定版(Ia6f32

Bug 修复

  • 我们已更新 `Modifier.rotaryScrollable`,使其使用“focusTarget”而不是“focusable”,从而提高了性能。(Ief0a0
  • 我们已将 Compose 库的最低 API 依赖项更新为 1.7.4。(I88b46
  • 我们已禁用 `TransformingLazyColumn` 中的宽度变形,作为剪切错误的解决方法。(I3dfb8
  • 修复了 `TransformingLazyColumn` 在过度滚动后导致项目消失的错误(Id7668
  • 我们已为 `TransformingLazyColumn` 添加了 `LazyLayoutSemantics`。(Ia8f56

版本 1.5.0-alpha05

2024 年 10 月 30 日

`androidx.wear.compose:compose-*:1.5.0-alpha05` 已发布。版本 1.5.0-alpha05 包含这些提交

API 变更

  • 我们已在 `TransformingLazyColumnState` 上添加了对 `animateScrollTo` 的支持,以便可以动画滚动到项目。(I4097d
  • 我们已在 `TransformingLazyColumnState` 上添加了 `requestScrollTo`,以将滚动延迟到下一次测量。(I20a5e
  • 我们已在 `TransformingLazyColumn` 中添加了对 `contentPadding` 的支持。(I3a69c

Bug 修复

  • 我们修复了当内容高度短于屏幕高度时,`TransformingLazyColumn` 渲染的错误。(I6c3e1
  • `TransformingLazyColumn` 的 `ScrollInfoProvder` 现在正确跟踪第一个项目。(I1e4a3
  • `TransformingLazyColumnState` 现在保存其状态(`anchorItemIndex` 和 `anchorItemScrollOffset`)。(I3d265

版本 1.5.0-alpha04

2024 年 10 月 16 日

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

API 变更

  • 我们将 Wear Compose Foundation 的 `LazyColumn` 重命名为 `TransformingLazyColumn`,以便更清楚地区分它与 Compose Foundation 的 `LazyColumn`。(I0608b
  • 添加了对 Horizontal/Vertical 寻呼器的旋转支持,使用户能够使用 Wear OS 设备上的表冠或旋转边框导航寻呼器。(I9770d
  • 我们已更新新的 `PagerDefaults`,以明确寻呼器默认会吸附到页面。(Iff7d0
  • `TransformingLazyColumnItemScrollProgress` 现在是一个值类,这应该会提高性能。(Ic399e
  • `TransformingLazyColumn` 现在开箱即用支持旋转。(I05206
  • `TransformingLazyColumnState` 现在支持 `scrollToItem`。(I507b3
  • 从 `SwipeToReveal` API 中移除了 `@ExperimentalWearFoundationApi`(I34a66

版本 1.5.0-alpha03

2024 年 10 月 2 日

`androidx.wear.compose:compose-*:1.5.0-alpha03` 已发布。版本 1.5.0-alpha03 包含这些提交

API 变更

  • 我们已在 `SwipeToReveal` 中添加了对双向滑动的支持,适用于当前屏幕不支持滑动关闭的罕见情况。默认仍然是仅在从右向左滑动时显示,强烈建议遵守默认行为以避免与滑动关闭冲突。(Ifac04
  • 我们更新了 `LazyColumnState` 以覆盖 `canScrollForward` 和 `canScrollBackward` - 这现在会在第一个或最后一个项目正好在屏幕中心时停止滚动。(Ia77d7
  • 我们添加了新的 `HorizontalPager` 和 `VerticalPager` 组件,它们解决了常见的 Wear 上可能出现的焦点处理和与系统滑动关闭交互的问题。(I2902b
  • 我们已为 `LazyColumn` 添加了支持,通过 `layoutItems` 暴露客户端的 `key` 和 `contentType`。(I1bd9c

Bug 修复

  • 我们已使用绘制标志更新了弧形文本动画,使其更流畅。(I73a15
  • 我们更新了 Material Dialog 文档,以反映在 show 标志设置为 false 后不会调用 `onDismissRequest`。(Ifd8d6
  • 我们修复了 Material Dialog 中晕影动画的错误(I126bf

版本 1.5.0-alpha02

2024 年 9 月 18 日

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

API 变更

  • 我们已为 Wear Compose `LazyColumn` 添加了对 `ScreenScaffold` 的支持(并为 `LazyColumnState` 添加了 `ScrollInfoProvider` 的实现)。(Ib8d29
  • 我们已将 `viewportSize` 添加到 `LazyColumnLayoutInfo`。(I4187f

Bug 修复

  • 我们修复了一个错误,使 `ScalingLazyColumn` 中的旋转滚动在 `userScrollEnabled` 标志设置为 `false` 时被禁用。(I490abb/360295825
  • 我们对弧形文本上的意外垂直填充进行了错误修复。弧形文本高度现在更接近文本实际使用的空间。请注意,这可能会破坏涉及弧形文本的屏幕截图测试(Iaa6ef
  • 我们已恢复对 `Dialog` 的错误修复,即在 `showDialog` 设置为 false 时调用 `onDismissRequest` 回调,因为在某些情况下这导致 `onDismissRequest` 被多次调用。(I64656

版本 1.5.0-alpha01

2024 年 9 月 4 日

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

API 变更

  • 我们已将新的 `LazyColumn` 添加到 Wear Compose Foundation 库中,以及相关的 `LazyColumnState` 和 `LazyColumnScope` API。这为使用 Wear Compose 构建可定制的缩放和变形效果奠定了基础。(Ib3b22
  • 作为新 `LazyColumn` API 的一部分,我们已将 `itemsIndexed` 的索引版本添加到 `LazyColumnScope`。(Ib4a57
  • 我们添加了 `LazyColumn` 修饰符以支持缩放和变形行为。(Ie229a
  • `HierarchicalFocusCoordinator` 已提升为稳定版。(I31035
  • 我们为弧形文本添加了对字间距的支持。(I3c740
  • 为 `CurvedLayout.curvedComposable` 添加了 `rotationLocked` 参数,以阻止组件旋转。(I66898
  • wear material 和 wear material3 中临时使用的 `LocalUseFallbackRippleImplementation` API 已被移除(I62282
  • 从 `@WearPreviewDevices` 多预览中移除了 `WearDevices.SQUARE`(I11c02

Bug 修复

  • `SwipeToReveal` 现在将显示的项目定位在屏幕的可见部分,这有助于在列表中使用 `SwipeToReveal` 时,使项目始终可交互且不会超出屏幕。(I38929
  • `SwipeToReveal` 现在在 `animatedTo` 完成后将 `lastActionType` 重置为 None。(I59b03
  • 改进了 `curvedComposable` 上新参数 `rotationLocked` 的文档。(Ifbd57
  • 修复了将 `NaN` 传入 `ScalingLazyColumnSnapFlingBehavior` 的 `performFling` 时发生的崩溃。(Ic13da
  • 修复了弧形布局尺寸修饰符上的错误(I0fedf
  • 我们已添加对以“sp”指定的字间距的支持。(I9f6e3
  • 我们修复了 Material2 Dialog 中的一个错误,即当对话框变得不可见时未调用 `onDismissRequest` 回调(I64656
  • 将 `LayoutCoordinates.introducesFrameOfReference` 重命名为 `LayoutCoordinates.introducesMotionFrameOfReference` 以更好地反映其目的。重命名了基于该标志计算坐标的相关函数。(I3a330

版本 1.4

版本 1.4.1

2025 年 2 月 12 日

`androidx.wear.compose:compose-*:1.4.1` 已发布。版本 1.4.1 包含这些提交

Bug 修复

  • 我们已防止在访问全局减速设置时发生崩溃,该崩溃是在某些未提供该设置的平台上触发的。(I01e2c

版本 1.4.0

2024 年 9 月 4 日

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

自 1.3.0 以来的重要变更

  • `ScalingLazyColumn` 和 `Picker` 现在默认支持旋转输入 - 建议移除显式旋转处理并遵循默认系统行为。如有必要,使用 `rotaryScrollableBehavior` 参数配置滚动或吸附行为 - 对于吸附行为,建议通过 `flingBehavior` 参数提供吸附行为和触摸滚动功能。
  • `Modifier.rotaryScrollable` 是一个新的修饰符,它将旋转事件与可滚动容器连接起来,允许用户使用 Wear OS 设备上的表冠或旋转边框进行滚动。
  • `SwipeDismissableNavHost` 现在为应用内转换提供了入口动画。
  • `PositionIndicator` 现在在屏幕首次显示时默认显示。

其他变更

版本 1.4.0-rc01

2024 年 8 月 21 日

`androidx.wear.compose:compose-*:1.4.0-rc01` 已发布。版本 1.4.0-rc01 包含这些提交

  • 我们已将 Compose 依赖项更新至 1.7.0-rc01,并将 Wear Compose Navigation 锁定至 androidx.lifecycle 2.8.3

版本 1.4.0-beta03

2024 年 6 月 12 日

`androidx.wear.compose:compose-*:1.4.0-beta03` 已发布。版本 1.4.0-beta03 包含这些提交

Bug 修复

  • 我们已更新 `Modifier.rotaryScrollable`,用“focusTarget”取代“focusable”,提高了性能。(Id294b
  • 我们修复了一个问题,即 `ProgressIndicator` 在 `TalkBack` 下重复宣布。(I94563
  • 我们更新了 Wear Compose 库的基线配置文件。(I3cbc3

版本 1.4.0-beta02

2024 年 5 月 29 日

`androidx.wear.compose:compose-*:1.4.0-beta02` 已发布。版本 1.4.0-beta02 包含这些提交

Bug 修复

  • 我们增加了从弧形文本传递给屏幕阅读器的边界宽度,以解决截断问题(Id865f)。
  • 我们限制了传递给屏幕阅读器的 `HorizontalPageIndicator` 的边界——之前指示器占据了整个屏幕(Id8d7a)。

版本 1.4.0-beta01

2024 年 5 月 14 日

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

Compose for Wear OS 的 1.4-beta01 版本表明该库的功能已完善,API 已锁定(除非标记为实验性)。Wear Compose 1.4 包含以下新功能

  • 我们添加了 `Modifier.rotaryScrollable`,这是一个新的修饰符,它将旋转事件与可滚动容器连接起来,允许用户通过 Wear OS 设备上的表冠或旋转边框进行滚动。此外,`ScalingLazyColumn` 和 `Picker` 现在默认支持旋转输入。使用 `rotaryScrollableBehavior` 参数配置滚动或吸附行为。对于吸附行为,建议也通过 `flingBehavior` 参数提供吸附,以实现触摸滚动。
  • `SwipeDismissableNavHost` 现在为应用内转换提供了入口动画。
  • `PositionIndicator` 现在在屏幕首次显示时默认显示。
  • SelectableChipSplitSelectableChip 已作为 ToggleChip 的变体添加,请与 RadioButton 搭配使用,以便为无障碍功能提供可选择的语义而不是可切换的语义。
  • ListHeader 现在支持高度调整,以便内容在字体较大时有足够的空间。

Bug 修复

  • 我们修复了一个错误,即当可选的芯片已被选中时,会宣布双击以切换。(I7ed88

版本 1.4.0-alpha08

2024 年 5 月 1 日

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

API 变更

  • 我们对新的旋转 API 进行了以下更改:将 Modifier.rotary 重命名为 Modifier.rotaryScrollable;将 RotaryBehavior 接口重命名为 RotaryScrollableBehavior,并将其函数 handleScrollEvent 重命名为 performScroll;将 RotaryScrollableAdapter 重命名为 RotaryScrollableLayoutInfoProvider 并删除了 scrollableState 属性。(I0c8a6
  • 我们对旋转 API 进行了额外更改:将 RotaryScrollableLayoutInfoProvider 重命名为 RotarySnapLayoutInfoProvider(因为此提供程序仅在带有吸附功能的旋转时才需要);将 RotaryScrollableDefaults.snapBehavior snapOffsetsnapOffset 参数的类型从 Int 更改为 Dp。(Iddebe
  • 我们已将 SplitSelectableChip 上的 clickInteractionSource 参数重命名为 containerInteractionSource。(Ia8f84
  • 我们已更新 SplitSelectableChip 的点击回调参数名称——从 onClickonSelectionClick,从 onBodyClickonContainerClick。(I32237

Bug 修复

  • 我们已将 PositionIndicator 的水平内边距更新为 2dp(之前为 5dp),以修复 PositionIndicator(滚动条)与可滚动内容重叠的错误。请注意,由于内边距的更改,此更改预计会破坏包含 PositionIndicator 的现有屏幕截图。(I57472
  • 我们改进了新旋转 API 的文档,描述了低分辨率和高分辨率旋转设备之间的差异。(I63abe
  • 我们解决了 SwipeDismissableNavHost 中可能因插值 alpha 值小于零而触发的超出范围异常。(Ib75a1, b/335782510

版本 1.4.0-alpha07

2024 年 4 月 17 日

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

API 变更

  • 我们添加了 Modifier.rotary,这是一个新的修饰符,它将旋转事件与可滚动容器连接起来,允许用户通过 Wear OS 设备上的表冠或旋转表圈进行滚动。此外,ScalingLazyColumn 和 Picker 现在默认支持旋转输入,新增的重载包括 rotaryBehavior 参数,用于指定滚动或吸附的配置。如果 rotaryBehavior 参数设置为吸附,则建议也通过 flingBehavior 参数提供吸附,用于触摸滚动。(I2ef6f
  • NestedScroll 源 Drag 和 Fling 正在被 UserInputSideEffect 取代,以适应这些源的扩展定义,现在包括动画(Side Effect)以及鼠标滚轮和键盘(UserInput)。(I40579
  • 我们添加了 SelectableChipSplitSelectableChip,以更清晰地区分 Switch/Checkbox 等切换控件和 RadioButton 等可选控件。这取代了之前添加的带有 selectionControl 参数的 ToggleChip/SplitToggleChip 重载。(Ia0217
  • 已将 ProgressIndicatorDefaultsIndeterminateStrokeWidth 的可见性修饰符更新为 public。(I5b5a4

版本 1.4.0-alpha06

2024 年 4 月 3 日

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

Bug 修复

  • 我们添加了旋转支持的内部草案,作为将旋转行为从 Horologist 迁移到 AndroidX 的更大工作的一部分。(I617d1
  • 我们添加了触觉支持的内部草案,作为将旋转行为从 Horologist 迁移到 AndroidX 的更大工作的一部分。(I5568a

版本 1.4.0-alpha05

2024 年 3 月 20 日

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

API 变更

  • 我们已将 ScalingLazyListStateinitialCenterItemIndexinitialCenterItemScrollOffset 属性设为 public。(I0c616
  • 我们已将 ProgressIndicatorDefaults 中的 FullScreenStrokeWidth 设为 public。(Ibea23

Bug 修复

  • 我们通过减少从 ScalingLazyColumn 调用 layoutInfo 的次数,提高了 PositionIndicator 的性能。(Idc83d

版本 1.4.0-alpha04

2024 年 3 月 6 日

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

API 变更

  • 我们为 ToggleChipSplitToggleChip 添加了一个新的重载,它接受一个 selectionControl 参数而不是 toggleControl 参数。这应该与 RadioButton 控件一起使用,以便为辅助功能提供可选择的语义而不是可切换的语义。(I1d6d9
  • 我们已将新 selectionControl 重载的参数名称从 onSelected 更新为 onSelect,适用于 ToggleChipSplitToggleChip。(I1a971

版本 1.4.0-alpha03

2024 年 2 月 21 日

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

API 变更

  • Modifier.inspectable 包装器已被弃用。此 API 将比必要地更多地使您的修饰符失效,因此现在不鼓励使用它。如果开发人员希望向工具公开修饰符属性,建议他们在 ModifierNodeElement 上实现 inspectableProperties() 方法。(Ib3236

Bug 修复

  • 我们修复了 WearPreview* 注解的文档错误。(Id526d

版本 1.4.0-alpha02

2024 年 2 月 7 日

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

Bug 修复

  • 我们修复了滑动手势揭示功能中的一个错误,即可以通过滑动另一个项目来与某个项目上已提交的操作进行交互(和取消)。(Ide059)
  • 我们已更新 ListHeader,使其支持在内容需要额外高度以适应大字体尺寸时进行高度调整。(I7290c, b/251166127

版本 1.4.0-alpha01

2024 年 1 月 24 日

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

新功能

  • 我们已为 SwipeDismissableNavHost 添加了进入动画,用于应用内过渡。(cfeb79a
  • PositionIndicator 现在在屏幕首次显示时默认显示。引入此更改是为了帮助满足 Wear 质量指南。不幸的是,这意味着包含 PositionIndicator 的屏幕上的屏幕截图测试将需要更新,因为 PositionIndicator 之前不会显示。(419cef7

API 变更

  • 我们已在 wear:compose-materialwear:compose-material3 库中添加了新的涟漪 API,它取代了已弃用的 rememberRipple。还添加了一个临时 CompositionLocalLocalUseFallbackRippleImplementation,用于将 Material 组件恢复为使用已弃用的 rememberRipple/RippleTheme API。这将在下一个稳定版本中移除,仅作为临时迁移辅助工具,适用于您提供自定义 RippleTheme 的情况。有关迁移信息和此更改背后的更多背景信息,请参阅 developer.android.com。(af92b21
  • 我们已将 ColorScheme 更新为不可变,从而降低了单个颜色更新的效率,但提高了更常见的颜色使用效率。此更改的原因是,大多数应用程序不会将更新单个颜色作为主要用例。这仍然是可能的,但它将比以前重新组合更多,反过来,我们大大减少了所有材质代码中的状态订阅量,并将影响更标准用例的初始化和运行时成本。(f5c48b7
  • Wear Material 和 Wear Material3 组件在其 API 中公开 MutableInteractionSource 的已更新为现在公开一个可为空的 MutableInteractionSource,默认为 null。这里没有语义更改:传递 null 意味着您不希望提升 MutableInteractionSource,并且如果需要,它将在组件内部创建。更改为 null 允许某些组件从不分配 MutableInteractionSource,并允许其他组件仅在需要时惰性地创建实例,从而提高这些组件的性能。如果您没有使用传递给这些组件的 MutableInteractionSource,建议您传递 null。还建议您在自己的组件中进行类似的更改。(f8fa920
  • 我们已更新 rememberExpandableState 以保存可扩展状态。这确保了在导航到另一个屏幕时数据得到存储,并在返回原始屏幕时恢复。(5c80095

Bug 修复

  • 我们已将 ReduceMotion 设置更新为使用生命周期感知监听器。(7c6b122
  • 我们已将 TouchExplorationStateProvider 的监听器更新为生命周期感知。(be28b01
  • 我们已移除 CompactButton 的 Material Core 层以提高性能。(25db8e9
  • 我们已使 BasicSwipeToDismissBox 对 NaN 偏移量更健壮,以避免异常。(b983739
  • 我们已更新 BasicSwipeToDismissBox 以确保 alpha 值在 0,1 范围内。
  • 我们修复了 ToggleButtonSplitToggleButtonCheckboxSwitchRadioButton 中的一个错误,以便不再重复辅助功能公告(以前,语义角色会重复)。(d11eeb7

版本 1.3

版本 1.3.1

2024 年 4 月 3 日

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

Bug 修复

  • 我们修复了滑动手势揭示功能中的一个错误,即可以通过滑动另一个项目来与某个项目上已提交的操作进行交互(和取消)。(Ide059

版本 1.3.0

2024 年 1 月 24 日

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

自 1.2.0 以来的重要变更

  • SwipeToDismissBoxState 类、SwipeToDismissValue 枚举和 Modifier.edgeSwipeToDismiss 扩展函数现在都属于 androidx.wear.compose.foundation 软件包,而不是 androidx.wear.compose.material 软件包。这种更新的架构允许您独立于其他设计考虑因素实现手势处理。Material Design 工作流程(例如应用配置主题中的颜色)是单独处理的。
  • SwipeToRevealCardSwipeToRevealChip 类可帮助您实现 推荐的滑动手势揭示指南SwipeToRevealSample 类演示了如何使用这些组件。
  • 我们的 1.3.0-alpha02 版本引入了一项更改,导致 ChipToggleChip 对象的高度增加,以更好地支持用户选择的字体缩放。这可能会导致一些裁剪。为了解决此问题,MaterialThemelarge 形状现在使用更大的圆角半径(26 dp 而不是 24 dp)。ChipToggleChip 对象使用此新圆角半径来避免裁剪 Chip 和 ToggleChip 角上的内容。

    • 大多数 ChipsToggleChips 未发生变化,因为它们默认高度为 52 dp。但是,包含多行主文本或副标签文本,或者高度已被覆盖的 ChipToggleChip 对象可能会导致屏幕截图测试失败。

其他变更

有关 1.3.0 版本中引入的更完整更改集,请参阅beta01 版本说明

实施建议

  • 如果您的应用允许用户在屏幕内容上平移(例如在基于地图的应用中),请将 SwipeDismissableNavHost 可组合项中的 userSwipeEnabled 设置为 false,以关闭滑动处理,并包含一个允许用户返回上一屏幕的按钮。
  • 要在滚动列表中的渐入和位置更改动画期间关闭位置指示器的动画,请使用 SnapSpec 对象。
  • 在等待媒体应用加载内容进行播放时,显示一个空白的 Placeholder 可组合项。
  • 要按需创建可扩展项目集合,请考虑使用实验性 ExpandableStateMapping 类。

版本 1.3.0-rc01

2024 年 1 月 10 日

androidx.wear.compose:compose-*:1.3.0-rc01 已发布。版本 1.3.0-rc01 包含这些提交。

Bug 修复

  • 我们已将 MaterialTheme 大型形状更新为使用 26dp 的圆角半径,现在 Chip 和 ToggleChip 将使用此半径。此更改是为了支持在内容需要额外高度以适应大字体尺寸时进行高度调整,否则,现有的体育场形状会裁剪部分文本内容。

    Text clipped on corners
    图 1:文本在角处被裁剪。
    Text not clipped
    图 2:文本未被裁剪。

    此更改可能会导致屏幕截图测试中断。(I2e6ae

版本 1.3.0-beta02

2023 年 12 月 13 日

androidx.wear.compose:compose-*:1.3.0-beta02 已发布。版本 1.3.0-beta02 包含这些提交。

Bug 修复

  • 我们已恢复 BasicSwipeToDismissBox 中预期的滑动动作。这在之前的版本中已被更改,导致过渡的滑动部分在手指触摸屏幕时发生。(Id8e76

版本 1.3.0-beta01

2023 年 11 月 15 日

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

Wear OS 版 Compose 1.3-beta01 版本表明此库的发布功能已完成,API 已锁定(标记为实验性的除外)。Wear Compose 1.3 包含以下新功能:

  • SwipeToDismissBoxStateSwipeToDismissValueModifier.edgeSwipeToDismiss 已从 androidx.wear.compose.material 迁移到 androidx.wear.compose.foundation,同时底层的滑动手势关闭实现也迁移到 BasicSwipeToDismissBox。这允许滑动手势关闭的手势处理独立于 Material Design 使用,例如 androidx.wear.compose.navigation 中的 SwipeDismissableNavHost。仍建议将 androidx.wear.compose.material 中的 SwipeToDismissBox 与 Material Design 一起使用,因为它从 MaterialTheme 中提取颜色,然后将剩余的实现委托给 BasicSwipeToDismissBox
  • SwipeDismissableNavHost 现在支持新的 userSwipeEnabled 参数,以便在不需要的屏幕上关闭滑动处理。
  • BasicSwipeToDismissBox 使用 HierarchicalFocusCoordinator 改进了焦点处理。
  • SwipeToReveal 在 Material 中新增了 SwipeToRevealCardSwipeToRevealChip 可组合项,遵循了 CardChip 的推荐 UX 指南。它还支持撤消辅助操作。
  • DefaultTextStyle 现在关闭字体填充,以在 Android 平台中保持一致。
  • ChipToggleChip 现在会调整其高度,以适应由于辅助功能而导致大字体内容增长的情况。
  • PositionIndicator 现在为渐入、渐出和位置变化动画提供了单独的动画规范。出于性能原因,建议在与可滚动列表一起使用时关闭渐入和位置变化动画。
  • ExpandableStateMapping 提供了一种新方法来生成 ExpandableStates,当它们需要按需创建并且不一定在 @Composable 范围内时。
  • Placeholder 现在允许在内容不再处于就绪状态时重置。此外,减少动作设置现在适用于 Placeholder 上的闪烁效果和擦除动作。

已知问题

  • PositionIndicator 在屏幕首次显示时不会最初显示。我们打算在早期的 1.4 alpha 版本中进行更改,使其最初显示,但没有任何动画。

API 变更

  • 我们已将 Foundation 级别的 SwipeToDismissBox 重命名为 BasicSwipeToDismissBox。这使 Foundation 级别的组件和 Material 级别的 SwipeToDismissBox 之间的区别更加清晰。后者从 MaterialTheme 中提取颜色用于遮罩,并将剩余的实现委托给 BasicSwipeToDismissBox。(Ibecfc
  • 我们已将 rememberExpandableStateMapping 标记为实验性,并改进了 expandableItem 的性能。(I5f6bc
  • 我们已将 Material SwipeToReveal Card 和 Chip API 中的 SwipeToRevealAction 类替换为基于槽的 API,使用 SwipeToRevealPrimaryActionSwipeToRevealSecondaryActionSwipeToRevealUndoAction 可组合项。请参阅示例代码以了解如何使用新 API。(Ia8943
  • 我们已将 PositionIndicator 动画标志替换为 AnimationSpec 参数。通过将 snap 作为 AnimationSpec 传递,可以禁用单个动画。(I6c523

Bug 修复

  • 我们修复了在尺寸受限时,受限弧形文本触发的错误。(I50efe
  • 我们解决了与 curvedComposable 相关的潜在 NaN 崩溃问题。(I970eb
  • 我们已恢复 PositionIndicator 上位置更改高亮动画的移除。(Ieb424
  • 我们已移除 Material Chip 的 Material Core 层,以提高其性能。(If2dcb

版本 1.3.0-alpha08

2023 年 10 月 18 日

androidx.wear.compose:compose-*:1.3.0-alpha08 已发布。版本 1.3.0-alpha08 包含这些提交。

API 变更

  • 我们已在 PositionIndicator 重载中添加了单独的标志,以控制不同的动画:showFadeInAnimationshowFadeOutAnimationshowPositionAnimation。旧版 API 已被弃用并转发调用到新 API。出于性能原因和 UX 一致性,当 PositionIndicator 与可滚动列表一起使用时,我们建议关闭 showFadeInAnimationshowPositionAnimation 标志。如果 PositionIndicator 用作独立指示器,例如用于音量更改,则我们建议开启所有 3 个动画。(I44294
  • 在将滑动手势关闭功能迁移到 wear.compose.foundation 后,我们已弃用 Material SwipeToDismissBoxStateSwipeToDismissValueedgeSwipeToDismiss。请替换为 wear.compose.foundation 的等效项。(Iee8c9

Bug 修复

  • 我们已更新 wear compose foundation、material 和 navigation 库的基线配置文件。(Idb060
  • 我们已恢复在之前的 CL 中引入的 PositionIndicator 行为更改,即 PositionIndicator 在屏幕首次显示时会进行动画。我们打算在早期的 1.4 alpha 版本中进行类似更改,以便 PositionIndicator 最初显示,但没有任何动画。(I41843
  • 我们解决了 PositionIndicator 中的一些性能问题。(I1c654, b/302399827
  • 我们优化了触控探索状态提供程序默认实现的性能,使其依赖于 State<Boolean> 而不是派生状态。(Ieec4d
  • 我们已为 Android 13 及更高版本设置了 systemGestureExclusion 矩形。(Ib1f4b

版本 1.3.0-alpha07

2023 年 10 月 4 日

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

API 变更

  • 我们已向 PositionIndicator 添加了独立标志,以控制不同的动画:showFadeInAnimationshowFadeOutAnimationshowPositionAnimation。之前的 API 已弃用,并转发调用到新 API。出于性能原因和 UX 一致性,当 PositionIndicator 与可滚动列表一起使用时,我们建议关闭 showFadeInAnimationshowPositionAnimation 标志。如果 PositionIndicator 用作独立指示器,例如用于音量更改,则我们建议开启所有 3 个动画。(Ia2d63

Bug 修复

  • 我们通过为主操作文本添加渐变动画,并在完全滑动展开时渐变辅助操作/更改图标缩放,改进了滑动手势揭示动作。(Ib7223
  • 建议滑动手势揭示操作应易于访问,我们已将自定义辅助功能操作添加到我们的滑动手势揭示示例中。(I42224
  • 我们改进了 SwipeToDismissBox 的性能,包括重构以确保初始逻辑不会触发重新组合。SwipeToDismissBox 现在以全屏尺寸绘制。(Ie0aa2
  • 我们修复了 PositionIndicator 错误消失的错误。(I2091a
  • 通过优化重新组合,提高了 PositionIndicator 的性能。控制动画的新标志(fadeInfadeOutpositionChange)已随后添加(请参阅 API 更改)。(Ifac7d
  • 我们已为 PositionIndicator 添加了 Microbenchmark 测试。(Idf875

版本 1.3.0-alpha06

2023 年 9 月 20 日

androidx.wear.compose:compose-*:1.3.0-alpha06 已发布。版本 1.3.0-alpha06 包含这些提交。

Bug 修复

  • 我们已为 Modifier.edgeSwipeToDismiss 添加了 SwipeToReveal 的支持。(I95774, b/293444286
  • 我们已为 Material SwipeToRevealChipSwipeToRevealCard 添加了示例。(Ieb974
  • 我们已更新 Wear Compose Foundation 和 Material 库的基线配置文件。(I1dd1f

版本 1.3.0-alpha05

2023 年 9 月 6 日

androidx.wear.compose:compose-*:1.3.0-alpha05 已发布。版本 1.3.0-alpha05 包含这些提交。

Bug 修复

  • 我们已在“滑动手势揭示”中添加处理,以便一次只能滑动一个项目。(I3cd7a
  • 改进了 ScalingLazyColumnDefaults 的文档,以更好地匹配其实际行为。(I886d3

版本 1.3.0-alpha04

2023 年 8 月 23 日

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

新功能

  • 我们已为 SwipeToReveal 的辅助操作添加了撤消支持。(I7a22d

API 变更

  • 在 Wear Material3 库中添加 HorizontalPageIndicator。(Ifee99
  • 已更新 Wear Compose 预览工具,以使用 androidx.wear.tooling.preview 库。(Ib036e

Bug 修复

  • 修复了圆形按钮中修饰符未正确链接的错误。(I5e162

版本 1.3.0-alpha03

2023 年 8 月 9 日

androidx.wear.compose:compose-*:1.3.0-alpha03 已发布。版本 1.3.0-alpha03 包含这些提交。

API 变更

  • 我们已在 Material 中添加了两个新的可组合项,用于使用卡片和芯片实现 SwipeToReveal。这些可组合项遵循了组件上推荐的 UX 指南,并使开发人员更容易使用 Wear Material 中的现有组件实现 SwipeToReveal。(I7ec65
  • 我们已将 FloatRange 注解作为 API 约束打开,之前是在注释中声明的。(Icb401

Bug 修复

  • 我们已将 ScalingLazyColumn 的初始滚动逻辑移至 onGloballyPositioned() 内部。(Ic90f1
  • 我们现在在 PositionIndicatorProgressIndicatorSelectionControls 中使用 drawWithCache 来优化笔触分配。(I5f225, b/288234617
  • 我们修复了禁用状态下复选框勾选可见性的错误。(Ib25bf
  • 我们已更新 Placeholder,允许在内容不再处于就绪状态时重置以显示占位符。(Ibd820
  • 我们修复了不稳定的 Placeholder 测试。(Idb560

版本 1.3.0-alpha02

2023 年 7 月 26 日

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

API 变更

  • 我们提供了 ExpandableStateMapping,这是一种生成 ExpandableStates 的新方法,适用于需要按需创建而非一定在 @Composable 范围内的场景。(Iff9e0
  • SwipeToDismissBox 已从 androidx.wear.compose.material 包迁移到 androidx.wear.compose.foundation 包。(I275fb
  • 更新了 API 文件以注释兼容性抑制。(I8e87a, b/287516207
  • 我们已将 ChipCompactChipToggleChip 的高度常量公开。(Idbfde
  • 我们已将 ChipCompactChip 的水平和垂直填充公开。(Ieeaf7
  • 通过新的 userSwipeEnabled 参数,在 SwipeDismissableNavHost 中添加了关闭滑动处理的功能。(Id2a0b, b/230865655
  • 我们已更新 Wear Compose Navigation 库,以使用 Wear Compose Foundation 中的新 SwipeToDismissBox。(I4ff8e

Bug 修复

  • 我们修复了一个 z-order 错误,即 expandedItem 在点击按钮行为后未显示正确的内容。(I1899d, b/289991514
  • 使用 HierarchicalFocusCoordinator 改进了 SwipeToDismissBox(以及因此 SwipeDismissableNavHost)的焦点处理。(I45362, b/277852486
  • 我们已对 SwipeableV2 中的手势处理进行了修复。(I89737
  • 我们已最终确定 1.2 版本的基线配置文件。(Id5740
  • 在将 SwipeToDismissBox 迁移到 Foundation 之后,Material SwipeToDismissBox 的实现现在转发到 Foundation,并从其主题中提供默认颜色值。(If8451
  • 我们已为 ListHeader 添加了标题语义。(Ic5420
  • ChipToggleChip 现在会在必要时调整其高度,以适应由于辅助功能而导致大字体内容增长的情况。(Iaf302
  • 修复了 SplitToggleChip 可点击区域的语义角色错误,用于辅助功能。(Ieed3a
  • 当开启“减少动作”设置时,占位符上的闪烁效果和擦除动作现在会关闭。(I91046
  • StepperInlineSlider 现在支持长按重复点击,这样您可以通过按住 + 或 - 按钮快速增加/减少 StepperInlineSlider 的值。(I27359

版本 1.3.0-alpha01

2023 年 6 月 21 日

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

Bug 修复

  • 正如在 1.2.0-alpha071.2.0-alpha10 中宣布的,我们现在正在更改 DefaultTextStyle 以关闭字体填充,以便在 Android 平台中保持一致。这将解决一些大字体尺寸下文本裁剪的情况,也可能影响屏幕布局,因此需要更新屏幕截图测试。例如,我们在这里看到文本裁剪(Ic6a86
Text clipped with large font size
图 1:文本被裁剪。
  • 当字体填充关闭时,它就不再存在。
Text not clipped with large font size
图 2:文本未被裁剪。
  • 我们已将 wear.compose.foundation 更新为 wear.compose.material 的 API 依赖项。(I72004, b/285404743
  • 我们修复了 SwipeToDismissBox 中的一个错误。背景和内容键现在传递给 remember 块,以便在内容或背景更改时创建新的修饰符。(Ib876c, b/280392104
  • 我们已更新 TimeText,以在使用 12 小时或 24 小时时间格式时使用语言环境。(If4a3d
  • 我们修复了 SwipeToDismissBox contentScrimColor 默认参数的不一致。(I2d70f
  • 我们改进了 SwipeToReveal 中的动作处理。(I28fb7

已知问题

  • 支持用户配置的字体大小是辅助功能要求。我们知道多行芯片在大字体尺寸下显示时可能会导致文本裁剪,因此我们将在早期的 1.3 alpha 版本中更新 Chip,以便在这些情况下调整高度。

版本 1.2

版本 1.2.1

2023 年 10 月 18 日

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

Bug 修复

  • 修复了 PositionIndicator 错误消失的错误。(7a167f

版本 1.2.0

2023 年 8 月 9 日

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

自 1.1.0 以来的重要变更

版本 1.2.0-rc01

2023 年 7 月 26 日

androidx.wear.compose:compose-*:1.2.0-rc01 已发布。版本 1.2.0-rc01 包含这些提交。

Bug 修复

  • 我们已最终确定 1.2 版本的基线配置文件。(Id5740

版本 1.2.0-beta02

2023 年 6 月 7 日

androidx.wear.compose:compose-*:1.2.0-beta02 已发布。版本 1.2.0-beta02 包含这些提交。

新功能

  • 我们添加了新的实验性 LocalReduceMotion CompositionLocal 变量,该变量禁用 ScalingLazyColumn 上的缩放和渐变。(I58024

Bug 修复

  • 我们已更新 Wear Compose Foundation 和 Material 库的基线配置文件。(I4725d
  • 我们修复了 SwipeToDismissBox contentScrimColor 参数默认值的不一致问题。(I2d70f
  • 我们修复了 DefaultTextStyle 用于 IncludeFontPadding 设置的默认值。(I737ed

版本 1.2.0-beta01

2023 年 5 月 24 日

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

Wear OS 版 Compose 1.2 的内容

Wear OS 版 Compose 的 1.2-beta01 版本表明此库的发布功能已完成,并且 API 已锁定(标记为实验性的除外)。Wear Compose 1.2 包含以下新功能:

  • expandableItemexpandableItems 是两个新的 Foundation 组件,支持在 ScalingLazyColumn 中展开项目。对单个可扩展项目(例如行数文本)使用 expandableItem。对一组可扩展项目使用 expandableItems,并使用 expandableButton 简化创建在内容展开后折叠的按钮。
  • HierarchicalFocusCoordinator - 这个实验性的可组合项允许将组合的子树标记为焦点启用或焦点禁用。
  • Picker - 该 API 现在包含 userScrollEnabled,用于控制选择器是否对用户滚动激活。
  • PickerGroup - 一个用于同时处理多个选择器的新可组合项。它使用 HierarchicalFocusCoordinator API 处理选择器之间的焦点,并支持选择器项的自动居中。
  • Placeholder - 我们已更新了闪烁和“擦除”动画。内容就绪后,擦除效果会立即应用。
  • ScalingLazyColumn - 我们已将 ScalingLazyColumn 及相关类从 androidx.wear.compose.material.ScalingLazyColumn 迁移到 androidx.wear.compose.foundation.lazy.ScalingLazyColumn。请更新以使用 Foundation.Lazy 版本。
  • SwipeToReveal - 我们添加了滑动手势揭示的实验性支持,作为访问辅助操作的一种方式,补充了现有的“长按”模式。
  • Stepper - 现在有一个重载,带有一个额外的 enableRangeSemantics 参数,以方便禁用默认范围语义。
  • Previews - 我们添加了以下自定义注解,用于在 Wear 屏幕上预览可组合项:WearPreviewSmallRound 在小型圆形设备上预览可组合项;WearPreviewLargeRound 在大型圆形设备上预览可组合项;WearPreviewSquare 在方形设备上预览可组合项。此外,还有以下多预览注解:WearPreviewFontScales 在 Wear 设备上以多种字体大小预览可组合项,而 WearPreviewDevices 在不同的 Wear 设备上预览可组合项。
  • 我们已将 DefaultTextStyle 添加到 Wear Compose 中,它将 PlatformTextStyle.includeFontPadding 属性默认设置为 true(这是当前设置)。这将允许我们在早期的 1.3 alpha 版本中与 Compose 库同步默认关闭字体填充——有关更多信息,请参阅 1.2.0-alpha10

新功能

  • 我们已添加对在开启 reduce_motion 设置时禁用缩放和渐变动画的实验性支持。(I58024

Bug 修复

  • 改进了 CurvedSize.ktangularWidthDp 的文档。(Iab75c
  • SwipeDismissableNavHost 现在会在返回堆栈为空时记录警告并提示潜在原因。这样做是为了防止因返回堆栈为空而抛出 IllegalArgumentException 导致的意外崩溃。(I04a81, b/277700155

版本 1.2.0-alpha10

2023 年 5 月 10 日

androidx.wear.compose:compose-*:1.2.0-alpha10 已发布。版本 1.2.0-alpha10 包含这些提交。

新功能

  • 我们已添加对滑动手势揭示的支持,作为访问辅助操作的一种方式。这种模式补充了“长按”模式,即用户可以揭示(不同)辅助操作的现有方式。(I60862

API 变更

  • 我们已将 RevealScope 添加到 SwipeToReveal 中的操作可组合项中,该可组合项可访问揭示附加操作的偏移量。(I3fd56

Bug 修复

  • 修复了 ScalingLazyColumn 在 Wear API 33 上滑动后卡住的问题。(Ic4599
  • 我们已对 PositionIndicator 进行了一些性能改进,以减少卡顿。(I35e92
  • 我们修复了 Chip 和 CompactChip 中的一个错误,即语义角色不再设置为 Role.Button。(I93f91, b/277326264

已知问题

  • 我们已发现 Android Studio 中的一个错误,该错误导致使用 @WearPreviewDevices 和 @WearPreviewFontScales 注解时渲染预览失败——修复方案计划很快发布。请注意,其他 Wear 预览注解在 Android Studio Giraffe 2022.3.1 及更高版本中按预期工作。

  • 在版本 1.2.0-alpha07 中,我们为 Wear Compose 添加了 DefaultTextStyle,将现有的 PlatformTextStyle.includeFontPadding 值保持为 true——有关背景信息,请参阅 修复 Compose 中的字体填充。我们将在早期的 1.3 alpha 版本中更改 DefaultTextStyle,以关闭字体填充,以便在 Android 平台中保持一致。这将解决一些大字体尺寸下文本裁剪的情况,也可能影响屏幕布局,因此需要更新屏幕截图测试。例如,在大字体尺寸下,我们在这里看到文本裁剪:

Text clipped with large font size
图 1:文本被裁剪。
  • 当字体填充关闭时,它就不再存在。
Text not clipped with large font size
图 2:文本未被裁剪。

现在可以通过在主题中覆盖排版来采用新设置——请参阅示例代码

版本 1.2.0-alpha09

2023 年 4 月 19 日

androidx.wear.compose:compose-*:1.2.0-alpha09 已发布。版本 1.2.0-alpha09 包含这些提交。

API 变更

  • CurvedModifier API 添加 angularSizeDp,用于设置以 DP 为单位的角度宽度。(I89a52

Bug 修复

  • 我们修复了时间选择器演示中的辅助功能问题。(Id0eb7

版本 1.2.0-alpha08

2023 年 4 月 5 日

androidx.wear.compose:compose-*:1.2.0-alpha08 已发布。版本 1.2.0-alpha08 包含这些提交。

API 变更

  • 我们已将 ExpandableItemsState 重命名为 ExpandableState。(If85ea
  • 我们已添加 expandableButton,以简化创建在内容展开时折叠的按钮,并更新了可扩展示例。(Iae309

Bug 修复

  • 改进了可扩展示例以显示更多可能性。修改了 expandableItem 的动画,使其内容在动画过程中保持居中。(I2f637
  • 更新了 ToggleControls,以避免在使用 State 手动设置颜色动画时出现额外的重组。(I5d319

版本 1.2.0-alpha07

2023 年 3 月 22 日

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

API 变更

  • 我们已将可扩展项目组件(在 1.2.0-alpha06 中添加)从 Material 移至 foundation,因为它们没有对 MaterialTheme 的有意义引用。(Ib0525

Bug 修复

  • 我们修复了在使用 PickerGroup 的屏幕上发生的崩溃,通过确保 PickerGroup 在没有 Picker 获得焦点时正确处理焦点。同时在我们的 Picker 演示中添加了对 RSB 滚动的支持。(If8c19
  • 我们改进了对话框过渡效果——进入过渡现在更平滑,以匹配退出过渡。(Ib5af9
  • 我们已将 DefaultTextStyle 添加到 Wear Compose 中,它将 PlatformTextStyle.includeFontPadding 属性默认设置为 true(这是当前设置)。这将使我们能够在将来与 Compose 库同步默认关闭字体填充——有关背景信息,请参阅 (修复 Compose 中的字体填充)。(I2aee8
  • 已通过 activity-compose 还原了阻止向 Google Play 商店发布应用程序的 UpsideDownCake 预览依赖项。(I6443d

版本 1.2.0-alpha06

2023 年 3 月 8 日

androidx.wear.compose:compose-*:1.2.0-alpha06 已发布。版本 1.2.0-alpha06 包含这些提交。

API 变更

  • 添加了 CurvedBox 组件,它将组件在弯曲世界中相互堆叠。(I29200
  • 添加了可扩展项目——两个新组件,用于支持 ScalingLazyColumn 中的一组可扩展项目,或一个可扩展的单个项目,例如行数可扩展的文本。(I95dd5
  • 我们已为 Wear 屏幕上的可组合项预览添加了以下自定义注解:WearPreviewSmallRound 在小型圆形设备上预览可组合项;WearPreviewLargeRound 在大型圆形设备上预览可组合项;WearPreviewSquare 在方形设备上预览可组合项。此外,还有以下多预览注解:WearPreviewFontScales 在 Wear 设备上以多种字体大小预览可组合项,而 WearPreviewDevices 在不同的 Wear 设备上预览可组合项。要使用这些预览,您必须使用最新的 Android Studio(Giraffe Canary 6)或更高版本。请注意,如果这些注解不符合您的目的,仍然可以使用 Preview 并支持通过参数进行进一步自定义。(I397ff
  • 我们已将 HierarchicalFocusCoordinator 标记为实验性,因为它被认为是移入核心 Compose 库的候选,鉴于其广泛适用性。(I3a768

Bug 修复

  • 修复了 HierarchicalFocusCoordinator 中的一个错误,当传递给 focusEnabled 参数的 lambda 发生更改时,我们现在正确使用了新的 lambda。(Icb353
  • 当在 ButtonCompactButtonChipCompactChipToggleButton 中使用主色作为背景时,我们已将默认禁用内容颜色更新为背景色。这改善了辅助功能的对比度。(I527cc

版本 1.2.0-alpha05

2023 年 2 月 22 日

androidx.wear.compose:compose-*:1.2.0-alpha05 已发布。版本 1.2.0-alpha05 包含这些提交。

API 变更

  • 更新了 PickerGroup API,允许选择性地将最小约束传播到可组合项。当设置为 true 时,从父可组合项传递的最小约束将允许在 PickerGroup 上。如果设置为 false,PickerGroup 将重置最小约束。(I3e046
  • 我们已将 animateScrollToOption 添加到 Picker API 中,以支持程序化动画到特定的 Picker 选项。(I6fe67

Bug 修复

  • 我们已更新 HorizontalPageIndicator 以支持从右到左的布局。(Ia4359
  • HorizontalPageIndicator 中的从右到左布局添加了屏幕截图测试。(I6fbb8
  • SwipeDismissableNavHostTest 添加了更多使用 TestNavHostController 的测试。(I61d54

版本 1.2.0-alpha04

2023 年 2 月 8 日

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

新功能

  • PickerGroup 用于使用焦点 API 同时处理多个选择器。它处理不同选择器之间的焦点,根据参数启用选择器的自动居中,并允许开发人员在处理组中的事件时更改不同选择器之间的焦点。在 Talkback 模式下,PickerGroup 通过将焦点移动到组中选定的 Picker 来处理 Talkback 焦点。(I60840

API 变更

  • 我们为 Stepper 添加了一个重载,带有一个额外的 enableRangeSemantics 参数,以方便禁用默认范围语义。(Ia61d4

Bug 修复

  • 允许 ScalingLazyColumn 嵌套在水平滚动页面中。(Iec3f8, b/266555016
  • Stepper kdocs 的改进和 StepperTest 测试的清理。(Ic118e
  • 更新了 androidx.navigation 依赖项至版本 2.5.3。(If58ed

版本 1.2.0-alpha03

2023 年 1 月 25 日

androidx.wear.compose:compose-*:1.2.0-alpha03 已发布。版本 1.2.0-alpha03 包含这些提交。

API 变更

  • 我们已将 ScalingLazyColumn(及相关类)从 androidx.wear.compose.material.ScalingLazyColumn 迁移到 andrdoidx.wear.compose.foundation.lazy.ScalingLazyColumn(迁移示例请参阅此处)。这个新位置更贴近 compose.foundation.lazy.LazyColumn 的位置,也更自然,因为它不是一个有特定看法的 Material 组件。此更改正在进行中,旨在为新的 Material3 库做准备,我们将与现有 Material 库并行开发该库。(I060e7

以下更改是 ScalingLazyColumn 从 Material 迁移到 Foundation.Lazy 的一部分:

  • 目标 Material ScalingLazyColumnPositionIndicator API 已弃用 – 请更新到 Foundation.Lazy ScalingLazyColumn。此外,anchorType 字段已添加到 ScalingLazyListLayoutInfo 中。(I29d95
  • ScalingLazyColumn 在 Wear Compose Material 包中已被标记为弃用(I16d34
  • 我们已更新 ScrollAway 修饰符以使用 Wear Compose Foundation.Lazy 中的 ScalingLazyListState,并弃用了使用 Wear Compose Material 中的 ScalingLazyListState 的重载。(Ifc42c
  • 我们已更新 Dialog API 以使用 Foundation.Lazy 中的 ScalingLazyListState,并弃用了使用 Material ScalingLazyListState 的重载(Ic8960
  • 我们已更新 Picker API 以使用 Foundation.Lazy 中的 ScalingParams,并弃用了使用 Material ScalingParams 的重载。(Idc3d8

Bug 修复

  • 我们修复了一个导致 ScalingLazyListState.centerItemIndex 中不必要地重新组合的错误,确保它仅在值实际更改时才推送更新(Ia9f38
  • 我们改进了 SwipeToDismissBox 的性能(I3933b
  • 为 Wear Compose Foundation 中的 ScalingLazyColumn 添加了基准测试(Ie00f9
  • 我们已更新 Material 中某些内部 ScalingLazyColumn 类的方法,以使用 Foundation.Lazy 中的等效方法(I38aab
  • 我们修复了 Picker 测试中的一些问题,并添加了更多测试以检查带偏移量的滚动(I6ac34
  • 我们已将 ScalingLazyColumn 集成演示迁移为依赖 Foundation.Lazy 而不是 Material ScalingLazyColumnIc6caa
  • 我们已为 DatePicker 演示添加了可选的 fromDate/toDate 参数(I961cd

版本 1.2.0-alpha02

2023 年 1 月 11 日

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

API 变更

  • Android Compose UI 测试现在将在执行帧以达到空闲状态(例如通过 waitForIdle)时,为每个帧运行布局传递。这可能会影响断言布局动画单个帧的测试。(I8ea08, b/222093277
  • 为了与 BasicText 的行为保持一致,minLines 参数已添加到 Wear Text 中(I24874
  • CompactChipTapTargetPadding 已公开,以便在文档中显示(If1e70, b/234119038

Bug 修复

  • 禁用 wear.compose 包的多平台构建(Iad3d7
  • 修复 scrollToOption 的 kdocs(I6f9a0
  • PlaceholderState.rememberPlaceholderState() 已更新为使用 rememberUpdatedState,以便在 onContentReady lambda 发生变化时状态也会更新。(I02635, b/260343754
  • 我们利用添加到 Modifier.graphicsLayer 的新合成策略,修复了 Picker 组件中出现的文本抖动问题。(I99302
  • 我们修复了 DatePicker 演示中导致闪烁的错误(I660bd
  • 我们改进了 12 小时制时间和日期选择器演示的可访问性(I05e12
  • 我们更新了时间与日期选择器演示,使其在未选中时不受 RSB 更改的影响(I4aecb

版本 1.2.0-alpha01

2022 年 12 月 7 日

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

新功能

  • 我们已更新实验性的 Placeholder 功能,使其在内容就绪后立即应用“擦除”效果,而不是等待下一个动画循环开始。我们还对闪烁和擦除动画进行了一些更新。(I5a7f4

API 变更

  • 我们添加了 HierarchicalFocusCoordinator 可组合项,以允许将组合的子树标记为焦点启用或焦点禁用。(I827cb
  • 我们为 ToggleButton 添加了一个新属性,以覆盖其语义角色。(I67132
  • 我们已更新 TimeTextDefaults.TimeFormat12Hours,以从 TimeText 中移除 AM/PM。这将改变 TimeText API 中 timeSource 参数的默认值。(I1eb7f
  • 我们扩展了 Picker API,以改进多选择器屏幕的可访问性。添加了一个新属性 userScrollEnabled,用于控制选择器是否对用户滚动激活。(I3c3aa

Bug 修复

  • 我们已将 OutlinedButton/OutlinedCompactButton 的默认边框宽度从 2.dp 更改为 1.dp,以匹配最终 UX 规范。(Icf84d
  • 为了减少添加到空 ScalingLazyColumn 的第一个项目看起来像滚动到位的效果,我们在内容为空时添加了一个估算的 autoCentering topPadding。此更改通过假定初始项目高度为 0.dp 来计算所需的顶部填充量。ScalingLazyListAnchorType.ItemStart 将计算正确的顶部填充,而对于 ScalingLazyListAnchorType.ItemCenter,此计算将不正确,因为需要项目的高度才能正确调整内容大小,从而根据项目的实际高度产生一个小的滚动到位效果。(I239a4
  • 我们已更新应用于 SwipeToDismiss 动画的背景幕布,以匹配 Wear 平台。(I9003e
  • 我们修复了 PositionIndicator 处理大小为 0 的列表项目时的 LazyListStateScalingLazyListState 问题,以避免除零错误。(Ic28dd

版本 1.1

版本 1.1.2

2023 年 2 月 8 日

androidx.wear.compose:compose-foundation:1.1.2androidx.wear.compose:compose-material:1.1.2androidx.wear.compose:compose-navigation:1.1.2 已发布。版本 1.1.2 包含这些提交。

Bug 修复

  • 我们修复了一个导致 ScalingLazyListState.centerItemIndex 中不必要地重新组合的错误,确保它仅在值实际更改时才推送更新(Ia9f38

版本 1.1.1

2023 年 1 月 11 日

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

Bug 修复

  • PlaceholderState.rememberPlaceholderState() 已更新为使用 rememberUpdatedState,以便在 onContentReady lambda 发生变化时状态也会更新。(I02635, b/260343754

版本 1.1.0

2022 年 12 月 7 日

androidx.wear.compose:compose-foundation:1.1.0androidx.wear.compose:compose-material:1.1.0androidx.wear.compose:compose-navigation:1.1.0 已发布。版本 1.1.0 包含这些提交。

自 1.0.0 以来的重要更改

新功能

  • 我们已更新实验性的 Placeholder 功能,使其在内容就绪后立即应用“擦除”效果,而不是等待下一个动画循环开始。我们还对闪烁和擦除动画进行了一些更新。(I5a7f4

Bug 修复

  • 我们已将 OutlinedButton/OutlinedCompactButton 的默认边框宽度从 2.dp 更改为 1.dp,以匹配最终 UX 规范。(Icf84d
  • 为了减少添加到空 ScalingLazyColumn 的第一个项目看起来像滚动到位的效果,我们在内容为空时添加了一个估算的 autoCentering topPadding。此更改通过假定初始项目高度为 0.dp 来计算所需的顶部填充量。ScalingLazyListAnchorType.ItemStart 将计算正确的顶部填充,而对于 ScalingLazyListAnchorType.ItemCenter,此计算将不正确,因为需要项目的高度才能正确调整内容大小,从而根据项目的实际高度产生一个小的滚动到位效果。(I239a4
  • 我们已更新应用于 SwipeToDismiss 动画的背景幕布,以匹配 Wear 平台。(I9003e
  • 我们修复了 PositionIndicator 处理大小为 0 的列表项目时的 LazyListStateScalingLazyListState 问题,以避免除零错误。(Ic28dd

版本 1.1.0-rc01

2022 年 11 月 9 日

androidx.wear.compose:compose-foundation:1.1.0-rc01androidx.wear.compose:compose-material:1.1.0-rc01androidx.wear.compose:compose-navigation:1.1.0-rc01 已发布。版本 1.1.0-rc01 包含这些提交。

Bug 修复

  • 我们已为 PlaceholdersScrollAwayRadioButtonSwitchCheckboxOutlinedButtonOutlinedCompactButtonOutlinedChipOutlinedCompactChip 添加了基线配置文件规则。(I8249c
  • 我们修复了 Modifier.scrollAway 中的一个错误,以便在指定的 itemIndex 无效(例如,该项目索引超出范围)时,TimeText 仍将显示。(I2137a
  • 我们已更新 SwipeToDismissBox 动画以匹配平台实现。在初始挤压动画后,屏幕在触发关闭后会向右滑出。(I41d34
  • 作为一项优化,我们已更新 Modifier.scrollAway,使其仅在测量块内读取 scrollState,以避免在每次重新测量后重新组合修饰符。(I4c6f1
  • 我们为占位符添加了文档和示例,以展示当 Modifier.placeholderModifier.placeholderShimmer 应用于同一可组合项时,正确的排序方式。(Ie96f4, b/256583229
  • 我们已将 OutlinedCompactChip/OutlinedChip 的默认边框宽度从 2.dp 更改为 1.dp,以匹配最终 UX 规范。(Ib3d8e
  • 我们修复了 rememberPickerState 中的一个错误,其中更新的输入未保存,导致可组合项在输入更改后未更新。(I49ff6, b/255323197
  • 我们对占位符进行了一些 UI 更新:1)将闪烁渐变更改为屏幕尺寸的 1.5 倍,2)添加闪烁进度的缓和(三次贝塞尔曲线),以及 3)加快擦除动画(250 毫秒)。(Id29c1
  • 我们纠正了占位符擦除效果中的一个 UI 错误,其中 Chip 和 Card 背景擦除过早,因为没有考虑到组件在屏幕上的位置。(I2c7cb
  • 我们已更新占位符背景绘制,尽可能合并颜色而非分层,以降低不同裁剪层的 alpha 混合导致底层颜色在占位符背景边缘渗出的风险。(I2ea26
  • 我们纠正了 ScalingLazyListState.centerItemIndex/centerItemOffset 的计算,以便如果两个项目位于视口中心线的两侧,则将最接近的一个视为 centerItem。(I30709, b/254257769
  • 我们修复了 ScalingLazyListState.layoutInfo.visibleItemsInfo 中的一个错误,该错误在 ScalingLazyColumn 初始化期间报告了不正确的偏移量。现在,在所有列表项目可见且具有正确偏移量之前,将返回一个空列表。检查 ScalingLazyListState.layoutInfo.visibleItemsInfo.isNotEmpty() 将确认 ScalingLazyColumn 初始化已完成且项目可见。(I3a3b8

版本 1.1.0-beta01

2022 年 10 月 24 日

androidx.wear.compose:compose-foundation:1.1.0-beta01androidx.wear.compose:compose-material:1.1.0-beta01androidx.wear.compose:compose-navigation:1.1.0-beta01 已发布。版本 1.1.0-beta01 包含这些提交。

Wear OS 版 Compose 1.1 的内容

Wear OS 版 Compose 的 1.1.0-beta01 版本表明该库的功能已完成且 API 已锁定。

  • Wear Compose 1.1 版本包含以下新功能
    • 选择器 - 改进了选择器的辅助功能,以便多选择器屏幕可以通过屏幕阅读器进行导航,并且内容描述可访问
    • Picker contentDescription 参数现在仅用于选定的 Picker 选项,并接受可为空的 String(在之前的提交中,需要从选项到内容描述传递映射,但只使用了选定的选项)。
    • 选择器项目现在始终居中对齐,修复了将 gradientRatio 设置为零会附带更改对齐方式的错误。
    • Chip/ToggleChip - 我们已更新 Chip/ToggleChip 的默认渐变,使其与最新的 UX 规范保持一致。ChipDefaults.gradientBackgroundChipColors 已更新为从 primary 的 50% 开始,而不是 32.5%。
    • Chip/ToggleChip - 添加了用于修改 Chip 形状的重载
    • Chip/Button/ToggleButton - 添加了一种新的轮廓样式用于 Chip 和 Button,以及新的 OutlinedChipOutlinedButton 可组合项,它们提供了带有细边框的透明 Chip/Button
    • 卡片 - 更新了卡片的默认渐变,使其与最新的 UX 规范保持一致。CardDefaults.cardBackgroundPainter 已更新为从 primary 的 30% 开始,并在 onSurfaceVariant 的 20% 结束(之前为 20% 到 10% 的 onSurfaceVariant)。ToggleChip.toggleChipColors 从 75% surface 到 32.5% primary 的线性渐变变为 0% surface 到 50% primary。
    • Button/ToggleButton - 添加了用于修改按钮形状的属性。
    • 主题 - 更新了 MaterialTheme 中的一些默认颜色,以改善可访问性,因为原始颜色对比度不足,导致用户难以区分芯片/卡片/按钮背景与主题背景颜色。
    • InlineSlider/Stepper - 添加了按钮角色,以便 Talkback 可以将它们识别为按钮。
    • Scaffold - PositionIndicator 现在已定位并调整大小,以便它只占用所需的空间。这很有用,例如,如果向其添加语义信息,Talkback 现在可以获取屏幕上 PositionIndicator 的正确边界。
    • CurvedText/TimeText - 添加了 Modifier.scrollAway,它根据滚动状态垂直滚动项目进入/移出视图(带有重载以与 ColumnLazyColumnScalingLazyColumn 配合使用)。当用户开始向上滚动项目列表时,ScrollAway 通常用于将 TimeText 滚动到视图之外。
    • CurvedText/TimeText - 在 CurvedTextStyle 中添加了对 fontFamilyfontStylefontSynthesis 的支持,可用于 curvedTextbasicCurvedText
    • CurvedText/TimeText - 在 CurvedTextStyle 的构造函数和复制方法中添加了 fontWeight
    • ToggleControls - 添加了动画的 CheckboxSwitchRadioButton 切换控件,用于 ToggleChipSplitToggleChip。这些可以代替 ToggleChipDefaults 提供的静态图标(switchIconcheckboxIconradioIcon)。
    • 占位符 - 添加了实验性占位符支持。这具有三种不同的视觉效果,旨在协同工作。
    • 首先是占位符背景画笔效果,用于 Chip 和 Cards 等容器中,在等待内容加载时绘制在正常背景之上。
    • 其次是一个修饰符(Modifier.placeholder()),用于在正在加载的内容上方绘制一个体育场形状的占位符小部件。
    • 第三是一个修饰符渐变/闪烁效果(Modifier.placeholderShimmer()),它绘制在其他效果之上,以指示用户正在等待数据加载。
      • 所有这些效果都被设计为协同工作,并以协调一致的方式闪烁和擦除。
  • 核心 Compose 依赖项已从 1.2 更新到 1.3

API 变更

  • 字体参数(fontFamilyfontWeightfontStylefontSynthesis)现在可以直接作为 curvedText 的参数指定(Idc422

Bug 修复

  • curveTextbasicCurvedText 现在将与 talkback 正常工作(它们具有一个大小合适且位置正确(但为空)的 compose-ui 节点与它们关联,使用文本作为内容描述)(I7af7c, b/210721259
  • 修复了 PickerPickerState.repeatedItems = false 时的错误,以在 Picker 的内部 ScalingLazyColumn 上明确设置 autoCentering 参数,以确保可以将第零个选项滚动到视图中心。(I8a4d7

版本 1.1.0-alpha07

2022 年 10 月 5 日

androidx.wear.compose:compose-foundation:1.1.0-alpha07androidx.wear.compose:compose-material:1.1.0-alpha07androidx.wear.compose:compose-navigation:1.1.0-alpha07 已发布。版本 1.1.0-alpha07 包含这些提交。

新功能

  • 我们添加了实验性占位符支持。这具有三种不同的视觉效果,旨在协同工作。首先是占位符背景画笔效果,用于 Chip 和 Cards 等容器中,在等待内容加载时绘制在正常背景之上。其次是一个修饰符(Modifier.placeholder()),用于在正在加载的内容上方绘制一个体育场形状的占位符小部件。第三是一个修饰符渐变/闪烁效果(Modifier.placeholderShimmer()),它绘制在其他效果之上,以指示用户正在等待数据加载。所有这些效果都被设计为协同工作,并以协调一致的方式闪烁和擦除。(I3c339

API 变更

  • CurvedTextStyle 中添加了对 fontWeightfontFamilyfontStylefontSynthesis 的支持,可用于 curvedTextbasicCurvedText。这些参数可用于指定弯曲文本使用的字体和样式。(Iaa1a8)、(I72759
  • 更新了 Modifier.scrollAway 的偏移量参数,使其与 Modifier.offset 保持一致,使用 Dp 作为单位(以前是像素)。此外,为了提高效率,重构为 LayoutModifier。(I9f94b
  • 作为新切换控件 API 的一部分,我们已将 RadioButton’s circleColor 重命名为 ringColor。(I28fa9
  • 我们添加了动画的 CheckboxSwitchRadioButton 切换控件,用于 ToggleChipSplitToggleChip。这些可以代替 ToggleChipDefaults 提供的静态图标(switchIconcheckboxIconradioIcon)。(I8a8c4

版本 1.1.0-alpha06

2022 年 9 月 21 日

androidx.wear.compose:compose-foundation:1.1.0-alpha06androidx.wear.compose:compose-material:1.1.0-alpha06androidx.wear.compose:compose-navigation:1.1.0-alpha06 已发布。版本 1.1.0-alpha06 包含这些提交。

新功能

  • 我们添加了 Modifier.scrollAway,它根据滚动状态垂直滚动项目进出视图(带有重载以与 ColumnLazyColumnScalingLazyColumn 配合使用)。ScrollAway 通常用于当用户开始向上滚动项目列表时,将 TimeText 滚动到视图之外。(I61766

Bug 修复

  • 现在 PositionIndicator 的定位和大小都经过调整,使其只占用所需的空间。这很有用,例如,如果向其添加语义信息,talkback 现在可以获取屏幕上 PositionIndicator 的正确边界。(Ie6106, b/244409133

版本 1.1.0-alpha05

2022 年 9 月 7 日

androidx.wear.compose:compose-foundation:1.1.0-alpha05androidx.wear.compose:compose-material:1.1.0-alpha05androidx.wear.compose:compose-navigation:1.1.0-alpha05 已发布。版本 1.1.0-alpha05 包含这些提交。

Bug 修复

  • 已将按钮角色添加到 InlineSliderStepper 中,以便 Talkback 可以将它们识别为按钮。(Icb46c, b/244260275
  • 我们已纠正 Scaffold 中位置和页面指示器的 Z 顺序。指示器现在将位于晕影之上,因此如果存在晕影,它们将不会被晕影遮挡。(Ib988f, b/244207528

版本 1.1.0-alpha04

2022 年 8 月 24 日

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

API 变更

  • 我们已更新 MaterialTheme 中的一些默认颜色,以改善可访问性,因为原始颜色对比度不足,导致用户难以区分芯片/卡片/按钮背景与主题背景颜色。更新后的颜色包括 surface (0xFF202124->0xFF303133)、onPrimary (0xFF202124->0xFF303133)、onSecondary (0xFF202124->0xFF303133)、primaryVariant (0xFF669DF6->0xFF8AB4F8) 和 onError (0xFF202124->0xFF000000)。颜色的变化虽然相对细微,但可能会影响现有截图测试。(81ab09

Bug 修复

  • 修复了 ScalingLazyColumn 中的一个逻辑错误,该错误可能导致列表(通常正好是 2 个)的列表项无法完成初始化,从而导致透明。(504347

版本 1.1.0-alpha03

2022 年 8 月 10 日

androidx.wear.compose:compose-foundation:1.1.0-alpha03androidx.wear.compose:compose-material:1.1.0-alpha03androidx.wear.compose:compose-navigation:1.1.0-alpha03 已发布。版本 1.1.0-alpha03 包含这些提交。

新功能

  • 我们为 ChipsButtons 添加了新的轮廓样式,以及新的 OutlinedChipOutlinedButton 可组合项,它们提供了带有细边框的透明 Chip/Button。(Id5972

API 变更

  • 添加了用于修改按钮形状的重载(Icccde

Bug 修复

  • 我们已纠正 ToggleChip 的切换控制区域大小,因为它与 UX 规范不匹配。UX 规范要求标签和 24x24.dp 切换控制图标区域之间有 4.dp 的间隔,总宽度为 28.dp。但实际实现错误地提供了 36x24.dp 的切换控制区域。这导致文本标签的可用区域减少了 8.dp。注意:此错误修复为文本标签提供了额外的空间,因此可以(积极地)影响溢出文本的文本布局。如果您有包含 ToggleChips 的截图测试,可能需要更新。(I514c8, b/240548670

版本 1.1.0-alpha02

2022 年 7 月 27 日

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

新功能

  • 我们已将 Wear OS 版 Compose 对核心 Compose 库的依赖项从 1.2.0 切换到 1.3.0-alpha0X

API 变更

  • 添加了用于修改芯片形状的重载(I02e87

Bug 修复

  • 我们已为显示/隐藏 Dialog 时的小插图可见性添加了动画效果,以与现有的缩放动画保持一致。(Ida33e
  • 我们修复了一个错误,在某些快速滑动行为下滚动时可能发生除零错误。(I86cb6
  • 修复了 ChipDefaults.childChipColor() 中的一个错误,以确保禁用的背景颜色完全透明。(I2b3c3, b/238057342

版本 1.1.0-alpha01

2022 年 6 月 29 日

androidx.wear.compose:compose-foundation:1.1.0-alpha01androidx.wear.compose:compose-material:1.1.0-alpha01androidx.wear.compose:compose-navigation:1.1.0-alpha01 已发布。版本 1.1.0-alpha01 包含这些提交。

API 变更

  • Picker 的 contentDescription 参数现在仅用于选定的 Picker 选项,并接受可为空的 String(以前,需要从选项到内容描述传递映射,但只使用了选定的选项)。(Ife6a7
  • 我们改进了 Picker 的辅助功能,以便多选择器屏幕可以通过屏幕阅读器进行导航,并且内容描述可访问(I64edb

Bug 修复

  • 我们已更新 Wear Compose 库中打包的基线配置文件规则(I9c694
  • 我们已纠正右到左模式下 Chip 的渐变方向。之前是左上->右下,现在是右上->左下。(Ic2e77
  • 我们已更新 Chip/ToggleChip/Card 的默认渐变,使其与最新的 UX 规范保持一致。ChipDefaults.gradientBackgroundChipColors 已更新为从 primary 的 50% 开始,而不是 32.5%。CardDefaults.cardBackgroundPainter 已更新为从 primary 的 30% 开始,并在 onSurfaceVariant 的 20% 结束(之前为 20% 到 10% 的 onSurfaceVariant)。ToggleChip.toggleChipColors 从 75% surface 到 32.5% primary 的线性渐变变为 0% surface 到 50% primary。(I43bbd
  • 我们在具有渐变背景的 Chip/ToggleChips 后面添加了背景颜色(MaterialTheme.color.surface),以确保在它们后面使用浅色时,它们也能正确可见。(Ibe1a4, b/235937657
  • 选择器项目现在始终居中对齐,修复了将 gradientRatio 设置为零会附带更改对齐方式的错误。(I712b8

版本 1.0

版本 1.0.2

2022 年 9 月 7 日

androidx.wear.compose:compose-foundation:1.0.2androidx.wear.compose:compose-material:1.0.2androidx.wear.compose:compose-navigation:1.0.2 已发布。版本 1.0.2 包含这些提交。

Bug 修复

  • 我们已纠正 Scaffold 中位置和页面指示器的 Z 顺序。指示器现在将位于晕影之上,因此如果存在晕影,它们将不会被晕影遮挡。(Ib988f, b/244207528

版本 1.0.1

2022 年 8 月 24 日

androidx.wear.compose:compose-foundation:1.0.1androidx.wear.compose:compose-material:1.0.1androidx.wear.compose:compose-navigation:1.0.1 已发布。版本 1.0.1 包含这些提交。

Bug 修复

  • 修复了 ScalingLazyColumn 中的一个逻辑错误,该错误可能导致列表(通常正好是 2 个)的列表项无法完成初始化,从而导致透明。(076c61

版本 1.0.0

2022 年 7 月 27 日

androidx.wear.compose:compose-foundation:1.0.0androidx.wear.compose:compose-material:1.0.0androidx.wear.compose:compose-navigation:1.0.0 已发布。版本 1.0.0 包含这些提交。

1.0.0 的主要功能

  • 这是 Wear OS 版 Compose 的第一个稳定版本(了解更多)。
  • Wear OS 版 Compose 构建于核心 Compose 库之上,提供了额外的可穿戴设备专用组件,并在适当时提供了核心 Compose 组件的替代实现,以适应可穿戴设备。
  • 有关 Wear Compose 中关键组件的列表,请参阅发布说明(Wear OS 版 Compose Beta01)。

Bug 修复

  • 我们已为显示/隐藏 Dialog 时的小插图可见性添加了动画效果,以与现有的缩放动画保持一致。(Ida33e
  • 我们修复了一个错误,在某些快速滑动行为下滚动时可能发生除零错误。(I86cb6
  • 修复了 ChipDefaults.childChipColor() 中的一个错误,以确保禁用的背景颜色完全透明。(I2b3c3, b/238057342

版本 1.0.0-rc02

2022 年 6 月 22 日

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

Bug 修复

  • 我们纠正了从右到左 (RTL) 模式下卡片渐变的方向。它之前是左上->右下,现在是右上->左下。(Ic2e77
  • 我们已更新 Chip/ToggleChip/Card 的默认渐变,使其与最新的 UX 规范保持一致。ChipDefaults.gradientBackgroundChipColors 已更新为从 primary 的 50% 开始,而不是 32.5%。CardDefaults.cardBackgroundPainter 已更新为从 primary 的 30% 开始,并在 onSurfaceVariant 的 20% 结束(之前为 20% 到 10% 的 onSurfaceVariant)。ToggleChip.toggleChipColors 从 75% surface 到 32.5% primary 的线性渐变变为 0% surface 到 50% primary。(I43bbd
  • 我们在具有渐变背景的 Chip/ToggleChips 后面添加了背景颜色(MaterialTheme.color.surface),以确保在它们后面使用浅色时,它们也能正确可见。(Ibe1a4, b/235937657
  • 我们已更新 Wear Compose 库中打包的基线配置文件规则(I9c694

版本 1.0.0-rc01

2022 年 6 月 15 日

androidx.wear.compose:compose-foundation:1.0.0-rc01androidx.wear.compose:compose-material:1.0.0-rc01androidx.wear.compose:compose-navigation:1.0.0-rc01 已发布。版本 1.0.0-rc01 包含这些提交。

API 变更

  • Compose 库中的接口现在使用 jdk8 默认接口方法构建(I5bcf1

Bug 修复

  • 我们已移除列表头部的显式 fillMaxWidth() 调用,因为它不是必需的,并且如果 ScalinglazyColumn 混合了 ListHeader()Chip() 组件,则可能导致问题,因为当 ListHeader 项目滚动进出视图时,宽度往往会增长/缩小。(I37144, b/235074035
  • 我们修复了 ScalingLazyColumn 中的一个错误,该错误可能导致列表项目在初始化时(如果第 0 个列表项目足够大,包括填充)无法正确绘制,直到滚动。(Ic6159, b/234328517
  • 我们对 ScalingLazyColumn 的缓和效果进行了小幅调整,以匹配 UX 规范更新,当项目到达屏幕边缘时。旧值 CubicBezierEasing(0.25f, 0.00f, 0.75f, 1.00f) -> 新值 CubicBezierEasing(0.3f, 0f, 0.7f, 1f)。要保留旧行为,可以覆盖 ScalingLazyColumnscalingParamsIe375c
  • 我们已为 CompactChip 添加了填充,以确保其点击目标尺寸至少为 48.dp 高,以符合 Material 可访问性准则。这可能会影响您使用 CompactChips 的任何布局,因为它们将占用额外空间。(I3d57c

版本 1.0.0-beta03

2022 年 6 月 1 日

androidx.wear.compose:compose-foundation:1.0.0-beta03androidx.wear.compose:compose-material:1.0.0-beta03androidx.wear.compose:compose-navigation:1.0.0-beta03 已发布。版本 1.0.0-beta03 包含这些提交。

新功能

  • 我们已使 ScalingLazyColumn 在 Compose @Preview 模式下工作。(I3b3b6, b/232947354

API 变更

  • 我们已将 ScalingLazyColumn.horizontalAlignment 属性的默认值从 Start 更改为 CenterHorizontally,以确保当列表项目未填满列的整个宽度时,它们将对齐以实现最大可见性。要恢复到以前的行为,请设置 horizontalAlignment = Alignment.Start。(I9ed4b

已知问题

  • CompactChip 的点击/触摸高度小于 Material 可访问性准则。这将在下个版本(6 月 15 日)中纠正。 如果您正在使用 CompactChip,这将影响您的布局,因为 CompactChips 现在将有额外的上下填充。请调整和测试您的布局,或参阅错误注释以了解如何使用现有行为的解决方法。(b/234332135

Bug 修复

  • 新的演示,用于在 TimeText 上动画添加或删除起始文本。(I16d75
  • 添加 HorizontalPageIndicator.PagesState 的测试(I64ed0
  • TimeText 更新得更接近 UX 规范(Ib7ea1

版本 1.0.0-beta02

2022 年 5 月 18 日

androidx.wear.compose:compose-foundation:1.0.0-beta02androidx.wear.compose:compose-material:1.0.0-beta02androidx.wear.compose:compose-navigation:1.0.0-beta02 已发布。版本 1.0.0-beta02 包含这些提交。

新功能

  • 即使在只读模式下,选择器现在也始终响应滚动事件。这避免了用户在滚动之前需要通过点击来选择选择器。在只读模式下,当前未选中的选项会被 gradientColor 中的阴影遮盖。(I72925
  • 我们已更改 Chip/ToggleChip/CompactChip/SplitToggleChip 的 UX 行为,使其默认不再执行 fillMaxWidth。相反,它们将增长以适应其内容。要保留以前的行为,只需添加 modifier = Modifier.fillMaxWidth()I60a2c, b/232206371

Bug 修复

  • CurvedTextStyle 构造函数接受 TextStyle,现在也遵守 fontWeight(这可能会在 API 的未来修订版本中添加到构造函数和复制方法中)(Ieebb9
  • 边缘滑动改进。当使用 Modifier.edgeSwipeToDismiss 时,如果从边缘区域触发向左滑动,则当滑动方向变为向右时,它不再触发滑动以关闭。以前,可以通过向左滑动然后向右滑动来触发滑动以关闭。(I916ea
  • HorizontalPageIndicator 现在在屏幕上显示最多 6 页。如果总页数超过 6 页,它会在左侧或右侧显示一个半尺寸指示器,并在页面之间平滑过渡。(I2ac29
  • 改进了 ScalingLazyColumnPicker 的默认捕捉行为(I49539
  • 边缘滑动改进。当使用 Modifier.edgeSwipeToDismiss 时,仅当第一次触摸落在边缘并向右滑动时才会触发滑动关闭。以前,如果滚动到达开始位置,则可以从屏幕的任何部分滑动来触发滑动关闭。(I8ca2a

版本 1.0.0-beta01

2022 年 5 月 11 日

androidx.wear.compose:compose-foundation:1.0.0-beta01androidx.wear.compose:compose-material:1.0.0-beta01androidx.wear.compose:compose-navigation:1.0.0-beta01 已发布。版本 1.0.0-beta01 包含这些提交。

Wear OS 版 Compose 1.0 的内容

Wear OS 版 Compose 的 1.0.0-beta01 标志着一个重要的里程碑,因为该库的功能已完成且 API 已锁定。

Wear Compose Material 1.0 版本中的组件包括

  • Material 主题 - 用作 Compose for Mobile MaterialTheme 的替代品,提供颜色、形状和排版,用于在可穿戴设备上构建组件,这些组件开箱即用地实现了 Wear Material Design UX 指南。
  • ButtonCompactButtonToggleButton - Button 提供一个插槽,可用于放置图标、图像或短文本(最多 3 个字符)。圆形,建议尺寸为默认、大或小按钮。CompactButton 提供一个插槽,可放置任何内容(图标、图像或文本),圆形,背景尺寸超小。CompactButton 具有可选的透明填充,可增加可点击区域。ToggleButton 是一个按钮,提供一个插槽,可放置任何内容(短文本、图标或图像),并具有开/关(选中/未选中)状态,通过颜色和不同图标显示是否选中
  • 卡片 - 用于显示应用信息,如通知。灵活的设计适用于不同的用例,AppCardTitleCard 提供不同的布局,并支持将图像作为卡片内容或背景。
  • 芯片 - 体育场形状的组件,类似于按钮,但面积更大,有多个插槽可放置标签、次要标签和图标。尺寸不同,并支持将图像作为背景。
  • ToggleChips 和 SplitToggleChips - 一种具有选中/未选中状态的芯片,并添加了 ToggleControl 插槽,用于显示一个图标(如开关或单选按钮),以显示组件的选中状态。此外,SplitToggleChip 具有两个可点击区域,一个可点击,一个可切换。
  • 圆形进度指示器 - 两种 Wear Material 进度指示器变体。第一种表示正在进行任务的完成比例,并支持圆形轨道在起始和结束角度之间留有间隙。第二种表示不确定等待时间的非确定性进度。
  • curvedText - 构成用于描述 CurvedLayouts 的 DSL 的一部分,与 curvedRowcurvedColumn 一起,用于围绕圆形设备布局组件。有关 CurvedLayoutCurvedModifier 的更多详细信息,请参阅下面的 Wear Component Foundation(这在非弯曲世界中扮演着与 Modifiers 类似的角色,并允许配置布局、填充、渐变等各个方面)。
  • Dialog、Alert 和 Confirmation - Dialog 显示一个全屏对话框,叠加在任何其他内容之上,并支持滑动以关闭。它有一个单一插槽,预计是具有特定风格的 Wear Material 对话框内容,例如 Alert 或 Confirmation。Alert 是具有特定风格的对话框内容,带有用于图标、标题和消息的插槽。它具有重载,可显示并排的两个否定和肯定按钮,或者用于一个或多个垂直堆叠芯片的插槽。Confirmation 是具有特定风格的对话框内容,它在给定持续时间内显示消息。它具有用于图标或图像(可以动画化)的插槽。
  • HorizontalPageIndicator - 以适用于可穿戴设备的外形显示水平页面位置。旨在占据整个屏幕,并在圆形设备上显示弯曲指示器。可与 Accompanist 页面查看器一起使用。
  • 图标 - Icon 的 Wear 实现,从 Wear Material 主题中获取颜色和 alpha 值。对于可点击的图标,请参阅 Button 或 Chip。
  • 选择器 - 显示一个可滚动项目列表供选择。默认情况下,项目将在两个方向上“无限”重复。可以以只读模式显示以隐藏未选定的选项。
  • 位置指示器 - 以适用于可穿戴设备外形的方式显示滚动位置或其他位置指示。旨在占据整个屏幕,并在圆形设备上显示弯曲指示器。
  • Scaffold - 实现了基本的 Wear Material Design 视觉布局结构。此组件提供了一个 API,可将多个 Wear Material 组件(如 TimeTextPositionIndicatorVignette)组合在一起,构建屏幕,确保它们的正确布局策略,并收集必要的数据,使这些组件能够协同工作。
  • ScalingLazyColumn - 一种可滚动缩放/鱼眼列表组件,是 Wear Material Design 语言的关键组成部分。为内容项目提供缩放和透明效果。ScalingLazyColumn 旨在能够处理大量内容项目,这些项目仅在需要时才实例化和组合。
  • 滑块 - 允许用户从一系列值中进行选择。选择范围显示为一条条形,可以选择显示分隔符。
  • 步进器 - 一种全屏组件,允许用户通过屏幕顶部和底部的增加/减少按钮从一系列值中进行选择,中间有一个用于文本或芯片的插槽。
  • SwipeToDismissBox - 处理滑动以关闭手势。它为背景(仅在滑动手势期间显示)和前景内容提供一个插槽。可以通过使用 SwipeDismissableNavHost(请参阅下面的 Wear Compose Navigation 库)与 androidx 导航库结合使用。
  • Text - Compose Material Text 组件的 Wear 实现,从 Wear Material 主题中获取颜色和 alpha 值
  • TimeText - 用于在屏幕顶部显示时间及应用状态的组件。通过在圆形屏幕上使用弯曲文本来适应屏幕形状。
  • 渐晕 - 在 Scaffold 中使用的屏幕处理,当可滚动内容在使用时,模糊屏幕的顶部和底部。

  • Wear Compose Foundation 还包括以下组件

  • CurvedLayout - Wear Foundation CurvedLayout 是一种布局可组合项,它将其子项放置在弧形中,并根据需要旋转它们。这类似于弯曲成圆环段的 Row 布局。请注意,CurvedLayout 的内容不是可组合 lambda - 相反,它是一种 DSL(领域特定语言)。CurvedLayout DSL 中的所有元素都支持可选的 modifier 参数,该参数由 CurvedModifier 创建。

  • basicCurvedText - CurvedLayout DSL 中的一个元素,basicCurvedText 允许开发人员轻松编写遵循圆形曲率(通常在圆形屏幕边缘)的弯曲文本。basicCurvedText 只能在 CurvedLayout 内创建,以确保最佳体验,例如能够指定位置,并使用 CurvedModifiers。请注意,在大多数情况下,应使用 curvedText,因为它使用 Material 主题。

  • curvedComposable - 包装普通可组合内容,以便与 CurvedLayout 一起使用。如果 curvedComposable 内部有多个元素,它们将相互叠加绘制(像一个 Box)。要沿着曲线放置多个可组合项,请将每个项用 curvedComposable 包装。

  • curvedRow 和 curvedColumn - 类似于 Row 和 Column,curvedRowcurvedColumn 可以嵌套在 CurvedLayout 中,以根据需要布局元素。对于 curvedRow,可以指定角布局方向和径向对齐方式。对于 curvedColumn,可以指定角对齐方式和径向方向。

  • CurvedModifier - 所有弯曲组件都接受一个可以使用 CurvedModifier 创建的修饰符参数:支持背景、大小、权重和填充。

  • Wear Compose Navigation 还包括以下组件

  • SwipeDismissableNavHost - 在 Compose 层次结构中提供一个位置,用于进行自包含导航,并通过滑动手势提供后退导航。内容显示在 SwipeToDismissBox 内,显示当前导航级别。在滑动关闭手势期间,会在背景中显示上一个导航级别(如果有)。

  • 有关已交付内容的更多详细信息,请参阅之前各种 Alpha 版本的发布说明。

API 变更

  • 添加了 CurvedModifier.padding* 函数。这些函数用于指定要添加到弯曲组件周围的额外空间。(I4dbb4
  • 移除了 CompositionLocal 内部类(I42490
  • 我们为 ButtonCompactButtonToggleButton 图标大小添加了常量值,作为指导(I57cab
  • AppCardTitleCard 添加了 enabled 参数。现在它们具有与 androidx.compose.material 卡片类似的 API。当参数设置为 false 时,卡片将不可点击。(Idc48d, b/228869805

Bug 修复

  • 当达到下限/上限时,Stepper 现在禁用减少和增加按钮(并对 iconColor 应用 ContentAlpha.disabled)(I4be9f
  • 我们已在 Picker 内容周围添加 1dp 填充,当使用渐变绘制时,以防止在滑动时出现文本抖动。(I0b7b9
  • PositionIndicator 添加截图测试(I5e8bc
  • AppCardTitleCard 添加更多测试(I85391, b/228869805

版本 1.0.0-alpha21

2022 年 4 月 20 日

androidx.wear.compose:compose-foundation:1.0.0-alpha21androidx.wear.compose:compose-material:1.0.0-alpha21androidx.wear.compose:compose-navigation:1.0.0-alpha21 已发布。版本 1.0.0-alpha21 包含这些提交。

新功能

  • 添加了新的弯曲修饰符,用于指定弯曲元素的背景:CurvedModifier.background.radialGradientBackground.angularGradientBackgroundI8f392
  • 允许指定弯曲文本溢出模式(剪切/省略号/可见)。(I8e7aa
  • 添加了 CurvedModifier.weight 修饰符,类似于 Compose 中的修饰符。这可用于 curvedRow 和 CurvedLayout 的子项(用于宽度)以及 curvedColumn 的子项(用于高度)。(I8abbd
  • 添加了 CurvedModifier.size.angularSize.radialSize 修饰符,用于指定弯曲元素的大小。(I623c7

API 变更

  • 重新排序参数,确保背景在整个 Wear Compose API 中始终位于颜色之前(I43208
  • 已移除 clockwise 和 insideOut 参数,并替换为新类上更具表达力的常量。弯曲布局方向现在可以感知 LayoutDirection,并且在未指定时会继承该方向(If0e6a
  • 我们已将 autoCenter: Boolean 替换为 autoCenter: AutoCentringParams,以修复 ScalingLazyColumn 的 API 问题。(Ia9c90
  • 我们已将 API(Chip/ToggleChip/Dialog/Slider/Stepper/…)中的 iconTintColortoggleControlTintColor 重命名为 iconColortoggleControlColor,因为颜色应用于图标/切换控制插槽。(Ied238
  • PageIndicatorStyle 枚举重写为值类(I2dc72
  • 我们已在我们的可组合项的某些插槽中添加了 RowScope/ColumnScope/BoxScope,以向开发人员指示布局假设。这将允许开发人员在某些插槽内容上使用额外的修饰符,并避免提供额外的布局元素。此外,我们对 AppCard/TitleCard 颜色进行了一些小更新,使 timeColorappColor 默认设置为 contentColor,如果需要,这些属性仍然可以单独覆盖。(I26b59
  • 已将 SwipeToDismissBoxState.Companion 对象设为私有(I39e84
  • 修复 InlineSliderStepper 的参数顺序。一个遵循 API 准则的简单更改(I11fec
  • 我们已移除 SwipeToDismissBoxState 的 Saver 对象,因为它未被使用。(Ifb54e
  • 我们已更新 CompactChip,使其与最新的 UX 规范保持一致。填充已减少到水平 = 12.dp,垂直 = 0.dp。标签字体已从 button 更改为 caption1。建议的图标大小为:当图标和标签都存在时为 20x20,仅图标的紧凑芯片为 24x24。对于仅图标用例,我们还确保图标居中对齐。(Iea2be
  • 我们已向 ScalingLazyListLayoutInfo 添加了一些新字段,使开发人员能够了解已应用的 contentPaddingautoCenteringPadding 量。这些对于开发人员计算快速滑动/滚动可能很有用(I7577b
  • 我们已实现 Dialog 的进/出过渡。已添加 showDialog 参数,Dialog 现在控制其自身的可见性(这使得 Dialog 能够在显示/隐藏 Dialog 时运行介绍和退出动画)。请注意,当用户通过滑动以关闭 Dialog 时,不会执行退出动画。我们还在最近添加的 SwipeToDismissBox 重载中为 state 添加了默认值。(I682a0
  • 为了更好地支持国际化和辅助功能,我们已更改 ToggleChipSplitToggleChip,使它们不再对 toggleControl 插槽有默认值。我们还更改了 ToggleChipDefaults,使以下方法现在返回 ImageVector 而不是 Icon(请注意,由于它们不再返回 @Composables,它们已更改为小写字母开头),SwitchIcon()->switchIcon()CheckboxIcon->checkboxIcon()RadioIcon()->radioIcon() - 这允许并鼓励开发人员创建自己的 Icon() 可组合项,并设置适当的 contentDescription。(I5bb5b
  • 我们已为 SwipeDismissableNavHost 添加了 SwipeDismissableNavHostState 参数。这支持在用作导航目的地的屏幕上使用边缘滑动,因为 SwipeToDismissBoxState 现在可以提升并用于初始化 SwipeDismissableNavHostStateModifier.edgeSwipeToDismiss 在需要边缘滑动的屏幕上。(I819f5, b/228336555

Bug 修复

  • 确保弯曲布局在需要时更新。(Ie8bfa, b/229079150
  • 修复了 https://issuetracker.google.com/issues/226648931 的 bug(Ia0a0a, b/226648931
  • 删除了不必要的实验性注释(I88d7e

版本 1.0.0-alpha20

2022 年 4 月 6 日

androidx.wear.compose:compose-foundation:1.0.0-alpha20androidx.wear.compose:compose-material:1.0.0-alpha20androidx.wear.compose:compose-navigation:1.0.0-alpha20 已发布。版本 1.0.0-alpha20 包含这些提交。

新功能

  • SwipeToDismiss 添加了 edgeSwipeToDismiss 修饰符。允许 swipeToDismiss 仅在视口的左边缘激活。当屏幕中心需要处理水平分页时使用,例如 2D 滚动地图或在页面之间水平滑动。(I3fcec, b/200699800

API 变更

  • CurvedModifiers 的基本实现,这为引入自定义弯曲内容的方式打开了大门(但尚未提供 CurvedModifiers,并且稍后可能会提供创建自定义修饰符的功能)(I9b8df
  • 更新了 EdgeSwipe 修饰符文档和默认值,以更好地理解。(I6d00d
  • 在 Scaffold 中添加了 PageIndicator 插槽。通过将 PageIndicator 直接添加到 Scaffold 中,我们可以确保它在圆形设备上正确显示。(Ia6042
  • InlineSlider 和 Stepper 参数中删除了默认图标。这将帮助开发人员更注重本地化和辅助功能要求。默认图标的用法已在演示和示例中显示。(I7e6fd
  • 将 TimeText 中的 Trailing 和 Leading 参数名称替换为 Start 和 End(Iaac32
  • 我们为 SwipeToDismissBox 添加了一个带有 onDismissed 参数的重载,以支持在滑动手势完成后触发导航事件的常见用法。(I50353, b/226565726
  • 已从 TimeText 用法中移除了 ExperimentalWearMaterialApi 注释(Ide520
  • 我们已将 ScalingLazyList/Column 作用域和信息接口标记为密封,因为它们不打算供外部开发人员实现,这将允许我们在未来添加新成员而不会造成二进制破坏性更改。(I7d99f
  • 我们已向 Picker 添加了一个新的 flingBehaviour 属性和一个 PickerDefaults.flingBehaviour() 方法,以启用对快速滑动行为的配置,例如添加 RSB 支持。PickerState 现在实现了 ScrollableState 接口。(Ib89c7

Bug 修复

  • 更新了 Wear Compose 库的 Android Runtime (ART) 基线配置文件规则。ART 可以利用设备上的配置文件规则,提前编译应用程序的特定子集,以提高应用程序的性能。请注意,这对可调试应用程序无效。(Iaa8ef
  • 改进文档(I2c051

版本 1.0.0-alpha19

2022 年 3 月 23 日

androidx.wear.compose:compose-foundation:1.0.0-alpha19androidx.wear.compose:compose-material:1.0.0-alpha19androidx.wear.compose:compose-navigation:1.0.0-alpha19 已发布。版本 1.0.0-alpha19 包含这些提交。

API 变更

  • CurvedRow 重命名为 CurvedLayout,并重构为带有 DSL 的作用域。使用此 DSL,可以使用一系列嵌套的 curvedRowcurvedColumn(它们是 Row 和 Column 的弯曲布局等效项)指定更复杂的弯曲布局。在这些布局元素内部,可以使用三种元素:curvedComposable(添加任何 @Composable)、basicCurvedText(基础弯曲文本)和 curvedText(支持 Wear Material 的弯曲文本)。(Ib776a
  • 使 PositionIndicator 的侧边可配置。基本 PositionIndicator 的位置现在可以配置为 End(布局方向感知)、OppositeRsb(考虑屏幕旋转,使其位于物理 RSB 的对面),或绝对的 Left 和 Right。(I2f1f3
  • 对于 SwipeToDismissBox,我们将 SwipeDismissTarget.Original 重命名为 SwipeToDismissValue.Default,并将 SwipeDismissTarget.Dismissal 重命名为 SwipeToDismissValue.Dismissed。我们还将 SwipeToDismissBoxDefaults.BackgroundKeySwipeToDismissBoxDefaults.ContentKey 分别移动到 SwipeToDismissKeys.BackgroundSwipeToDismissKeys.Content。(I47a36
  • 我们已向 Picker 添加了只读模式,适用于具有多个 Picker 的屏幕,其中一次只有一个 Picker 可编辑。当 Picker 为只读时,它会显示当前选定的选项,如果已提供标签,则还会显示标签。(I879de
  • SwipeToDismissBoxState 已重构,将 ExperimentalWearMaterialApi 的作用域限制到 Modifier.swipeableSwipeableState(现已在内部使用)。SwipeToDismissBoxState 现在具有 currentValuetargetValueisAnimationRunningsnapTo 成员,以支持常见用例 - 如果您需要提供任何其他属性,请告知我们。此外,还修复了 SwipeableState 在滑动偏移量在锚点的舍入误差范围内时的行为。(I58302

Bug 修复

  • 简化并修复了用于检测 ScalingLazyColumn 的内容是否可滚动(用于决定是否显示滚动条)的代码 (I7bce0)
  • 修复了 Position Indicator 在与多个状态一起使用并进行切换时的错误 (I320b5)
  • 我们已将 Compose for Wear OS 默认主题的排版/字体更新为符合我们最新的 UX 指南。值得注意的是,display1 (40.sp) 和 display2 (34.sp) 现在比以前的值更小,并且对行高和行间距进行了各种其他微小更新。(Ie3077
  • 我们已为 SwipeToDismissBox 添加了阻力,因此只在滑动以关闭时发生运动,而在相反方向则不发生运动。(Ifdfb9
  • 我们更改了 CircularProgressIndicator 函数的一些默认参数值,使其与 Wear Material Design UX 指南保持一致。对于 Spinner/不确定版本,大小(40->24.dp)、指示器颜色(primary->onBackground)、轨迹颜色透明度(30%->10%)和笔触宽度(4->3dp)已更新。对于 Progress/确定版本,轨迹颜色透明度(30%->10%)已更新。(I659cc
  • 我们已根据最新的 Wear Material Design UX 规范更新了 ScalingLazyColumn 的默认缩放参数。从视觉上看,这导致列表项开始缩放时更接近列表中心,但在列表边缘处的缩放程度比以前更小。(Ica8f3
  • ScalingLazyColumnDefaults.snapFlingBehavior 进行了一些调整,以改善动画的结束效果 (If3260)

版本 1.0.0-alpha18

2022 年 3 月 9 日

发布了 androidx.wear.compose:compose-foundation:1.0.0-alpha18androidx.wear.compose:compose-material:1.0.0-alpha18androidx.wear.compose:compose-navigation:1.0.0-alpha18版本 1.0.0-alpha18 包含这些提交。

API 变更

  • PositionIndicator 的多项改进:ShowResult 重命名为 PositionIndicatorVisibility。一些性能改进,避免不必要的重新计算 (Iaed9d)
  • 已更新 SplitToggleChip 的推荐配色方案。SplitToggleChip 在选中或未选中时现在具有纯色背景,其中 ToggleControl 的着色是组件是否被选中的主要指示。我们添加了新的 ToggleDefaults.splitToggleChipColors() 来支持新的配色方案。我们还简化了 toggleChipColors() 方法,移除了 splitBackgroundOverlayColor (I7e66e)
  • 我们已将 unadjustedSize 添加到 ScalingLazyListItemInfo,因为由于浮点数学精度问题,使用缩放大小和缩放因子计算原始项目大小不安全。(I54657, b/221079441
  • 添加 HorizontalPageIndicator。它表示总页数和选定页。可以是线性的或弯曲的,具体取决于设备的形状。它还支持自定义指示器形状,定义每个指示器的视觉表示方式。(Iac898
  • 我们已更新 PickerState,以便可以更新 numberOfOptions。这支持诸如 DatePicker 的用例,其中月份中的天数会根据所选月份而变化。因此,PickerState 的构造函数参数已相应地更改为 initialNumberOfOptions。(Iad066
  • 当 PositionIndicator 是滚动条且无法滚动时隐藏它。(Id0a7f
  • 为了与 Scaffold 保持一致,我们的全屏 Dialog 组件现在显示 PositionIndicatorVignette。我们现在也使用 ScalingLazyColumn 而不是 Column,这意味着 Dialog 内容现在在 ScalingLazyListScope 中(通常需要用 item { /* content */ } 括起来)。Dialog 相应地支持 verticalArrangement 参数。(Idea13
  • 我们已将 ToggleChipSplitToggleChip 的 toggleIcon 属性名称更改为 toggleControl,以便更好地与 Material Design 对齐,帮助设计人员和开发人员更好地使用 API。(If5921, b/220129803
  • 我们在 Wear Material Theme Typology 中添加了一个新条目 caption3。Caption3 是一种用于超长篇幅文本(如法律文本)的小字体。(I74b13, b/220128356

Bug 修复

  • 当我们到达目的地时停止吸附动画。(Idb69d
  • PositionIndicator 中的动画更改。(I94cb9
  • 根据 UI/UX 反馈,我们更改了 ScalingLazyColumn 的自动居中功能,使其仅提供足够的空间,以确保索引为 ScalingLazyListState.initialCenterItemIndex 或更高的项目能够完全滚动到视口中心。这允许开发人员在最初位于中心的项目周围放置一两个无法滚动到中间的项目。这意味着自动居中的 ScalingLazyColumn 将无法滚动到 initialCenterItemIndex/initialCenterItemScrollOffset 以上。(I22ee2
  • 我们添加了日期选择器的演示,并修复了 PickerState 中的一个错误,即 initiallySelectedOption 在 Picker 显示之前未应用。(Id0d7e
  • 为了减少圆形屏幕上较宽 ScalingLazyColumn 项目的裁剪,我们将默认水平内容填充从 8 dp 增加到 10 dp。(I0d609
  • 确保在滚动时显示 PositionIndicator。(Ied9a2

版本 1.0.0-alpha17

2022 年 2 月 23 日

发布了 androidx.wear.compose:compose-foundation:1.0.0-alpha17androidx.wear.compose:compose-material:1.0.0-alpha17androidx.wear.compose:compose-navigation:1.0.0-alpha17版本 1.0.0-alpha17 包含这些提交。

新功能

  • 我们添加了可与 ScalingLazyColumn 一起使用的吸附支持。设置 flingBehavior = ScalingLazyColumnDefaults.flingWithSnapBehavior(state) 即可启用吸附支持。(I068d3, b/217377069
  • 我们添加了 Picker 的演示,用于在 24 小时制或 12 小时制中选择时间。(Ie5552

API 变更

  • 修复了方形设备上 TimeText 自定义字体和样式的问题 (Iea76e)
  • ScalingLazyListLayoutInfo 现在具有 reverseLayoutviewportSize 和 orientation 属性,与 LazyListLayoutInfo 中的属性匹配。(I4f258, b/217917020
  • ScalingLazyColumn 现在具有 userScrollEnabled 属性,与 LazyList 中的属性匹配。(I164d0, b/217912513
  • Picker 现在默认在顶部和底部具有渐变效果 (Iab92a)

Bug 修复

  • 我们修改了 ScalingLazyColumn,使其不再贪婪地填充其父级中的所有空间。相反,它将根据其内容的大小来确定自身大小。这使其与 LazyColumn 的行为保持一致。如果您想恢复旧行为,请将 Modifier.fillMaxWidth()/width()/widthIn() 传递给 ScalingLazyColumn (I51bf8)
  • 我们改进了 SwipeDismissableNavHost.kt 中在导航返回堆栈为空时触发的异常消息。(I1b1dc

版本 1.0.0-alpha16

2022 年 2 月 9 日

发布了 androidx.wear.compose:compose-foundation:1.0.0-alpha16androidx.wear.compose:compose-material:1.0.0-alpha16androidx.wear.compose:compose-navigation:1.0.0-alpha16版本 1.0.0-alpha16 包含这些提交。

新功能

  • 添加了 CircularProgressIndicator。进度指示器显示进程的长度或未指定等待时间。如果全屏使用,支持 TimeText 或其他组件的间隙(切口)。(Iab8da

API 变更

  • Pickers 现在有一个 flingBehavior 参数,默认值使其在滚动/滑动时吸附到最近的选项。(I09000
  • InlineSlider 和 Stepper 的附加整数 API (I1b5d6)

Bug 修复

  • 我们将 ScalingLazyListState 的默认 initialCenterItemIndex 从 0 更改为 1。这意味着除非在状态构建时通过 ScalingLazyListState.rememberScalingLazyListState(initialCenterItemIndex = 覆盖),否则第二个列表项(索引 == 1)将在初始化时放置在视口中心,第一个(索引 == 0)项将放置在其之前。这允许开箱即用地获得更好的默认视觉效果,因为视口大部分将填充列表项。(I0c623, b/217344252
  • 我们已将 ScalingLazyColumn 默认提供的 extraPadding 从 10% 减少到 5%,以确保有足够的列表项可供绘制(即使我们正在缩小其中一些项的大小)。这将避免组合可能不会出现在视口中的额外列表项。如果使用非标准缩放参数(例如更极端的缩放),开发人员可以使用 viewportVerticalOffsetResolver 调整额外填充。(I76be4
  • 修复了方形设备上 TimeText 多行显示的问题 (Ibd3fb)
  • 我们修改了 ScalingLazyColumn,使其不再贪婪地填充其父级中的所有空间。相反,它将根据其内容的大小来确定自身大小。这使其与 LazyColumn 的行为保持一致。如果您想恢复旧行为,请将 Modifier.fillMaxSize() 传递给 ScalingLazyColumn - 注意:此更改尚未完成,将在下一个 Alpha 版本的后续更改中解决。(I3cbfa

版本 1.0.0-alpha15

2022 年 1 月 26 日

发布了 androidx.wear.compose:compose-foundation:1.0.0-alpha15androidx.wear.compose:compose-material:1.0.0-alpha15androidx.wear.compose:compose-navigation:1.0.0-alpha15版本 1.0.0-alpha15 包含这些提交。

API 变更

  • 我们为 ScalingLazyColumn 添加了一个新属性 autoCentering。当其为 true(默认值)时,这将确保所有项目(包括第一个和最后一个)都可以滚动,使其在列表视口中心可见。请注意,如果使用自动居中,您可能需要将垂直内容填充设置为 0.dp。如果同时提供了 autoCentering 和垂直内容填充,它们都将导致在第一个和最后一个列表项之前和之后有额外的空间,允许它们进一步滚动。(I2a282, b/214922490
  • 我们添加了一个 Dialog 组件,该组件允许任何可组合项触发一个全屏对话框,该对话框位于其他内容之上。显示时,对话框支持滑动关闭,并在滑动手势期间在背景中显示其父级的内容。对话框内容预计为 AlertConfirmation(从早期组件 AlertDialogConfirmationDialog 重命名)- AlertConfirmationDialog 都位于 androidx.wear.compose.material.dialog 包中。Alert 和 Confirmation 可用作导航目标。此外,还根据需要将 ColumnScope 添加到 Alert 和 Confirmation 参数。(Ia9014
  • 我们已从 Compose for WearOS Material 主题颜色中移除了 onSurfaceVariant2,并用 onSurfaceVariant 替换了库中的所有用途。(Icd592
  • 添加了一种在 PickerState 上以编程方式选择选项的方法,现在在创建 PickerState 时也可以指定最初选择的选项。(I92bdf
  • 我们增加了对 ScalingLazyColumn 动画行为自定义的支持。(I1ad2e, b/208842968
  • 我们已将 NavController.currentBackStackEntryAsState() 添加到 Wear.Compose.Navigation 库中。(If9028, b/212739653
  • 为带有旋转侧边按钮的 Wear 设备添加了 Modifier.onRotaryScrollEvent()Modifier.onPreRotaryScrollEvent()。(I18bf5, b/210748686

版本 1.0.0-alpha14

2022 年 1 月 12 日

发布了 androidx.wear.compose:compose-foundation:1.0.0-alpha14androidx.wear.compose:compose-material:1.0.0-alpha14androidx.wear.compose:compose-navigation:1.0.0-alpha14版本 1.0.0-alpha14 包含这些提交。

新功能

  • 我们已向 ScalingLazyListState 添加了多种方法,允许开发人员控制滚动到特定列表项,并设置初始列表项和偏移量。

    作为此更改的一部分,我们还修改了 ScalingLazyList,使其围绕 ScalingLazyList 视口的中心而不是视口的起始位置进行定位。

    已向 ScalingLazyList 添加了一个新属性 anchorType: ScalingLazyListAnchorType = ScalingLazyListAnchorType.ItemCenter,用于控制中心 (ScalingLazyListAnchorType.ItemCenter) 或边缘 (ScalingLazyListAnchorType.ItemStart) 是否应与视口中心线对齐。

    因此,ScalingLazyListItemInfo.offsetScalingLazyListItemInfo.adjustedOffset 已更改,现在将反映项目相对于列表项位置和列表 anchorType 的偏移量。例如,对于 anchorTypeItemCenterScalingLazyColumn,如果列表项的中心位于视口中心线,则偏移量为 0

    新方法包括 scrollToanimatedScrollTocenterItemIndexcenterItemOffset。(I61b61

  • 我们已为 SwipeDismissableNavHost 添加了一个返回按钮处理程序,以便按下返回按钮可导航到导航层次结构中的上一级。(I5b086, b/210205624

版本 1.0.0-alpha13

2021 年 12 月 15 日

发布了 androidx.wear.compose:compose-foundation:1.0.0-alpha13androidx.wear.compose:compose-material:1.0.0-alpha13androidx.wear.compose:compose-navigation:1.0.0-alpha13版本 1.0.0-alpha13 包含这些提交。

API 变更

  • 我们将 RangeIcons 设置为内部(InlineSliderStepper 内部引用)。(I927ec)

Bug 修复

  • 修复了 SwipeDismissableNavHost 在达到 CREATED 生命周期状态之前就将目标添加到 Compose 层次结构,从而导致 IllegalStateException 的问题。此修复是更新对 navigation-compose 的依赖到 2.4.0-beta02 及更高版本的先决条件。(I40a2b, b/207328687

  • 添加了用于在 Wear Compose 库中获取可绘制资源的 Drawables 枚举类,因此不再需要反射。这修复了当 minifyEnabled=trueshrinkResources=true 时库可绘制资源被删除的错误)。(Ib2a98)

  • 在 Wear Compose 中为 Stepper 添加了测试 (I2d03a)

  • 在 Wear Compose Navigation 中为 SwipeDismissableNavHost 添加了示例。(I85f06

版本 1.0.0-alpha12

2021 年 12 月 1 日

发布了 androidx.wear.compose:compose-foundation:1.0.0-alpha12androidx.wear.compose:compose-material:1.0.0-alpha12androidx.wear.compose:compose-navigation:1.0.0-alpha12版本 1.0.0-alpha12 包含这些提交。

新功能

  • 我们添加了一个 Stepper 组件,允许用户从一系列值中进行选择。Stepper 是一个全屏控件,顶部和底部有增减按钮,中间有一个槽(预期放置 Chip 或 Text)。如果需要,可以自定义按钮图标。(I625fe

  • 我们添加了 2 个新的可组合项用于显示对话框:AlertDialog 等待用户的响应并显示标题、图标、消息以及 a) 两个按钮用于简单的肯定/否定选择或 b) 垂直堆叠的芯片或切换芯片用于更灵活的选择,ConfirmationDialog 显示带超时确认。这个简单的对话框有标题和(动画)图标的槽。(Ic2cf8

API 变更

  • 将单位 (毫秒) 添加到建议的对话框持续时间值。(I09b48

版本 1.0.0-alpha11

2021 年 11 月 17 日

发布了 androidx.wear.compose:compose-foundation:1.0.0-alpha11androidx.wear.compose:compose-material:1.0.0-alpha11androidx.wear.compose:compose-navigation:1.0.0-alpha11版本 1.0.0-alpha11 包含这些提交。

新功能

  • 我们添加了一个选择器组件,允许用户从滚动列表中选择一个项目。默认情况下,可选择项目列表在两个方向上“无限”重复,以给人一种从侧面看到的旋转圆柱体的印象。将在以后的版本中添加两个功能:滑动/滑动后吸附到某个值;向 PickerState 添加一个函数以设置/滚动到当前值。(I6461b

API 变更

  • 添加了 ScalingLazyItemScope 和一些新的修饰符 fillParentMaxSize/fillParentMaxWidth/fillParentMaxHeight,以允许列表项根据父容器的大小进行调整。项目可以设置为填充父级全部或部分大小。这暴露了 LazyRow/Column 中已有的功能 (I4612f)
  • 为 ScalingLazyColumn 添加了对项目拥有键的支持。还添加了便捷方法以允许从数组和列表中添加项目。(Ic1f89

Bug 修复

  • TimeText 的其他示例 (I8cb64)

版本 1.0.0-alpha10

2021 年 11 月 3 日

发布了 androidx.wear.compose:compose-foundation:1.0.0-alpha10androidx.wear.compose:compose-material:1.0.0-alpha10androidx.wear.compose:compose-navigation:1.0.0-alpha10版本 1.0.0-alpha10 包含这些提交。

新功能

  • 为 Wear Compose 添加了 InlineSlider。InlineSlider 允许用户从一系列值中进行选择。选择范围显示为范围最小和最大值之间的一条条,用户可以从中选择一个值。(If0148

  • 查看新的 Compose for WearOS Codelab

API 变更

  • Macrobenchmark 的 minSdkVersion 现在为 23。(If2655

Bug 修复

版本 1.0.0-alpha09

2021 年 10 月 27 日

发布了 androidx.wear.compose:compose-foundation:1.0.0-alpha09androidx.wear.compose:compose-material:1.0.0-alpha09androidx.wear.compose:compose-navigation:1.0.0-alpha09版本 1.0.0-alpha09 包含这些提交。

新功能

  • 我们发布了 Wear OS 上 Compose 的开发者预览版 - 请参阅我们的博客文章,其中回顾了主要的 Compose 组件并提供了更多开始使用它们的资源链接。

API 变更

  • 我们已添加了对开发者自定义 Wear Material Design 颜色主题中所有颜色的支持。(I4759b, b/199754668

Bug 修复

  • 添加了持久化状态的 SwipeToDismissBox 示例 (Ibaffe)
  • 为 CurvedText、TimeText 和 SwipeToDismissBox 的 KDocs 添加了指向 developer.android.com 指南的链接。(I399d4
  • 如果没有当前目标(表示 NavGraph 未使用 wear.compose.navigation.composable 工具函数构建),SwipeDismissableNavHost 现在会抛出异常。(I91403
  • 为 TimeText 中的时间源使用添加了更多文档和示例 (I4f6f0)

版本 1.0.0-alpha08

2021 年 10 月 13 日

发布了 androidx.wear.compose:compose-foundation:1.0.0-alpha08androidx.wear.compose:compose-material:1.0.0-alpha08androidx.wear.compose:compose-navigation:1.0.0-alpha08版本 1.0.0-alpha08 包含这些提交。

API 变更

  • 我们将 AppCard 和 TitleCard 的 body 属性重命名为 content,并将其移至属性列表的末尾,以便它们可以作为 trailing lambda 提供。同时,为了与新的槽名称保持一致,将 bodyColor 重命名为 contentColor。(I57e78

Bug 修复

  • 添加了指向 developer.android.com 网站上按钮、卡片、芯片、主题、位置指示器和可缩放惰性列组件 KDocs 的链接。(I22428
  • 修复了 WearOS SwipeToDismissBox 有时无法处理滑动的问题。(I9387e
  • 添加了按钮、紧凑按钮、芯片、紧凑芯片、AppCard、TitleCard、切换按钮、切换芯片、分体切换芯片的示例 (Iddc15)
  • 为 Card、Chip、ToggleChip、TimeText 和 ScalingLazyColumn 添加了微基准性能测试。(If2fe9

版本 1.0.0-alpha07

2021 年 9 月 29 日

发布了 androidx.wear.compose:compose-foundation:1.0.0-alpha07androidx.wear.compose:compose-material:1.0.0-alpha07androidx.wear.compose:compose-navigation:1.0.0-alpha07版本 1.0.0-alpha07 包含这些提交。

新功能

  • 在 Material 中添加了一个 CurvedText 组件,该组件允许开发者轻松编写遵循圆形曲率的弧形文本(通常在圆形屏幕的边缘)。(I19593)

API 变更

  • 为 TimeText 添加了测试 (Idfead)
  • 将 ArcPaddingValues 转换为接口。(Iecd4c
  • 为 SwipeToDismissBox 添加了动画 (I9ad1b)
  • 为 SwipeToDismissBox API 添加了 hasBackground 参数,以便在没有背景内容可显示时禁用滑动手势。(I313d8
  • rememberNavController() 现在接受一组可选的 Navigator 实例,这些实例将被添加到返回的 NavController 中,以更好地支持可选导航器,例如 Accompanist Navigation Material 中的导航器。(I4619e
  • 从 navigation-common 引用 NamedNavArgument 并从 wear.compose.navigation 中移除副本。(I43af6

Bug 修复

  • 修复了 CurvedRow 在较小设备上的测试不稳定性。(If7941
  • 修复了 CurvedRow 在内容更新时可能出现的闪烁问题,并确保 CurvedRow 重新测量。(Ie4e06
  • ChipDefaults.gradientBackgroundChipColors() 已根据 UX 规范更改进行了更新。渐变现在从 alpha 32.5% 的 MaterialTheme.colors.primary 开始,到 alpha 0% 的 MaterialTheme.colors.surface 结束,背景为 alpha 75% 的 MaterialTheme.colors.surface。(Id1548
  • 我们已更新 ToggleChips 在选中状态下的颜色,以匹配最新的 Wear Material Design UX 规范指南。选中时,ToggleChips 现在具有从 MaterialTheme.color.surface @ 0% alpha(左上角)到 MaterialTheme.color.primary @ 32% alpha(右下角)的渐变背景,背景为 MaterialTheme.color.surface @ 75% alpha。这使得 ToggleChip 在选中和未选中状态之间的差异更加微妙。(Idd40b

版本 1.0.0-alpha06

2021 年 9 月 15 日

发布了 androidx.wear.compose:compose-foundation:1.0.0-alpha06androidx.wear.compose:compose-material:1.0.0-alpha06androidx.wear.compose:compose-navigation:1.0.0-alpha06版本 1.0.0-alpha06 包含这些提交。

新功能

  • 我们添加了 Scaffold,这是一个顶级应用程序可组合项,它提供了一个结构来处理 PositionIndicators(如滚动或音量)的位置、屏幕顶部用于显示时间 和应用程序状态的区域,并且还支持 Vignette 以模糊可滚动内容的屏幕顶部和底部边缘。Scaffold 的主要区域是应用程序内容放置的地方。(I5e0bf
  • 添加了 Wear Compose 的 TimeText 实现 (I5654c)

Wear Compose 导航库

  • 我们发布了 Wear Compose Navigation 库的第一个版本,它提供了 Wear Compose 和 Androidx Navigation 库之间的集成。它提供了一种简单的方法来在您的应用程序中作为目标的可组合函数之间进行导航。

  • 此初始版本提供

    • 一个 SwipeDismissableNavHost 可组合项,用于承载导航图并通过滑动手势提供返回导航
    • NavGraphBuilder.composable 扩展,用于协助构建导航图
    • rememberSwipeDismissableNavController() 允许提升状态
  • 我们创建两个屏幕并在它们之间导航的示例用法

    val navController = rememberSwipeDismissableNavController()
    SwipeDismissableNavHost(
        navController = navController,
        startDestination = "start"
    ) {
        composable("start") {
            Column(
                horizontalAlignment = Alignment.CenterHorizontally,
                verticalArrangement = Arrangement.Center,
                modifier = Modifier.fillMaxSize(),
            ) {
                Button(onClick = { navController.navigate("next") }) {
                    Text("Go")
                }
            }
        }
        composable("next") {
            Column(
                horizontalAlignment = Alignment.CenterHorizontally,
                verticalArrangement = Arrangement.Center,
                modifier = Modifier.fillMaxSize(),
            ) {
                Text("Swipe to go back")
            }
        }
    }
    
  • Wear Compose Navigation 被打包为一个单独的库,因此实现自己手动导航的简单 WearCompose 应用程序不需要依赖 Androidx Navigation 库。

API 变更

  • 更新了 SwipeDismissableNavHost 以支持 rememberSaveable,通过设置背景和内容的键标识。(I746fd
  • 我们添加了一个可以处理 LazyListState 的 PositionIndicator 适配器。(I21b88
  • 更新了 SwipeToDismissBox 以支持 rememberSaveable (Ie728b)
  • 我们已将 reverseLayout 支持添加到 ScalingLazyColumn。这允许反转滚动和布局的方向。(I9e2fc
  • 已弃用 performGestureGestureScope,它们已被 performTouchInputTouchInjectionScope 替换。(Ia5f3f, b/190493367
  • 我们将 VignetteValue 重命名为 VignettePosition,并将 VignetteValue.Both 重命名为 VignettePosition.TopAndBottom。(I57ad7
  • 我们将 ScalingLazyColumnState 重命名为 ScalingLazyListState,ScalingLazyColumnItemInfo 重命名为 ScalingLazyListItemInfo,ScalingLazyColumnLayoutInfo 重命名为 ScalingLazyListLayoutInfo,ScalingLazyColumnScope 重命名为 ScalingLazyListScope,以防我们将来决定添加 ScalingLazyRow 实现。(I22734

Bug 修复

  • 更新了 CompactChip 文档,描述了未提供图标或标签时发生的情况。(I4ba88
  • 我们对 Wear 卡片组件进行了一些调整。(I6b3d0
    1. TitleCard 中标题和正文之间的间距从 8.dp 减小到 2.dp。
    2. TitleCard 标题字体从 body 更改为 title3。
    3. 卡片背景渐变已更改,以使背景看起来更暗。

版本 1.0.0-alpha05

2021 年 9 月 1 日

发布了 androidx.wear.compose:compose-foundation:1.0.0-alpha05androidx.wear.compose:compose-material:1.0.0-alpha05版本 1.0.0-alpha05 包含这些提交。

API 变更

  • 将 ArcPaddingValues 标记为 @Stable (I57deb)
  • ScalingLazyColumnState 现在实现了 ScrollableState 接口,使开发人员能够以编程方式滚动组件。(I47dbc

Bug 修复

  • 我们已减小了 Chip 和 ToggleChip 中图标和文本之间的间距,使其与 UX 规范的更新保持一致。(I83802

版本 1.0.0-alpha04

2021 年 8 月 18 日

发布了 androidx.wear.compose:compose-foundation:1.0.0-alpha04androidx.wear.compose:compose-material:1.0.0-alpha04版本 1.0.0-alpha04 包含这些提交。

新功能

  • 添加了一个 SwipeToDismissBox 和 swipeable 修饰符,可用于支持从左到右的滑动关闭手势。尽管独立于导航组件,但预计这将用于退出一个屏幕并导航到另一个屏幕。添加了集成测试以演示滑动关闭。(I7bbaa
  • 我们已将 ScalingLazyColumnItemInfo 和 ScalingLazyColumnLayoutInfo 接口添加到 ScalingLazyColumnState 类中,以便开发人员能够了解缩放后 ScalingLazyColumn 中项目的实际位置和大小。我们还修复了当“top”内容填充应用于 ScalingLazyColumn 时,缩放计算方式的一个错误。(I27c07

API 变更

  • 添加 CurvedTextStyle 类以指定弯曲文本样式选项。类似于 TextStyle,但现在只支持 color、fontSize 和 background。未来将添加更多样式选项。(I96ac3
  • 我们已将 ScalingLazyColumnItemInfo 和 ScalingLazyColumnLayoutInfo 接口添加到 ScalingLazyColumnState 类中,以便开发人员能够了解缩放后 ScalingLazyColumn 中项目的实际位置和大小。我们还修复了当“top”内容填充应用于 ScalingLazyColumn 时,缩放计算方式的一个错误。(I27c07
  • @ExperimentalWearMaterialApi 添加到 SwipeDismissTarget 枚举,它是 SwipeToDismissBox API 的一部分。(I48b5e

Bug 修复

  • 添加了 SwipeToDismissBox 的测试材料 (I9febc)

版本 1.0.0-alpha03

2021 年 8 月 4 日

发布了 androidx.wear.compose:compose-foundation:1.0.0-alpha03androidx.wear.compose:compose-material:1.0.0-alpha03版本 1.0.0-alpha03 包含这些提交。

API 变更

  • 添加了 CurvedText 组件,允许开发者轻松编写遵循圆形曲率的文本(通常在圆形屏幕边缘)(Id1267)
  • 我们将 CardDefaults.imageBackgroundPainter() 重命名为 CardDefaults.imageWithScrimBackgroundPainter(),以明确背景图像上会绘制一层遮罩。(I53206
  • 添加了 ScalingLazyColumn 组件,它为 Wear Material 提供了一个列表组件,该组件具有鱼眼视图,列表内容的大小会随其向组件边缘缩放而缩小并变得透明。(I7070c

Bug 修复

  • 我们根据 UX 规范更新更改了 AppCard 中 appName 内容的默认颜色。appName 的默认颜色现在是 MaterialTheme.colors.onSurfaceVariant。此外,还添加了标题槽缺失的参数文档描述。(Ic4ad1

版本 1.0.0-alpha02

2021 年 7 月 21 日

发布了 androidx.wear.compose:compose-foundation:1.0.0-alpha02androidx.wear.compose:compose-material:1.0.0-alpha02版本 1.0.0-alpha02 包含这些提交。

新功能

  • 添加了一个新的 CurvedRow 类,用于以弧形布局可组合项 (I29941)
  • 为应用程序添加了一种新型卡片(TitleCard),还添加了对使用图像作为卡片背景以强调其内容的支持。(I53b0f

API 变更

  • 为 CurvedRow 添加了径向对齐支持(类似于行中的垂直对齐)(Id9de5)
  • 添加了一个新的 CurvedRow 类,用于以弧形布局可组合项 (I29941)
  • 为应用程序添加了一种新型卡片(TitleCard),还添加了对使用图像作为卡片背景以强调其内容的支持。(I53b0f
  • 为 ToggleChipDefaults 添加了切换图标(复选框、开关和单选按钮),使开发者更容易配置 ToggleChip 和 SplitToggleChips (I7b639)
  • 芯片的起始和结束内容填充已更新,无论芯片是否带有图标,都始终为 14.dp(之前如果带有图标则为 12.dp,不带图标则为 14.dp)(I34c86)

Bug 修复

  • 为 CurvedRow 添加了更多测试 (I93cdb)
  • 将 Wear Compose 依赖项绑定到 Compose 1.0.0-rc01。(Ie6bc9
  • 更改了卡片和芯片中背景图像绘制的处理方式,现在图像被裁剪而不是拉伸,以保持图像比例。(I29b41
  • 为 Button 和 ToggleButton 添加了更多演示和集成测试。(5e27ed2
  • 为 imageBackgroundChips 的内容颜色添加了更多芯片测试 (Ia9183)

版本 1.0.0-alpha01

2021 年 7 月 1 日

发布了 androidx.wear.compose:compose-foundation:1.0.0-alpha01androidx.wear.compose:compose-material:1.0.0-alpha01版本 1.0.0-alpha01 包含这些提交。

新功能

Wear Compose 是一个基于 Kotlin 和 Compose 的库,它支持 Wear Material Design,这是 Material Design for WearOS 可穿戴设备的扩展。此第一个 Alpha 版本包含以下组件的早期、功能性实现:

  • Material 主题 - 统一配置此库中使用的组件的颜色、排版和形状。
  • Chip、CompactChip - 芯片为体育场形状,并有多种变体可用于容纳图标、标签和次要标签内容。
  • - ToggleChip、SplitToggleChip - 一种特殊类型的芯片,包含一个双态切换图标的槽,如单选按钮或复选框。此外,SplitToggleChip 有两个可轻触区域,一个可点击,一个可切换。
  • Button、CompactButton - 按钮呈圆形,带有一个用于图标或少量文本(最多 3 个字符)的单一内容槽。
  • ToggleButton - 一种开启或关闭某个操作的按钮,带有一个用于图标或少量文本(最多 3 个字符)的单一槽。
  • Card、AppCard - 矩形带圆角,提供用于应用程序图标、时间、标题和正文等内容的槽。

未来的版本将扩展小部件集,增加对 Wear Material Design 选择器、滑块、列表、页面指示器、对话框、滚动条指示器、Toast 等的支持。

此外,还将提供对其他 Wearable 特定功能的支持,例如弧形布局和文本,以及脚手架,使开发人员可以轻松构建 Wearable 应用程序/叠加层。

Wear Compose Material 的设计原则与 Compose Material 相同,但目标是可穿戴设备。在为可穿戴设备构建时,应使用 Wear Compose Material 库而不是 Compose Material 库。

这两个“Material”库应被视为互斥,不应在同一个应用程序中混合使用。如果开发人员发现自己在依赖项中包含了 Compose Material 库,则可能表明 a) Wear Compose Material 库中缺少组件,请告诉我们您需要什么,或 b) 您正在使用我们不建议在可穿戴设备上使用的组件。