Wear 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. }
如需详细了解依赖项,请参阅添加 build 依赖项。
反馈
您的反馈将帮助我们改进 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
已更新,从icon()
中移除了iconContentDescription
和contentDescription
参数。此外,ConfirmationDialogDefaults
现在在SuccessIcon
和FailureIcon
可组合项上具有修饰符参数。(Id2ae2)
bug 修复
- 更改了应用
SurfaceTransformation
参数效果的顺序。以前,对 Wear Material3 组件应用的转换是按以下顺序完成的:背景绘制程序、容器转换、内容转换。现在,前 2 个元素被反转,我们会在它们之间应用传入的任何修饰符,因此它会受到容器转换的影响。这修复了使用转换参数将占位符闪烁效果与 TLC 中的元素搭配使用等情况。(I786cf) - 添加了
RevealState.Saver
,以便在重新创建 activity 或进程时恢复SwipeToReveal
的状态。rememberRevealState
函数现在默认使用此 Saver。(Ie0ecb) SwipeToReveal
主要和次要操作按钮应默认为ButtonDefault.Height
(修复了这些按钮会填充较高按钮的最大高度的 bug)。(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
中的一个 bug,该 bug 会导致在移除底部项时项的大小发生变化。(Idacab) - 修复了
TransformingLazyColumn
存在的 bug,即列表卡在列表顶部或底部的问题。(I49d00) - TalkBack 下的
OpenOnPhoneDialog
应读出弯曲文本,而不是图标内容说明。(I4efe8) - 修复了
SwipeToReveal
中的一个 bug,该 bug 会在hasPartiallyRevealedState
设置为 false 时在RevealState.currentValue
中报告错误的锚点。(I9c7cf) SwipeToReveal
撤消按钮现在默认设为ButtonDefaults.Height
。(I1f6c8)- 通过不再使用画布绘制 scrim,
BasicSwipeToDismissBox
性能得到了提升。(I68f2c) - 修复了滑块中的无障碍功能 bug,该 bug 会导致更新后读出的百分比与值不符 (I91146)
- 修复了
placeholderShimmer
实现中的 bug。(Iee39b - 通过优化
ScrollProgress
计算,TransformingLazyColumn
性能提高了 30%。(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 的新界面设计系统。建议从 Material 升级到 Material3,以便在应用中采用新的视觉设计,并受益于以下新组件:
MaterialTheme
,获取更新后的扩展配色方案、排版和形状,为您的设计增添深度和多样性。- 动态配色主题,可自动为您的应用生成配色方案,以匹配表盘颜色。
- 默认情况下,新组件会自动适应更大的屏幕尺寸
- 形状变形 -
IconButton
、TextButton
、IconToggleButton
和TextToggleButton
等圆形按钮组件支持在按下或选中时呈现动画效果的变体。 EdgeButton
- 一种新的贴边按钮,采用专为屏幕底部设计的特殊形状。- 基架 - 引入
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 FoundationSwipeToReveal
导入替换为 Wear Compose Material/ Wear Compose Material3 导入,以便继续使用这些 API。(Ia147d)。 - Wear Compose Material3 对 Foundation 的
SwipeToReveal
依赖项已移至 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
和宽度;将RevealState
构造函数更改为接受RevealDirection
而非锚点;移除了createRevealAnchors
、锚点和bidirectionalAnchors
函数;将SwipeToRevealScope
函数primaryAction
、secondaryAction
、undoPrimaryAction
和undoSecondaryAction
重命名为PrimaryActionButton
、SecondaryActionButton
、UndoActionButton
并将其转换为可组合项函数;将RevealActionType
标记为内部函数。(I885d0)。 - 进一步更新了
SwipeToReveal
API,具体如下:将onFullSwipe
重命名为onSwipePrimaryAction
;重命名了SwipeToRevealNonAnchoredSample
,以指明使用hasPartiallyRevealedState
参数;移除了actionButtonHeight
,因为默认值是按钮的默认高度,并且可以使用修饰符设置更大的高度;从SwipeToRevealDefaults
中移除了SmallActionButtonHeight
;将RevealValue
和RevealDirection
构造函数中的值参数设为私有。(I465ce)。
bug 修复
- 修复了
ScreenScaffold
的EdgeButton
处理,以便在移除TransformingLazyColumn
项后,EdgeButton
会以动画形式进入到位。(I6d366)。 - 将 Wear Compose 对 Compose 库的依赖项更新为版本 1.8.0。(I2ef3f)。
- 更新了未确定
CircularProgressIndicator
的动作,使其不再暂时回归。(Ieddb1)。 - 修复了
SwipeDismissableNavHost
bug:在滑回后焦点无法正确切换,导致旋转输入失败(适用于使用预测性返回的 API 36 及更高版本)。(Ieddb1)。 - 修订了 Hierarchical Focus API 的文档 (Idf2ff)。
- 更新了按钮和卡片的文档,说明了
containerPainter
和disabledContainerPainter
如何替换containerColor
和disabledContainerColor
(I4a453)。 - 还原了上一个版本中对
TimeText
所做的更改,该更改会将BroadcastReceiver
移至工作器线程,因为这会导致在导航期间管理自己的线程的应用出现问题。(I34d02)。 - 更新了选择器示例,以移除不必要的 remember 调用,改为在选择器中使用
rememberUpdatedState
来记住最新的contentDescription
lambda 函数。(Icb5b1)。 - 更新了
TimePicker
和DatePicker
中的文本样式,以便字体更改不再导致截断。(I26194)。 ListHeader
和ListSubHeader
现在将文本对齐方式分别默认设置为居中对齐和左对齐。(I78339)。- 更新了 Foundation 和 Material 滑动以显示示例和演示,以宣布自定义无障碍功能操作(自定义操作必须作为内容的语义添加,而不是添加到
SwipeToReveal
可组合项本身)。(Ie92a3)。 - 根据
EdgeButton
内容的大小更新了对其设置的默认MaxLines
,现在超小号为 1,小号和中号为 2,大号为 3。(Ie35f6)。 - 简化了
LocalReduceMotion
,以便仅注册一次观察器,从而提升性能。(Ib1979)。 - 最大限度地减少了
ScrollIndicator
中的重新绘制次数,以提高性能。(Ia7a67)。 - 修复了
TransformingLazyColumn
中的以下 bug:当 EdgeButton 达到其完整高度时,列表中的顶部可见项无法正确缩放。(I30580)。
版本 1.5.0-alpha14
2025 年 4 月 23 日
发布了 androidx.wear.compose:compose-*:1.5.0-alpha14
。版本 1.5.0-alpha14 包含这些提交内容。
API 变更
- 所有依赖于 Foundation
SwipeToReveal
的 MaterialSwipeToReveal
都已移至 Material 软件包,例如RevealValue
、RevealDirection
、RevealActionType
、RevealState
、rememberRevealState
。开发者应将这些类和函数的导入从androidx.wear.compose.foundation
更改为androidx.wear.compose.material
。(Ib7cb8) - 将
HierarchicalFocusCoordinator
的 API 更新为修饰符,而不是可组合项。 - 迁移注意事项:
- 您可以通过向
content
或封闭容器可组合项添加Modifier.hierarchicalFocus(function())
来替换HierarchicalFocusCoordinator(function, content)
。 - 可以通过添加
Modifier.hierarchicalFocusRequester(focusRequester)
来替换ActiveFocusListener { if (it) focusRequester.requestFocus() }
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 变更
bug 修复
版本 1.5.0-alpha12
2025 年 3 月 26 日
发布了 androidx.wear.compose:compose-*:1.5.0-alpha12
。版本 1.5.0-alpha12 包含这些提交内容。
API 变更
- 改进了
SwipeToReveal
对gestureInclusion
的默认实现,以便仅在组件的状态为“已覆盖”时忽略手势。(I7e3d6) - 对于
SwipeToReveal
,将bidirectionalGestureInclusion
设为 val(而不是函数),并将@FloatRange
添加到gestureInclusion
中的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 FoundationPagerState
作为基类,并添加了currentPage
、currentPageOffsetFraction
和pageCount
属性。更新了GestureInclusion
接口,将方法重命名为ignoreGestureStart
。(I4ae07) - 将
requireOffset
添加到SwipeToDismissBoxState
中,以便以推荐的方式获取SwipeToDismissBoxState
的偏移量。(I21042) - 添加了
CurvedModifier.semantics
,最初支持内容描述和遍历索引 (I0b093) - 我们添加了
CurvedModifier.clearAndSetSemantics
,以提供一种关闭曲线语义的方法。CurvedText
仍会默认将内容描述设为文本,但timeTextCurvedText
和timeTextSeparator
现在不会读出其内容。(I4b568) HorizontalPager
对滑动手势的默认处理已重命名为PagerDefaults.gestureInclusion
。默认行为现在是仅忽略从第一个页面的左边缘开始的滑动手势,并且仅在 TalkBack 处于关闭状态时才会这样做。在其他情况下,默认行为是页面浏览器不会忽略滑动手势,因此滑动手势将不适用于滑动关闭处理脚本。(Iee486)- 为
rotaryScrollable
API 添加了旋转滚动。向rotaryScrollable
快速滑动行为添加了滚动回弹和嵌套滚动。这项更改应该会使触摸滚动和旋转滚动之间的滚动回弹和嵌套滚动功能达到同等水平。(I71926) - 向
SwipeToReveal
添加了对边缘滑动区域的支持。FoundationSwipeToReveal
的默认行为现在是禁止在手势从边缘开始时滑动。现在,当手势从边缘开始且SwipeDirection
设置为单向时,Material3SwipeToReveal
的默认行为是禁止滑动。(I32ef0) - TLC 现在默认使用空 contentPadding,而不是将第一个和最后一个项居中显示。(I77ab7)
bug 修复
版本 1.5.0-alpha10
2025 年 2 月 26 日
发布了 androidx.wear.compose:compose-*:1.5.0-alpha10
。版本 1.5.0-alpha10 包含这些提交内容。
API 变更
- 将
SwipeToRevealDefaults
设为公开。(I0c34c) - 我们已替换
HorizontalPager
中的swipeToDismissEdgeZoneFraction
参数。不过,我们引入了一个新参数gestureInclusion
,可用于实现必要的滑动关闭行为。gestureInclusion
会接受GestureInclusion
的实例,该实例决定后续滚动事件是否应继续。允许手势意味着 Pager 会使用该手势;否则,系统会在其他位置(例如通过滑动关闭处理脚本)处理该手势。新默认行为是禁止在分页器中第一个页面的最左边缘执行手势,从而允许在此区域中滑动关闭。所有其他页面都允许 Pager 使用所有手势,这意味着无法通过这些页面触发“滑动关闭”操作。如需在所有页面上实现“滑动关闭”行为,只需提供一个会忽略当前页面的自定义GestureInclusion
实例(请参阅PagerDefaults.disableLeftEdgeOnFirstPage
)即可。这里引入的另一项重大变更是,Pager 组件不再默认全屏显示,而是添加Modifier.fillMaxSize()
来实现此行为。(I9d3aa) - 我们已将滑动以显示 API 中的
createAnchors
重命名为createRevealAnchors
(If5999) - 我们已从滑动以显示 API 中移除
RevealScope
。(Ie4ad5) - 我们已从滑动以显示 API 中的
RevealValue
中移除了“正在显示”和“已显示”状态。(I8dbc5) - 我们已将滑动以显示 API 中的
SwipeDirection
重命名为RevealDirection
。(I7472f) - 我们更改了
SwipeToReveal
的rememberRevealState
函数的positionalThreshold
参数的签名。(I29c0a) - 我们向
ScalingLazyColumn
、TransformingLazyColumn
和ScreenScaffold
添加了一个新的overscrollEffect
参数。(I0cee8) - 使用
PagerDefaults#snapFlingBehaviour
时,pagerSnapDistance
参数已替换为 Int 参数maxFlingPages
,可用于指定 Pager 应快速滑动的页面数量上限。(I8cfc0) - Wear Pager 现在有自己的
PagerScope
,而不是使用 Compose FoundationPagerScope
。(I9195b) - 我们添加了对曲线文本的
lineHeight
支持 (I1c936) - 我们在
TransformingLazyColumnState
和rememberTransformingLazyColumnState
中添加了initialAnchorItemIndex
和initialAnchorItemOffset
,以便在TransformationLazyColumn
中指定初始滚动位置。(I0a0d5) - 弃用
runWithTimingDisabled
,改用runWithMeasurementDisabled
,后者更清楚地描述了行为 - 所有指标均处于暂停状态。此外,由于runWithMeasurementDisabled
函数是内嵌的,因此无法重新声明该函数以开放访问权限,因此请公开MicrobenchmarkScope
父类。(I9e23b、b/389149423、b/149979716) - 我们已向 API 添加了
TransformingLazyColumnItemScrollProgress.Unspecified
,以避免在TransformingLazyColumnItemScrollProgress
上进行封装。(I0835d)
bug 修复
- 改进了
CurvedTextStyle
的 Kdoc (Id45e3) - 我们已将
SwipeableV2
(SwipeToReveal
实现的一部分)设为内部 API,而不是公共 API,但仅限于库组。(Idbb94) - 我们向
HierarchicalFocusCoordinator
添加了测试 (I1ce54、b/395548918) - 我们改进了 Wear Compose 基础示例中的
SwipeToReveal
。(I5f307) - 修复了
TransformingLazyColumn
中verticalScrollAxisRange
的滚动轴语义数据,以实现无障碍功能 (I68123) - 通过移除不必要的后台线程,提高 Wear 4.0 及更高版本上的旋转触感反馈的性能 (I39cfe)
- 仅在 API 36 及更高版本中将
SwipeDismissableNavHost
更改为使用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 修复
- 现在,系统会针对 V 之后的 Wear OS 版本(Idb03e)调用旋转平台触感反馈
版本 1.5.0-alpha07
2024 年 12 月 11 日
发布了 androidx.wear.compose:compose-*:1.5.0-alpha07
。版本 1.5.0-alpha07 包含这些提交内容。
API 变更
TransformingLazyColumnState
现在提供了一种基于锚点项索引来观察当前滚动进度的方法。(I72b01)- 我们为添加、移除和移动项(如果它们具有新的
Modifier.animateItem
)时在TransformingLazyColumn
中添加了动画。(Iecb9c) TransformingLazyColumn
现在公开了beforeContentPadding
和afterContentPadding
的值。(Iccd5f)TransformingLazyColumn
现在提供本地组合LocalTransformingLazyColumnItemScope
,组件(例如 Material3 中的Card
和Button
)可以使用该组合在放置在TransformingLazyColumn
中时自动进行变形。调用方可以使用新的TransformExclusion
封装容器停用自动变形。(I1652f)
bug 修复
- 我们更新了以 Android 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 变更
- 我们移除了不再需要的
orientation
参数,从而简化了PagerState
的ScrollInfoProvider
。新行为是,TimeText
在水平和垂直分页时都保持原位。(I71767) TransformingLazyColumn
在早期版本中引入。我们现在将移除 Wear 的LazyColumn
别名(会转发到TransformingLazyColumn
),改用新名称TransformingLazyColumn
。我们还移除了TransformingLazyColumnVisibleItemInfo
的height
属性,请改用measuredHeight
。(I0ea1e)- 我们已将
PagerDefaults.snapFlingBehavior
snapAnimationSpec
从Tween
规范更改为Spring
规范。I10d02、b/349781047、b/303807950 - 我们已将
LocalReduceMotion
CompositionLocal
提升为稳定版 (Ia6f32)
bug 修复
- 我们更新了
Modifier.rotaryScrollable
,以使用focusTargetWithSemantics
在旋转设备上更好地支持语义。(Ief0a0) - 我们已将 Compose 库的最低 API 依赖项更新为 1.7.4。(I88b46)
- 我们已停用
TransformingLazyColumn
中的宽度变形,以解决剪裁 bug 问题。(I3dfb8) - 我们修复了以下 bug:使用
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
时出现的 bug。(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 FoundationLazyColumn
。(I0608b) - 为水平/垂直页面浏览器添加了旋转支持,让用户可以使用旋转输入设备浏览页面浏览器。(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 对话框中的晕影动画 bug (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 修复
- 我们修复了一个 bug,现在,当
userScrollEnabled
标志设置为false
时,ScalingLazyColumn
中的旋转滚动功能会被停用。(I490ab、b/360295825) - 我们修复了一个 bug,以解决曲线文本上出现的意外垂直内边距问题。曲线文本的高度现在更接近文本实际占用的空间。请注意,这可能会破坏涉及弯曲文本的屏幕截图测试 (Iaa6ef)
- 我们还还原了
Dialog
的 bug 修复,因为在某些情况下,这会导致onDismissRequest
被多次调用。在showDialog
设置为 false 时,系统会调用onDismissRequest
回调。(I64656)
版本 1.5.0-alpha01
2024 年 9 月 4 日
发布了 androidx.wear.compose:compose-*:1.5.0-alpha01
。版本 1.5.0-alpha01 包含这些提交内容。
API 变更
- 我们已向 Wear Compose Foundation 库中添加了新的
LazyColumn
,并附带了相关的LazyColumnState
和LazyColumnScope
API。这为使用 Wear Compose 构建可自定义的缩放和变形效果奠定了基础。(Ib3b22) - 我们在新的
LazyColumn
API 中向LazyColumnScope
添加了带索引的itemsIndexed
版本。(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) - 修复了曲线布局大小修饰符的 bug (I0fedf)
- 我们添加了对以“sp”指定的字母间距的支持。(I9f6e3)
- 我们修复了 Material2 对话框中的一个 bug,该 bug 会导致在对话框变为不可见时不调用
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 修复
- 我们防范了访问全局 reducemotion 设置时发生的崩溃问题。在某些未提供该设置的平台上,此问题会触发。(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.3.0 中引入的变更,请参阅 Beta 版 01 的版本说明。
版本 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
,将“focusable”替换成了“focusTarget”,从而提升了性能。(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
。 - 添加了
SelectableChip
和SplitSelectableChip
作为ToggleChip
的变体 - 将其与RadioButton
搭配使用,以便提供可选择的语义(而不是可切换的语义)以实现无障碍功能 ListHeader
现在支持在内容需要额外高度来容纳较大的字体大小时进行高度调整。
bug 修复
- 我们修复了以下 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 snapOffset
中的snapOffset
参数的类型从 Int 更改为 Dp。(Iddebe) - 我们已将
SplitSelectableChip
上的clickInteractionSource
参数重命名为containerInteractionSource
。(Ia8f84) - 我们已更新
SplitSelectableChip
的点击回调参数名称,将onClick
更新为onSelectionClick
,将onBodyClick
更新为onContainerClick
。(I32237)
bug 修复
- 我们已将
PositionIndicator
的水平内边距更新为 2dp(之前为 5dp),以修复PositionIndicator
(滚动条)与可滚动内容重叠的 bug。请注意,由于内边距发生了变化,此次更改预计会破坏包含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
参数设置为“snap”,则建议您还通过flingBehavior
参数提供“snap”,以便触摸滚动。(I2ef6f) NestedScroll
来源“拖动”和“快速滑动”将替换为UserInput
和SideEffect
,以适应这些来源的扩展定义,这些来源现在包括动画(副作用)以及鼠标滚轮和键盘(用户输入)。(I40579)- 我们添加了
SelectableChip
和SplitSelectableChip
,以便更清晰地区分Switch/Checkbox
等切换控件和RadioButton
等可选择控件。这会将之前添加的ToggleChip/SplitToggleChip
重载替换为selectionControl
参数。(Ia0217) - 将
ProgressIndicatorDefaults
中的IndeterminateStrokeWidth
的可见性修饰符更新为 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 变更
- 我们已将
ScalingLazyListState
的initialCenterItemIndex
和initialCenterItemScrollOffset
属性设为公开。(I0c616) - 我们已将
ProgressIndicatorDefaults
中的FullScreenStrokeWidth
设为公开。(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 变更
- 我们为
ToggleChip
和SplitToggleChip
添加了新的过载,该过载采用selectionControl
参数(而非toggleControl
参数)。应将此属性与RadioButton
控件搭配使用,以便提供可选择的语义,而不是可切换的语义以实现无障碍功能 (I1d6d9) - 我们已将
ToggleChip
和SplitToggleChip
的新selectionControl
过载的参数名称从onSelected
更新为onSelect
(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*
注解的文档 bug。(Id526d)
版本 1.4.0-alpha02
2024 年 2 月 7 日
发布了 androidx.wear.compose:compose-*:1.4.0-alpha02
。版本 1.4.0-alpha02 中包含这些提交内容。
bug 修复
- 我们修复了滑动以显示内容功能中的 bug,该 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-material
和wear:compose-material3
库中添加了一个新的涟漪 API,该 API 取代了已废弃的rememberRipple
。此外,还添加了一个临时的CompositionLocal
LocalUseFallbackRippleImplementation
,以将 Material 组件还原为使用已废弃的rememberRipple/RippleTheme
API。此方法将在下一个稳定版本中移除,仅在您提供自定义RippleTheme
的情况下作为临时迁移辅助工具。如需了解迁移信息以及此次变更的更多背景信息,请访问 developer.android.com。(af92b21) - 我们已将
ColorScheme
更新为不可变,这会降低单个颜色更新的效率,但会提高颜色的常规用法效率。之所以做出这项更改,是因为大多数应用不会将更新单个颜色作为主要用例。这仍然可行,但会比以前重组更多,进而我们会通过所有 Material 代码显著减少状态订阅量,并会影响更多标准用例的初始化和运行时开销。(f5c48b7) - 在其 API 中公开
MutableInteractionSource
的 Wear Material 和 Wear Material3 组件已更新,现在公开的MutableInteractionSource
可为 null,默认为 null。这里没有任何语义上的更改:传递 null 表示您不希望提取MutableInteractionSource
,并且它将在需要时在组件内创建。更改为 null 后,某些组件将永远不会分配MutableInteractionSource
,而其他组件仅在需要时才会延迟创建实例,从而提高这些组件的性能。如果您不使用传递给这些组件的MutableInteractionSource
,建议您改为传递 null。我们还建议您在自己的组件中进行类似的更改。(f8fa920) - 我们更新了
rememberExpandableState
,以保存展开状态。这样可确保在导航到其他屏幕时存储数据,并在返回原始屏幕时恢复数据。(5c80095)
bug 修复
- 我们更新了
ReduceMotion
设置,以使用生命周期感知型监听器。(7c6b122) - 我们更新了
TouchExplorationStateProvider
的监听器,使其具有生命周期感知能力 (be28b01) - 我们移除了
CompactButton
的 materialcore 层,以提高性能 (25db8e9) - 我们增强了
BasicSwipeToDismissBox
对 NaN 偏移的容错性,以避免异常 (b983739) - 我们更新了
BasicSwipeToDismissBox
,以确保 Alpha 值在 0,1 范围内 - 我们修复了
ToggleButton
、SplitToggleButton
、Checkbox
、Switch
和RadioButton
中的 bug,以免重复播放无障碍功能播报(之前,语义角色会重复)(d11eeb7)
版本 1.3
版本 1.3.1
2024 年 4 月 3 日
发布了 androidx.wear.compose:compose-*:1.3.1
。版本 1.3.1 包含这些提交内容。
bug 修复
- 我们修复了滑动以显示内容功能中的 bug,该 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 工作流(例如应用配置的主题中的颜色)是单独处理的。SwipeToRevealCard
和SwipeToRevealChip
类可帮助您实现recommended swipe-to-reveal guidance
。SwipeToRevealSample
类演示了如何使用这些组件。1.3.0-alpha02 版本引入了一项更改,该更改会导致
Chip
和ToggleChip
对象的高度增加,以更好地支持用户选择的字体放大。这可能会导致出现一些剪裁。为解决此问题,MaterialTheme
的large
形状现在使用较大的圆角半径(26 dp,而不是 24 dp)。Chip
和ToggleChip
对象使用此新的圆角半径,以避免剪裁条状标签和ToggleChip
的角落内容。- 由于大多数
Chips
和ToggleChips
的默认高度为 52dp,因此它们保持不变。不过,如果Chip
和ToggleChip
对象包含多行主标签或次级标签文本,或者高度已被替换,则可能会导致屏幕截图测试中断。
- 由于大多数
其他更改
如需详细了解版本 1.3.0 中引入的变更,请参阅 Beta 版 01 的版本说明。
实现建议
- 如果您的应用允许用户平移屏幕内容(例如基于地图的应用),请在
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
将使用此半径。此更改是为了支持在内容需要额外高度来适应较大的字体大小时进行高度调整,否则现有的体育馆形状会剪裁部分文本内容。图 1:文本在角落处被剪裁。 图 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 中包含这些提交内容。
Compose for Wear OS 的 1.3-beta01 版本表明,此版本是一个功能完备且 API 已锁定的库(标记为实验性的除外)。Wear Compose 1.3 包含以下新功能:
SwipeToDismissBoxState
、SwipeToDismissValue
和Modifier.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 中提供了新的SwipeToRevealCard
和SwipeToRevealChip
可组合项,这些可组合项遵循了针对Card
和Chip
的建议用户体验指南。它还支持针对次要操作执行撤消操作。DefaultTextStyle
现在会关闭字体内边距,以便在整个 Android 平台中保持一致。Chip
和ToggleChip
现在会调整其高度,以适应因无障碍功能而使用大号字体而增多的内容PositionIndicator
现在针对淡入、淡出和位置更改动画提供了单独的动画规范。出于性能方面的原因,我们建议在与可滚动列表搭配使用时关闭淡入和位置更改效果。ExpandableStateMapping
提供了一种新的方法来生成ExpandableStates
,当需要按需创建ExpandableStates
且不一定具有@Composable
作用域时,可以使用此方法。Placeholder
现在允许在内容不再处于就绪状态时进行重置。此外,“减少动作”设置现在也适用于Placeholder
上的闪烁效果和擦除动作。
已知问题
- 首次显示屏幕时,系统不会立即显示
PositionIndicator
。我们打算在 1.4 的早期 Alpha 版中进行更改,以便该图标在初始显示时不带有任何动画。
API 变更
- 我们已将“基础”级别
SwipeToDismissBox
重命名为BasicSwipeToDismissBox
。这样可以更清晰地区分 Foundation 级组件和 Material 级SwipeToDismissBox
。后者会从MaterialTheme
中提取颜色以用于遮罩,并将其余实现委托给BasicSwipeToDismissBox
。(Ibecfc) - 我们已将
rememberExpandableStateMapping
标记为实验性,并改进了expandableItem
的性能。(I5f6bc) - 我们使用
SwipeToRevealPrimaryAction
、SwipeToRevealSecondaryAction
和SwipeToRevealUndoAction
可组合项将 MaterialSwipeToReveal
卡片和条状标签 API 中的SwipeToRevealAction
类替换成了基于槽的 API。如需查看有关如何使用新 API 的示例,请参阅示例代码。(Ia8943) - 我们已将
PositionIndicator
动画标志替换为AnimationSpec
参数。您可以通过将snap
作为AnimationSpec
传递来停用各个动画。(I6c523)
bug 修复
- 我们修复了在大小受限时由受限曲线文本触发的 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
重载中添加了各个标志,以控制不同的动画:showFadeInAnimation
、showFadeOutAnimation
和showPositionAnimation
。旧版 API 已废弃,并会将调用转发到新 API。出于性能和用户体验一致性方面的原因,当PositionIndicator
与可滚动列表搭配使用时,我们建议关闭showFadeInAnimation
和showPositionAnimation
标志。如果PositionIndicator
用作独立指示器(例如用于音量变化),我们建议您启用所有 3 个动画。(I44294) - 在将“滑动关闭”功能迁移到
wear.compose.foundation
后,我们已废弃 MaterialSwipeToDismissBoxState
、SwipeToDismissValue
和edgeSwipeToDismiss
。请替换为wear.compose.foundation
等效项。(Iee8c9)
bug 修复
- 我们更新了 Wear Compose 基础库、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
添加了各个标志,以控制不同的动画:showFadeInAnimation
、showFadeOutAnimation
和showPositionAnimation
。旧版 API 已废弃,并会将调用转发到新 API。出于性能和用户体验一致性方面的原因,当PositionIndicator
与可滚动列表搭配使用时,我们建议关闭showFadeInAnimation
和showPositionAnimation
标志。如果PositionIndicator
用作独立指示器(例如用于音量变化),我们建议您启用所有 3 个动画。(Ia2d63)
bug 修复
- 我们对滑动以显示动作进行了改进,为主要操作文本添加了淡出动画,并在完全滑动展开时淡出次要操作/更改图标缩放比例。(Ib7223)
- 建议您使“滑动以显示”操作可供访问,我们已向“滑动以显示”示例添加了自定义无障碍功能操作。(I42224)
- 我们改进了
SwipeToDismissBox
的性能,包括重构,以确保初始逻辑不会触发重组。现在,SwipeToDismissBox
会绘制为全屏大小。(Ie0aa2) - 修复了
PositionIndicator
错误消失的 bug。(I2091a) - 通过优化重组提高了
PositionIndicator
的性能。随后添加了用于控制动画的新标志 (fadeIn
、fadeOut
和positionChange
)(请参阅 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 修复
- 我们添加了对
SwipeToReveal
中Modifier.edgeSwipeToDismiss
的支持。(I95774、b/293444286) - 我们添加了 Material
SwipeToRevealChip
和SwipeToRevealCard
的示例。(Ieb974) - 我们更新了 Wear Compose Foundation 和 Material 库的基准配置文件。(I1dd1f)
版本 1.3.0-alpha05
2023 年 9 月 6 日
发布了 androidx.wear.compose:compose-*:1.3.0-alpha05
。版本 Version 1.3.0-alpha05 中包含这些提交内容。
bug 修复
版本 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 修复
- 修复了圆形按钮中修饰符未正确链接的 bug。(I5e162)
版本 1.3.0-alpha03
2023 年 8 月 9 日
发布了 androidx.wear.compose:compose-*:1.3.0-alpha03
。版本 1.3.0-alpha03 中包含这些提交内容。
API 变更
- 我们在 Material 中添加了两个新的可组合项,用于通过卡片和条状标签实现
SwipeToReveal
。这些可组合项遵循了针对该组件的建议用户体验准则,可让开发者更轻松地使用 Wear Material 中的现有组件实现SwipeToReveal
。(I7ec65) - 我们已将之前在注释中提及的
FloatRange
注解作为 API 约束条件启用。(Icb401)
bug 修复
- 我们已将
ScalingLazyColumn
的初始滚动逻辑移到了onGloballyPositioned()
中。(Ic90f1) - 我们现在在
PositionIndicator
、ProgressIndicator
和SelectionControls
中使用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
的新方法,适用于需要按需创建ExpandableStates
的情况,而创建时不一定是在@Composable
范围内(Iff9e0) SwipeToDismissBox
已从androidx.wear.compose.material
迁移到androidx.wear.compose.foundation
软件包。(I275fb)- 更新了 API 文件,以注释兼容性抑制。(I8e87a、b/287516207)
- 我们已将
Chip
、CompactChip
和ToggleChip
的高度常量设为公开 (Idbfde) - 我们已将
Chip
和CompactChip
的水平和垂直内边距设为公开。(Ieeaf7) - 添加了通过新的
userSwipeEnabled
参数在SwipeDismissableNavHost
中关闭滑动处理的功能。(Id2a0b、b/230865655) - 我们更新了 Wear Compose Navigation 库,以使用 Wear Compose Foundation 中的新
SwipeToDismissBox
。(I4ff8e)
bug 修复
- 我们修复了 z 顺序 bug:当按钮具有按钮行为时,点击按钮后
expandedItem
未显示正确的内容。(I1899d、b/289991514) - 使用
HierarchicalFocusCoordinator
改进了SwipeToDismissBox
(以及SwipeDismissableNavHost
)的焦点处理(I45362、b/277852486) - 我们修复了
SwipeableV2
中的手势处理。(I89737) - 我们已为 1.2 版确定了基准配置文件。(Id5740)
- 在将
SwipeToDismissBox
迁移到 Foundation 后,MaterialSwipeToDismissBox
实现现在会转发到 Foundation,并从其主题中提供默认颜色值。If8451 - 我们已向
ListHeader
添加标题语义。(Ic5420) - 现在,
Chip
和ToggleChip
会根据需要调整其高度,以容纳因无障碍功能而采用大号字体而增大的内容。(Iaf302) - 修复了
SplitToggleChip
可点按区域的语义角色中的一个 bug,以提高无障碍功能。(Ieed3a) - “减少动作”设置现在会关闭占位符上的闪烁效果和擦除动作。(I91046)
Stepper
和InlineSlider
现在支持长按多次点击,这样您就可以通过按住 + 或 - 按钮来快速增加/减少Stepper
和InlineSlider
的值。(I27359)
版本 1.3.0-alpha01
2023 年 6 月 21 日
发布了 androidx.wear.compose:compose-*:1.3.0-alpha01
。版本 1.3.0-alpha01 中包含这些提交内容。
bug 修复
- 正如在
1.2.0-alpha07
和1.2.0-alpha10
中所宣布的那样,我们现在更改了DefaultTextStyle
,以关闭字体内边距,使其在整个 Android 平台上保持一致。这将解决一些使用大号字体的文本剪裁问题,并且可能还会影响屏幕布局,因此需要更新屏幕截图测试。例如,我们在这里看到了文本剪裁 (Ic6a86)

- 关闭字体内边距后,此问题将不再存在:

- 我们已将
wear.compose.foundation
更新为wear.compose.material
的 API 依赖项 (I72004、b/285404743) - 我们修复了
SwipeToDismissBox
中的 bug。现在,背景和内容键会传递给 remember 块,以便在内容或背景发生变化时创建新的修饰符。(Ib876c、b/280392104) - 我们更新了
TimeText
,以便在选择 12 小时制或 24 小时制时间格式时使用语言区域。(If4a3d) - 我们修复了
SwipeToDismissBox
contentScrimColor
默认参数中的不一致问题。(I2d70f) - 我们改进了
SwipeToReveal
中的动作处理。(I28fb7)
已知问题
- 支持用户配置的字体大小是一项无障碍功能要求。我们知道,如果使用大号字体显示多行条状标签,可能会导致文字被剪裁,因此我们将在 1.3 Alpha 版的早期版本中更新条状标签,以便在这些情况下进行高度调整。
版本 1.2
版本 1.2.1
2023 年 10 月 18 日
发布了 androidx.wear.compose:compose-*:1.2.1
。版本 1.2.1 中包含这些提交内容。
bug 修复
- 修复了
PositionIndicator
错误消失的 bug。(7a167f)
版本 1.2.0
2023 年 8 月 9 日
发布了 androidx.wear.compose:compose-*:1.2.0
。版本 1.2.0 中包含这些提交内容。
自 1.1.0 以来的重要变更
- Compose for Wear OS 1.2.0 的稳定版本(了解详情)
- 如需查看 Wear Compose 1.2 中的主要变更列表,请参阅 Compose for Wear OS 1.2 Beta01 的版本说明
版本 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 基础库和 Material 库的基准配置文件(I4725d)
- 我们修复了
SwipeToDismissBox
contentScrimColor
参数的默认值不一致的问题 (I2d70f) - 我们修复了用于
IncludeFontPadding
设置的DefaultTextStyle
默认值 (I737ed)
版本 1.2.0-beta01
2023 年 5 月 24 日
发布了 androidx.wear.compose:compose-*:1.2.0-beta01
。版本 1.2.0-beta01 中包含这些提交内容。
Compose for Wear OS 1.2 包含哪些内容
Compose for Wear OS 的 1.2-beta01 版本表明,此版本是一个功能完备且 API 已锁定的库(标记为实验性的除外)。Wear Compose 1.2 包含以下新功能:
expandableItem
和expandableItems
是两个新的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 设备上预览可组合项。- 我们向 Wear Compose 添加了一个
DefaultTextStyle
,该DefaultTextStyle
会将PlatformTextStyle.includeFontPadding
属性默认设置为 true(这是当前设置)。这样,我们就可以在 1.3 Alpha 版的早期版本中同步默认关闭字体内边距,具体请参阅 1.2.0-alpha10。
新功能
- 我们添加了对以下实验性功能的支持:在开启 reduce_motion 设置时停用缩放和淡出动画。(I58024)
bug 修复
- 完善了
CurvedSize.kt
中的angularWidthDp
文档 (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 变更
- 我们在
SwipeToReveal
中的操作可组合项中添加了RevealScope
,以便访问显示其他操作的偏移量。(I3fd56)
bug 修复
- 修复了
ScalingLazyColumn
在 Wear API 33 上在快速滑动后卡住的问题 (Ic4599) - 我们对
PositionIndicator
进行了一些性能改进,以减少卡顿。(I35e92) - 修复了条状标签和
CompactChip
中的一个 bug,即语义角色不再设置为Role.Button
。(I93f91、b/277326264)
已知问题
我们在 Android Studio 中发现了一个 bug,该 bug 会导致使用 @WearPreviewDevices 和 @WearPreviewFontScales 进行注解时渲染预览失败。我们计划很快发布修复程序。请注意,其他 Wear 预览注解在 Android Studio Giraffe 2022.3.1 及更高版本中会按预期运行。
在 1.2.0-alpha07 版本中,我们将 DefaultTextStyle 添加到了 Wear Compose,并将现有的 PlatformTextStyle.includeFontPadding 值保持为 true。如需了解背景信息,请参阅修复 Compose 中的字体内边距。我们将更改 DefaultTextStyle,以在 1.3 Alpha 版的早期版本中关闭字体内边距,以便在整个 Android 平台上保持一致。这将解决使用大号字体时文本被剪裁的一些情况,并且可能还会影响屏幕布局,因此需要更新屏幕截图测试。例如,使用大号字体时,我们会看到文本被截断:

- 关闭字体内边距后,此问题将不再存在:

现在,您可以通过替换主题中的排版来采用新设置 - 请参阅示例代码。
版本 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 中添加)对
MaterialTheme
没有任何有意义的引用,因此我们已将其从 Material 移至 Foundation。(Ib0525)
bug 修复
- 我们通过确保在没有选择器获得焦点时
PickerGroup
正确处理焦点,修复了使用PickerGroup
的界面中发生的崩溃问题。此外,我们还在选择器演示中添加了对 RSB 滚动的支持。(If8c19) - 我们改进了对话框转场效果,现在,片头转场效果更加流畅,与片尾转场效果相匹配。(Ib5af9)
- 我们向 Wear Compose 添加了一个
DefaultTextStyle
,该DefaultTextStyle
会将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)或更高版本。请注意,如果这些注释不符合您的用途,您仍然可以使用预览功能,并支持通过参数进行进一步自定义。(I397ff) - 我们已将
HierarchicalFocusCoordinator
标记为实验性,但鉴于其广泛适用性,我们将其视为可移至核心 Compose 库的候选项。(I3a768)
bug 修复
- 修复了
HierarchicalFocusCoordinator
上的一个 bug,现在,当为focusEnabled
参数传入的 lambda 发生更改时,我们会正确使用新 lambda。(Icb353) - 在
Button
、CompactButton
、Chip
、CompactChip
和ToggleButton
中,如果使用主色作为背景,我们已将默认的停用内容颜色更新为“背景”。这有助于提高对比度,从而提升无障碍功能。(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) - 我们向 Picker API 添加了
animateScrollToOption
,以便支持对特定 Picker 选项执行程序化动画处理 (I6fe67)
bug 修复
- 我们更新了
HorizontalPageIndicator
,以支持从右到左的布局。(Ia4359) - 在
HorizontalPageIndicator
中添加了针对从右到左布局的屏幕截图测试 (I6fbb8) - 向使用
TestNavHostController
的SwipeDismissableNavHostTest
添加了进一步的测试 (I61d54)
版本 1.2.0-alpha04
2023 年 2 月 8 日
发布了 androidx.wear.compose:compose-*:1.2.0-alpha04
。版本 1.2.0-alpha04 中包含这些提交内容。
新功能
PickerGroup
,用于使用焦点 API 同时处理多个选择器。它可在不同选择器之间处理焦点,支持基于参数将选择器自动居中,还允许开发者在处理来自组的事件时在不同选择器之间更改焦点。在 TalkBack 模式下,PickerGroup
会将焦点移到组中选定的选择器,以处理 TalkBack 焦点。(I60840)
API 变更
- 我们为步进控件增加了一个包含额外
enableRangeSemantics
参数的重载,以方便停用默认范围语义 (Ia61d4)
bug 修复
- 允许将
ScalingLazyColumn
嵌套在水平滚动页面中(Iec3f8、b/266555016) - 改进了步进控件 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
ScalingLazyColumn
为目标的PositionIndicator
API 已被废弃 - 请更新为Foundation.Lazy ScalingLazyColumn
。此外,还向ScalingLazyListLayoutInfo
添加了anchorType
字段。(I29d95) ScalingLazyColumn
已在 Wear Compose Material 软件包中标记为已废弃 (I16d34)- 我们更新了
ScrollAway
修饰符以便使用 Wear ComposeFoundation.Lazy
中的ScalingLazyListState
,并废弃了从 Wear Compose Material 中获取ScalingLazyListState
的重载。(Ifc42c) - 我们更新了 Dialog API 以便使用
Foundation.Lazy
中的ScalingLazyListState
,并废弃了那些使用 MaterialScalingLazyListState
的重载 (Ic8960) - 我们更新了 Picker API 以便使用
Foundation.Lazy
中的ScalingParams
,并废弃了那些使用 MaterialScalingParams
的重载。(Idc3d8)
bug 修复
- 我们通过确保仅在值实际更改时推送更新,修复了一个在
ScalingLazyListState.centerItemIndex
中导致不必要重组的 bug (Ia9f38) - 我们提升了
SwipeToDismissBox
的性能 (I3933b) - 在 Wear Compose Foundation 中添加了针对
ScalingLazyColumn
的基准测试 (Ie00f9) - 我们更新了 Material 中的某些内部
ScalingLazyColumn
类方法,以便使用Foundation.Lazy
中的等效方法 (I38aab) - 我们修复了选择器测试中的一些问题,并添加了更多用于检查带有偏移的滚动操作的测试 (I6ac34)
- 我们已将
ScalingLazyColumn
集成演示迁移到Foundation.Lazy
而非 MaterialScalingLazyColumn
(Ic6caa) - 我们在
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 界面测试将在执行进入空闲状态的帧时(例如通过
waitForIdle
)运行每一帧的布局传递。这可能会影响对各个布局动画帧进行的测试。(I8ea08、b/222093277) - 参数
minLines
已添加到 Wear Text 中,以便与BasicText
保持一致的行为 (I24874) CompactChipTapTargetPadding
已公开,因此会显示在文档中(If1e70、b/234119038)
bug 修复
- 为
wear.compose
软件包停用多平台 build (Iad3d7) - 修复了
scrollToOption
的 kdocs (I6f9a0) PlaceholderState.rememberPlaceholderState()
更新为使用rememberUpdatedState
,以便能在onContentReady
lambda 时更新状态。(I02635、b/260343754)- 我们利用向
Modifier.graphicsLayer
添加的新合成策略,修复了Picker
组件中出现的文本抖动问题。(I99302) - 我们修复了在
DatePicker
演示中导致闪烁的 bug (I660bd) - 我们针对 12 小时制时间和日期选择器演示改进了无障碍功能 (I05e12)
- 我们更新了时间和日期选择器演示,以使选择器在未被选择时不受 RSB 更改的影响 (I4aecb)
版本 1.2.0-alpha01
2022 年 12 月 7 日
发布了 androidx.wear.compose:compose-*:1.2.0-alpha01
。版本 1.2.0-alpha01 中包含这些提交内容。
新功能
- 我们更新了实验性占位符功能,以便在内容准备就绪时立即应用“擦除”效果,而不是等待下一个动画循环开始。此外,我们还对闪烁和擦除动画进行了一些更新。(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,以符合最终的用户体验规范。(Icf84d) - 为了减少第一项添加到空
ScalingLazyColumn
时显示的滚动位置效果,我们添加了内容为空时的估计autoCentering topPadding
。此更改通过假设初始项的高度为 0.dp 来计算所需的上内边距。对于ScalingLazyListAnchorType.ItemStart
,这将计算正确的上内边距;对于ScalingLazyListAnchorType.ItemCenter
,此项计算将不正确,因为需要通过项的高度来正确调整内容大小,从而导致根据项的实际高度产生较小的滚动位置效果。(I239a4) - 我们更新了应用于
SwipeToDismiss
动画的背景纱罩,以匹配 Wear 平台。(I9003e) - 我们修复了对大小为 0 的列表项的
LazyListState
和ScalingLazyListState
的PositionIndicator
处理,以避免除以零错误。(Ic28dd)
版本 1.1
版本 1.1.2
2023 年 2 月 8 日
发布了 androidx.wear.compose:compose-foundation:1.1.2
、androidx.wear.compose:compose-material:1.1.2
和 androidx.wear.compose:compose-navigation:1.1.2
。版本 1.1.2 中包含这些提交内容。
bug 修复
- 我们通过确保仅在值实际更改时推送更新,修复了一个在
ScalingLazyListState.centerItemIndex
中导致不必要重组的 bug (Ia9f38)
版本 1.1.1
2023 年 1 月 11 日
发布了 androidx.wear.compose:compose-foundation:1.1.1
、androidx.wear.compose:compose-material:1.1.1
和 androidx.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.0
、androidx.wear.compose:compose-material:1.1.0
和 androidx.wear.compose:compose-navigation:1.1.0
。版本 1.1.0 中包含这些提交内容。
自 1.0.0 以来的重要变更
- Compose for Wear OS 1.1.0 的稳定版本(了解详情)。
- 如需查看 Wear Compose 1.1 中的主要变更列表,请参阅 Compose for Wear OS 1.1 Beta01 的版本说明。
新功能
- 我们更新了实验性占位符功能,以便在内容准备就绪时立即应用“擦除”效果,而不是等待下一个动画循环开始。此外,我们还对闪烁和擦除动画进行了一些更新。(I5a7f4)
bug 修复
- 已将
OutlinedButton/OutlinedCompactButton
的默认边框宽度从 2.dp 更改为 1.dp,以符合最终的用户体验规范。(Icf84d) - 为了减少第一项添加到空
ScalingLazyColumn
时显示的滚动位置效果,我们添加了内容为空时的估计autoCentering topPadding
。此更改通过假设初始项的高度为 0.dp 来计算所需的上内边距。对于ScalingLazyListAnchorType.ItemStart
,这将计算正确的上内边距;对于ScalingLazyListAnchorType.ItemCenter
,此项计算将不正确,因为需要通过项的高度来正确调整内容大小,从而导致根据项的实际高度产生较小的滚动位置效果。(I239a4) - 我们更新了应用于
SwipeToDismiss
动画的背景纱罩,以匹配 Wear 平台。(I9003e) - 我们修复了对大小为 0 的列表项的
LazyListState
和ScalingLazyListState
的PositionIndicator
处理,以避免除以零错误。(Ic28dd)
版本 1.1.0-rc01
2022 年 11 月 9 日
发布了 androidx.wear.compose:compose-foundation:1.1.0-rc01
、androidx.wear.compose:compose-material:1.1.0-rc01
和 androidx.wear.compose:compose-navigation:1.1.0-rc01
。版本 1.1.0-rc01 中包含这些提交内容。
bug 修复
- 为
Placeholders
、ScrollAway
、RadioButton
、Switch
、Checkbox
、OutlinedButton
、OutlinedCompactButton
、OutlinedChip
以及OutlinedCompactChip
添加了基准配置文件规则。(I8249c) - 修复了
Modifier.scrollAway
中的一个 bug。这样一来,当指定的itemIndex
无效(例如,项索引超出范围)时,系统现在仍会显示TimeText
。(I2137a) - 更新了
SwipeToDismissBox
动画,以匹配平台实现。现在,播放完初始挤压动画后,一旦触发关闭,屏幕即会向右滑动。(I41d34) - 出于优化的目的,我们更新了
Modifier.scrollAway
,仅读取测量块内的scrollState
,以避免在每次重新测量后重组修饰符。(I4c6f1) - 为占位符添加了文档和示例,以显示应用于同一可组合项的
Modifier.placeholder
和Modifier.placeholderShimmer
的正确排序。(Ie96f4、b/256583229) - 已将
OutlinedCompactChip/OutlinedChip
的默认边框宽度从 2.dp 更改为 1.dp,以符合最终的用户体验规范。(Ib3d8e) - 修复了
rememberPickerState
中的以下 bug:不保存更新后的输入内容,因此可组合项在输入内容更改后未被更新。(I49ff6、b/255323197) - 对占位符进行了以下界面更新:1) 将闪烁梯度更改为屏幕尺寸的 1.5 倍;2) 添加闪烁渐变的加/减速函数(三次贝塞尔曲线);3) 加快动画擦除速度(250 毫秒)。(Id29c1)
- 更正了占位符擦除效果中的以下界面 bug:由于系统未考虑组件在屏幕上的位置,因此条状标签和卡片的背景擦除稍微早了一点。(I2c7cb)
- 更新了占位符背景绘制,让颜色进行融合,而不是尽可能叠加颜色,从而降低不同剪裁层的 alpha 混合风险,以免底层颜色从占位符背景边缘渗出。(I2ea26)
- 更正了
ScalingLazyListState.centerItemIndex/centerItemOffset
的计算。这样一来,当两个项目位于视口中心线的两侧时,距离最近的项将被视为centerItem
。(I30709、b/254257769) - 更正了
ScalingLazyListState.layoutInfo.visibleItemsInfo
中一个在ScalingLazyColumn
初始化期间报告错误偏移量的 bug。现在,系统将返回一个空列表,直到所有列表项都可见且偏移量正确无误。检查ScalingLazyListState.layoutInfo.visibleItemsInfo.isNotEmpty()
将确认ScalingLazyColumn
初始化已完成且列表项可见。(I3a3b8)
版本 1.1.0-beta01
2022 年 10 月 24 日
发布了 androidx.wear.compose:compose-foundation:1.1.0-beta01
、androidx.wear.compose:compose-material:1.1.0-beta01
和 androidx.wear.compose:compose-navigation:1.1.0-beta01
。版本 1.1.0-beta01 中包含这些提交内容。
Compose for Wear OS 1.1 包含哪些内容
Compose for Wear OS 的 1.1.0-beta01 表明,此版本是一个功能完备且 API 已锁定的库。
- Wear Compose 1.1 版本包含以下新功能:
- Picker - 改进了 Picker 的无障碍功能,以便借助屏幕阅读器浏览多选择器屏幕,并访问内容说明
- Picker
contentDescription
参数现在仅用于所选的 Picker 选项,并采用可为 null 的字符串(在之前的提交中,需要传送从选项到内容说明的映射关系,但仅使用所选的选项)。 - 现在,Picker 项会始终居中对齐,从而修复了在将
gradientRatio
设为 0 时会导致对齐方式改变的 bug。 Chip/ToggleChip
- 我们更新了Chip/ToggleChip
的默认渐变方式,以使其与最新的用户体验规范保持一致。ChipDefaults.gradientBackgroundChipColors
已被更新为从主要值的 50%(而非 32.5%)开始。Chip/ToggleChip
- 添加了用于修改条状标签形状的重载Chip/Button/ToggleButton
- 为条状标签和按钮添加了新的带轮廓样式,并添加了新的OutlinedChip
和OutlinedButton
可组合项,可提供带薄边框的透明Chip/Button
。- 卡片 - 更新了卡片的默认渐变效果,使其与最新的用户体验规范保持一致。
CardDefaults.cardBackgroundPainter
已更新为从主要值的 30% 开始,到onSurfaceVariant
的 20% 结束(之前为onSurfaceVariant
的 20% 到 10%)。ToggleChip.toggleChipColors
从 75% 表面的线性渐变改为主要值的 32.5% 到 0% 表面再到主要值的 50%。 Button/ToggleButton
- 添加了用于修改按钮形状的属性。- 主题 - 更新了
MaterialTheme
中的一些默认颜色以改进无障碍功能,因为原始颜色的对比度不足,导致用户很难区分条状标签/卡片/按钮的背景与主题的背景颜色。 InlineSlider/Stepper
- 添加了按钮角色,以便Talkback
可以将它们识别为按钮。- 现在,系统会调整
PositionIndicator
的位置和大小,使其仅占用所需的空间。这非常有用,例如,如果添加了语义信息,TalkBack 会在屏幕上获得PositionIndicator
的正确边界。 CurvedText/TimeText
- 添加了Modifier.scrollAway
,它会根据滚动状态使项垂直滚动进入/离开视野(并且重载可与Column
、LazyColumn
和ScalingLazyColumn
配合使用)。当用户开始向上滚动列表项时,ScrollAway
通常用于将TimeText
滚出视图。CurvedText/TimeText
- 在CurvedTextStyle
中添加了对fontFamily
、fontStyle
和fontSynthesis
的支持,可在curvedText
和basicCurvedText
上使用。CurvedText/TimeText
- 向CurvedTextStyle
上的构造函数和复制方法添加了fontWeight
ToggleControls
- 添加了具有动画效果的Checkbox
、Switch
和RadioButton
切换控件,可与ToggleChip
和SplitToggleChip
搭配使用。这些控件可用来代替ToggleChipDefaults
提供的静态图标(switchIcon
、checkboxIcon
和radioIcon
)。- 占位符 - 添加了实验性占位符支持。该支持具有三种可搭配使用的不同视觉效果。
- 第一种是用于条状标签和卡片等容器的占位符背景笔刷效果,会在等待内容加载时绘制在常规背景之上。
- 第二种是
Modifier.placeholder()
修饰符,用于在正在加载的内容的上方绘制体育场形状的占位符 widget。 - 第三种是具有渐变/闪烁效果的
Modifier.placeholderShimmer()
修饰符,绘制在其他效果的上方,以向用户表明系统正在等待数据加载。- 所有这些效果都能协调使用,井然有序地闪烁和擦除。
- 核心 Compose 依赖项从 1.2 更新为 1.3
API 变更
- 现在可以直接将字体参数(
fontFamily
、fontWeight
、fontStyle
和fontSynthesis
)指定为curvedText
的参数 (Idc422)
bug 修复
curveText
和basicCurvedText
现在可以正常使用 Talkback(具有与其相关联的适当大小和放置(但为空)的 compose-ui 节点,并使用文本作为内容描述)(I7af7c、b/210721259)- 修复了当
PickerState.repeatedItems = false
为 Picker 内部ScalingLazyColumn
添加 autoCentering 参数的显式设置时Picker
存在的 bug,以确保可以将第 0 个选项滚动到视图中心。(I8a4d7)
版本 1.1.0-alpha07
2022 年 10 月 5 日
发布了 androidx.wear.compose:compose-foundation:1.1.0-alpha07
、androidx.wear.compose:compose-material:1.1.0-alpha07
和 androidx.wear.compose:compose-navigation:1.1.0-alpha07
。版本 1.1.0-alpha07 中包含这些提交内容。
新功能
- 添加了对实验性占位符的支持。该支持具有三种可搭配使用的不同视觉效果。第一种是用于条状标签和卡片等容器的占位符背景笔刷效果,会在等待内容加载时绘制在常规背景之上。第二种是
Modifier.placeholder()
修饰符,用于在正在加载的内容的上方绘制体育场形状的占位符 widget。第三种是具有渐变/闪烁效果的Modifier.placeholderShimmer()
修饰符,绘制在其他效果的上方,以向用户表明系统正在等待数据加载。所有这些效果都能协调使用,井然有序地闪烁和擦除。(I3c339)
API 变更
- 在
CurvedTextStyle
中添加了对fontWeight
、fontFamily
、fontStyle
和fontSynthesis
的支持,可在curvedText
和basicCurvedText
上使用。这些参数可用于指定要在曲线文本中使用的字体和样式。(Iaa1a8)、(I72759) - 已将
Modifier.scrollAway
的 offset 参数更新为 Dp,以便与Modifier.offset
保持一致(之前是以像素为单位)。此外,已重构为LayoutModifier
,以提升效率。(I9f94b) - 在新的切换控件 API 中,我们已将
RadioButton’s circleColor
重命名为ringColor
。(I28fa9) - 添加了具有动画效果的
Checkbox
、Switch
和RadioButton
切换控件,以便与ToggleChip
和SplitToggleChip
搭配使用。这些控件可用来代替ToggleChipDefaults
提供的静态图标(switchIcon
、checkboxIcon
和radioIcon
)。(I8a8c4)
版本 1.1.0-alpha06
2022 年 9 月 21 日
发布了 androidx.wear.compose:compose-foundation:1.1.0-alpha06
、androidx.wear.compose:compose-material:1.1.0-alpha06
和 androidx.wear.compose:compose-navigation:1.1.0-alpha06
。版本 1.1.0-alpha06 中包含这些提交内容。
新功能
- 添加了
Modifier.scrollAway
,它会根据滚动状态使项垂直滚动进入/离开视野(并且重载可与Column
、LazyColumn
和ScalingLazyColumn
配合使用)。当用户开始向上滚动列表项时,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-alpha05
、androidx.wear.compose:compose-material:1.1.0-alpha05
和 androidx.wear.compose:compose-navigation:1.1.0-alpha05
。版本 1.1.0-alpha05 中包含这些提交内容。
bug 修复
- 为
InlineSlider
和Stepper
添加了按钮角色,以便 Talkback 能够将它们识别为按钮。(Icb46c、b/244260275) - 我们更正了 Scaffold 中位置和页面指示器的 Z 轴顺序。现在,这些提示器位于晕影之上,因此将不会被晕影遮挡(若存在晕影)。(Ib988f、b/244207528)
版本 1.1.0-alpha04
2022 年 8 月 24 日
发布了 androidx.wear.compose:compose-foundation:1.1.0-alpha04
、androidx.wear.compose:compose-material:1.1.0-alpha04
和 androidx.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
中的逻辑 bug,该 bug 可能会导致具有少量(通常是 2 个)列表项的列表无法完成初始化,进而导致列表透明。 (504347)
版本 1.1.0-alpha03
2022 年 8 月 10 日
发布了 androidx.wear.compose:compose-foundation:1.1.0-alpha03
、androidx.wear.compose:compose-material:1.1.0-alpha03
和 androidx.wear.compose:compose-navigation:1.1.0-alpha03
。版本 1.1.0-alpha03 中包含这些提交内容。
新功能
- 我们为
Chips
和Buttons
添加了新的带轮廓样式,并添加了新的OutlinedChip
和OutlinedButton
可组合项,可提供带细边框的透明Chip/Button
。(Id5972)
API 变更
- 添加了用于修改按钮形状的重载 (Icccde)
bug 修复
- 我们更正了
ToggleChip
的切换控件区域的大小,因为它与用户体验规范不符。用户体验规范要求在标签和 24x24dp 的切换控件图标区域之间留出 4dp 的分隔符,使总宽度为 28dp。然而,相应实现错误地提供了 36x24dp 的切换控件区域。这会导致占去 8dp 的可用文本标签区域。注意:此 bug 修复会为文本标签留出额外的空间,因此可能会对溢出文本的文本布局产生(积极)影响。如果需要进行包含ToggleChips
的屏幕截图测试,则可能需要进行更新。(I514c8、b/240548670)
版本 1.1.0-alpha02
2022 年 7 月 27 日
发布了 androidx.wear.compose:compose-foundation:1.1.0-alpha02
、androidx.wear.compose:compose-material:1.1.0-alpha02
和 androidx.wear.compose:compose-navigation:1.1.0-alpha02
。版本 1.1.0-alpha02 中包含这些提交内容。
新功能
- 我们已将核心 Compose 库的 Compose for Wear OS 依赖项从 1.2.0 切换为 1.3.0-alpha0X
API 变更
- 添加了用于修改条状标签形状的重载 (I02e87)
bug 修复
- 我们为显示/隐藏对话框时的晕影可见性添加了动画效果,以便与现有缩放动画保持一致。(Ida33e)
- 我们修复了滚动时某些快速滑动行为可能会出现除零计算的 bug。(I86cb6)
- 修复了
ChipDefaults.childChipColor()
中的一个 bug,以确保已停用的背景颜色是完全透明的。(I2b3c3、b/238057342)
版本 1.1.0-alpha01
2022 年 6 月 29 日
发布了 androidx.wear.compose:compose-foundation:1.1.0-alpha01
、androidx.wear.compose:compose-material:1.1.0-alpha01
和 androidx.wear.compose:compose-navigation:1.1.0-alpha01
。版本 1.1.0-alpha01 中包含这些提交内容。
API 变更
- Picker 的
contentDescription
参数现在仅用于所选的 Picker 选项,并采用可为 null 的字符串(以前是需要传送从选项到内容说明的映射关系,但仅使用所选的选项)。(Ife6a7) - 我们改进了 Picker 的无障碍功能,以便借助屏幕阅读器浏览多选择器屏幕,并访问内容说明 (I64edb)
bug 修复
- 我们更新了随 Wear Compose 库打包的基准配置文件规则 (I9c694)
- 我们更正了从右到左模式下的条状标签渐变方向。以前是左上角->右下角,现在是右上角->左下角。(Ic2e77)
- 我们更新了
Chip/ToggleChip/Card
的默认渐变方式,使其与最新的用户体验规范保持一致。ChipDefaults.gradientBackgroundChipColors
已被更新为从主要值的 50%(而非 32.5%)开始。CardDefaults.cardBackgroundPainter
已被更新为从主要值的 30% 开始,到onSurfaceVariant
的 20% 结束(以前为onSurfaceVariant
的 20% 到 10%)。ToggleChip.toggleChipColors
则从 75% 表面的线性渐变改为主要值的 32.5% 到 0% 表面再到主要值的 50%。(I43bbd) - 我们在具有渐变背景的
Chip/ToggleChips
后面添加了一种背景颜色 (MaterialTheme.color.surface
),以确保在使用浅色背景的小概率情况下这些条状标签能够正常显示。(Ibe1a4、b/235937657) - 现在,Picker 项会始终居中对齐,从而修复了在将
gradientRatio
设为 0 时会导致对齐方式改变的 bug。(I712b8)
版本 1.0
版本 1.0.2
2022 年 9 月 7 日
发布了 androidx.wear.compose:compose-foundation:1.0.2
、androidx.wear.compose:compose-material:1.0.2
和 androidx.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.1
、androidx.wear.compose:compose-material:1.0.1
和 androidx.wear.compose:compose-navigation:1.0.1
。版本 1.0.1 中包含这些提交内容。
bug 修复
- 修复了
ScalingLazyColumn
中的逻辑 bug,该 bug 可能会导致具有少量(通常是 2 个)列表项的列表无法完成初始化,进而导致列表透明。(076c61)
版本 1.0.0
2022 年 7 月 27 日
发布了 androidx.wear.compose:compose-foundation:1.0.0
、androidx.wear.compose:compose-material:1.0.0
和 androidx.wear.compose:compose-navigation:1.0.0
。版本 1.0.0 中包含这些提交内容。
1.0.0 的主要功能
- 这是 Compose for Wear OS 的第一个稳定版本(了解详情)。
- Compose for Wear OS 基于核心 Compose 库,提供额外的穿戴式设备专属组件,在适当情况下还提供针对穿戴式设备量身定制的核心 Compose 组件的备用实现。
- 如需查看 Wear Compose 中的关键组件的列表,请参阅 Compose for Wear OS Beta01 的版本说明。
bug 修复
- 我们为显示/隐藏对话框时的晕影可见性添加了动画效果,以便与现有缩放动画保持一致。(Ida33e)
- 我们修复了滚动时某些快速滑动行为可能会出现除零计算的 bug。(I86cb6)
- 修复了
ChipDefaults.childChipColor()
中的一个 bug,以确保已停用的背景颜色是完全透明的。(I2b3c3、b/238057342)
版本 1.0.0-rc02
2022 年 6 月 22 日
发布了 androidx.wear.compose:compose-foundation:1.0.0-rc02
、androidx.wear.compose:compose-material:1.0.0-rc02
和 androidx.wear.compose:compose-navigation:1.0.0-rc02
。版本 1.0.0-rc02 中包含这些提交内容。
bug 修复
- 我们更正了从右到左 (RTL) 模式下的卡片渐变方向。以前是左上角->右下角,现在是右下角->左下角。(Ic2e77)
- 我们更新了
Chip/ToggleChip/Card
的默认渐变方式,以使其与最新的用户体验规范保持一致。ChipDefaults.gradientBackgroundChipColors
已被更新为从主要值的 50%(而非 32.5%)开始。CardDefaults.cardBackgroundPainter
已被更新为从主要值的 30% 开始,到onSurfaceVariant
的 20% 结束(以前为 onSurfaceVariant 的 20% 到 10%)。ToggleChip.toggleChipColors
则从 75% 表面的线性渐变改为主要值的 32.5% 到 0% 表面再到主要值的 50%。(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-rc01
、androidx.wear.compose:compose-material:1.0.0-rc01
和 androidx.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
中的一个 bug,即当第 0 个列表项足够大(包括内边距)时,可能导致列表项在滚动前无法正确绘制(Ic6159、b/234328517) - 我们对当内容到达屏幕边缘时
ScalingLazyColumn
开始缓和做出了小小的调整,以符合用户体验规范的更新。旧值CubicBezierEasing(0.25f, 0.00f, 0.75f, 1.00f)
-> 新值CubicBezierEasing(0.3f, 0f, 0.7f, 1f)
。如需保留旧行为,您可以替换ScalingLazyColumn
的scalingParams
(Ie375c) - 我们向
CompactChip
添加了内边距,以确保其点按目标的高度尺寸至少为 48.dp,以符合 Material 无障碍功能指南的要求。这可能会影响您使用CompactChips
的所有布局,因为它们将占用额外的空间。(I3d57c)
版本 1.0.0-beta03
2022 年 6 月 1 日
发布了 androidx.wear.compose:compose-foundation:1.0.0-beta03
、androidx.wear.compose:compose-material:1.0.0-beta03
和 androidx.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,这将影响您的布局,因为 CompactChip 现在会在上方和下方具有额外的内边距。请调整和测试您的布局,或查看 bug 注释,了解使用现有行为的临时解决方法。(b/234332135)
bug 修复
- 新增了一个演示,用于针对在
TimeText
上添加或移除起始文字显示动画效果。(I16d75) - 针对
HorizontalPageIndicator.PagesState
添加了测试 (I64ed0) - 更新了
TimeText
,以更符合用户体验规范 (Ib7ea1)
版本 1.0.0-beta02
2022 年 5 月 18 日
发布了 androidx.wear.compose:compose-foundation:1.0.0-beta02
、androidx.wear.compose:compose-material:1.0.0-beta02
和 androidx.wear.compose:compose-navigation:1.0.0-beta02
。版本 1.0.0-beta02 中包含这些提交内容。
新功能
- 现在,选择器会始终响应滚动事件,即使在只读模式下也是如此。这样一来,用户无需先点按选中选择器,就能进行滚动。在只读模式下,除当前所选选项以外的选项会被
gradientColor
中的 shim 遮挡。(I72925) - 我们更改了
Chip/ToggleChip/CompactChip/SplitToggleChip
的用户体验行为,让其无法默认执行fillMaxWidth
,而是会扩展以适应内容。如要保持之前的行为,只需添加modifier = Modifier.fillMaxWidth()
即可(I60a2c、b/232206371)
bug 修复
- 带有
TextStyle
的CurvedTextStyle
构造函数现在也遵循fontWeight
(这可能会添加到该 API 日后修订版的构造函数和复制方法中)(Ieebb9) - 改进了边缘滑动。使用
Modifier.edgeSwipeToDismiss
并从边缘区域触发向左滑动时,如果滑动方向改为向右,便不会再触发“滑动关闭”操作。以前,先向左滑动再向右滑动可能会触发滑动关闭。(I916ea) HorizontalPageIndicator
现在可在屏幕上最多显示 6 页内容。如果总页数多于 6 页,左侧或右侧会显示一个占一半尺寸的指示器,页面之间会平滑过渡。(I2ac29)- 改进了
ScalingLazyColumn
和Picker
上的默认贴靠行为 (I49539) - 改进了边缘滑动。使用
Modifier.edgeSwipeToDismiss
时,只有首次轻触屏幕边缘并向右滑动时,才会触发滑动关闭。之前,如果滚动到了开头,从屏幕任意区域滑动都可能会触发滚动关闭。(I8ca2a)
版本 1.0.0-beta01
2022 年 5 月 11 日
发布了 androidx.wear.compose:compose-foundation:1.0.0-beta01
、androidx.wear.compose:compose-material:1.0.0-beta01
和 androidx.wear.compose:compose-navigation:1.0.0-beta01
。版本 1.0.0-beta01 中包含这些提交内容。
Compose for Wear OS 1.0 包含哪些内容
Compose for Wear OS 的 1.0.0-beta01
版本标志着一个重要的里程碑,这是一个功能完备且 API 已锁定的库。
1.0 版本中的 Wear Compose Material 组件包括:
- Material 主题 - 用于替代 Compose for Mobile
MaterialTheme
,为在穿戴式设备上构建组件提供颜色、形状和字体排版,以便于开箱即用地实现 Wear Material Design 用户体验准则。 Button
、CompactButton
和ToggleButton
- 按钮提供一个槽位来接受图标、图片或短文本(最多 3 个字符)。形状为圆形,采用默认、大或小按钮的建议尺寸。CompactButton
提供一个槽位来接收任何内容(图标、图片或文本),其形状为圆形,背景尺寸为极小。CompactButton
的背景周围提供可选的透明内边距,可增加可点击区域。ToggleButton
按钮提供单个槽位来接收任何内容(短文本、图标或图片),并且具有开启/关闭(已选中/未选中)状态,可通过颜色和不同的图标来指示是已选中状态还是未选中状态- Cards - 用于显示应用相关信息(例如通知)。针对不同用例采用灵活设计,
AppCard
和TitleCard
可提供不同的布局,并且支持以卡片内容或背景作为图片。 - Chips - 类似于按钮的体育场形组件,但具有更大的区域和多个槽位,可支持标签、辅助标签和图标。具有不同的尺寸,支持使用图片作为背景。
- ToggleChips 和 SplitToggleChips - 具有已选中/未选中状态的条状标签,并且添加了一个
ToggleControl
槽位以显示开关或单选按钮等图标,从而显示组件的选中状态。此外,SplitToggleChip
具有两个可点按区域,即一个可点击区域和一个可切换区域。 - CircularProgressIndicator - Wear Material 进度指示器,包含两种变体。第一种指示正在执行的任务的完成比例,并且支持在圆圈的起始和结束角度之间保留间隙。第二种指示未指定等待时间的不确定进度。
- curvedText - 构成 DSL 的一部分,用于描述
CurvedLayouts
,并随带curvedRow
和curvedColumn
,以便于围绕圆形设备布置组件。如需详细了解CurvedLayout
和CurvedModifier
(这与非曲线环境中的修饰符类似,并且允许配置布局、内边距、渐变等要素的各个方面),请参阅下文中的 Wear Component Foundation。 - Dialog、Alert 和 Confirmation - Dialog 将显示一个全屏对话框,与其他内容重叠,并且支持滑动关闭。该组件包含一个槽位,预计将作为 Wear Material 意见征求对话框内容(例如提醒或确认)。Alert 是包含图标、标题和消息槽位的意见征求对话框内容。该组件具有并排显示的两个否定按钮和肯定按钮的重载,或者通过一个槽位接受一个或多个垂直堆叠的条状标签。Confirmation 将按指定的持续时间显示意见征求对话框内容。该组件通过一个槽位接收图标或图片(可能是动态图)。
- CircularProgressIndicator - 以适合穿戴式设备尺寸的方式显示水平页面指示器。专用于全屏显示圆形设备上的曲线指示器。可与 Accompanist 页面查看器结合使用。
- Icon - 从 Wear Material 主题中获取颜色和 Alpha 值的 Wear 图标实现。若要了解可点击的图标,请参阅“按钮”或“条状标签”。
- Picker - 显示可供选择的可滚动项目列表。默认情况下,其中的选项将在两个方向上“无限”重复。可以在只读模式下显示,以隐藏未选择的选项。
- PositionIndicator - 以适合穿戴式设备尺寸的方式显示滚动位置或其他位置指示。专用于全屏显示圆形设备上的曲线指示器。
- Scaffold - 实现基本的 Wear Material Design 视觉布局结构。此组件提供了一个 API,可将多个用于构建屏幕的 Wear Material 组件(例如
TimeText
、PositionIndicator
和Vignette
)整合在一起,确保为其创建正确的布局策略,并收集必要的数据,以确保这些组件协同作业。 - ScalingLazyColumn - 这是一种滚动缩放/鱼眼列表组件,也是 Wear Material Design 语言的一个关键要素。为内容项提供缩放和透明度效果。
ScalingLazyColumn
旨在处理可能的大量内容项,只有在需要时才应当具体化和组合这些内容项。 - Slider - 可让用户从一系列值中进行选择。以横条显示选择范围,可以选择将显示的横条划分为若干区间。
- Stepper - 一种全屏组件,用户可以通过屏幕顶部和底部的增加/减小按钮来从一系列值中进行选择,中间的槽位可用于插入文字或条状标签。
- SwipeToDismissBox - 处理滑动关闭手势。它通过一个槽位来接收背景(仅在滑动手势时显示)和前景内容。可以选择通过
SwipeDismissableNavHost
与 androidx 导航库结合使用(请参阅下文中的 Wear Compose Navigation 库)。 - Text - Compose Material Text 组件的 Wear 实现,该组件将从 Wear Material 主题获取颜色和 Alpha 值
- TimeText - 在屏幕顶部显示时间和应用状态的组件。可在圆形屏幕上使用曲线状文本,根据屏幕形状进行调整。
Vignette - 在 Scaffold 中使用的一种屏幕处理方式,当使用可滚动内容时可对屏幕的顶部和底部进行模糊处理。
Wear Compose Foundation 中还包含以下组件:
CurvedLayout - Wear Foundation
CurvedLayout
是一种布局可组合项,可将其子项放置在弧线中,并根据需要进行旋转。这类似于曲卷以形成环形区段的行布局。请注意,CurvedLayout
的内容不是可组合的 lambda,而是领域特定语言 (DSL)。CurvedLayout 的 DSL 中的所有元素都支持可选的修饰符参数,这些参数将通过CurvedModifier
创建。basicCurvedText - 这是
CurvedLayout
DSL 中的一个元素。basicCurvedText
可让开发者沿着圆圈的弧线(通常位于圆形屏幕的边缘)轻松写入曲线文字。为了确保获得最佳体验,开发者只能在CurvedLayout
中创建basicCurvedText
,这样才能指定定位以及使用CurvedModifiers
。请注意,在大多数情况下,应当首选使用 CurdText,因为它使用 Material 主题。curdComposable - 封装常规可组合项内容,以便与
CurvedLayout
结合使用。如果curvedComposable
中包含多个元素,那么这些元素会相互叠加(类似于 Box)。如需沿着曲线放置多个可组合项,请使用curvedComposable
封装每个可组合项。curvedRow 和 curvedColumn - 与行和列相类似,
curvedRow
和curvedColumn
可嵌套在CurvedLayout
中,以便于根据需要布置元素。对于curvedRow
,可以指定角度布局方向和径向对齐。对于curvedColumn
,可以指定角对齐和径向对齐。CurvedModifier - 所有曲线组件都接受一个可以使用
CurvedModifier
创建的修饰符参数:支持背景、尺寸、粗细和内边距。Wear Compose Navigation 中还包含以下组件:
SwipeDismissableNavHost - 在 Compose 层次结构中为独立导航提供位置,通过滑动手势提供向后导航。内容显示在
SwipeToDismissBox
中,显示当前导航级别。在滑动关闭手势期间,系统会在后台显示之前的导航级别(如果有)。请参阅之前有关各种 Alpha 版本的版本说明,详细了解所提供的内容。
API 变更
- 添加了
CurvedModifier.padding*
函数。它们用于指定要在曲线组件周围添加的额外空间。(I4dbb4) - 移除了
CompositionLocal
内部类 (I42490) - 我们添加了
Button
、CompactButton
和ToggleButton
图标大小的常量值作为指导 (I57cab) - 为
AppCard
和TitleCard
添加了 enabled 参数。现在,它们具有与androidx.compose.material
卡片相类似的 API。当该参数设置为 false 时,卡片将不可点击。(Idc48d、b/228869805)
bug 修复
- 现在,在达到下限/上限时,步进控件会停用减小和增加按钮,并将 ContentAlpha.disabled 应用于 iconColor (I4be9f)
- 我们在使用渐变绘制的选择器内容周围增加了 1dp 的内边距,以防止滑动时文本出现抖动。(I0b7b9)
- 针对
PositionIndicator
添加了屏幕截图测试 (I5e8bc) - 针对
AppCard
和TitleCard
添加了更多测试(I85391、b/228869805)
版本 1.0.0-alpha21
2022 年 4 月 20 日
发布了 androidx.wear.compose:compose-foundation:1.0.0-alpha21
、androidx.wear.compose:compose-material:1.0.0-alpha21
和 androidx.wear.compose:compose-navigation:1.0.0-alpha21
。版本 1.0.0-alpha21 中包含这些提交内容。
新功能
- 添加了新的曲线修饰符来指定曲线元素的背景:
CurvedModifier.background
、.radialGradientBackground
和.angularGradientBackground
(I8f392) - 允许指定曲线文本溢出模式 (clip/ellipsis/visible)。(I8e7aa)
- 添加了
CurvedModifier.weight
修饰符,类似于 Compose 中的修饰符,可用于 curvedRow 和 CurvedLayout 的子项(对于宽度)及 curvedColumn 的子项(对于高度)。(I8abbd) - 添加了
CurvedModifier.size
、.angularSize
和.radialSize
修饰符,用于指定曲线元素的尺寸。(I623c7)
API 变更
- 对参数进行了重新排序,以确保在 Wear Compose API 中,背景一直在颜色之前 (I43208)
- 移除了顺时针和
insideOut
参数,并替换为新类中更具表现力的常量。曲线布局方向现在可以感知LayoutDirection
,未指定时则沿用 (If0e6a) - 我们已将
autoCenter: Boolean
替换为autoCenter: AutoCentringParams
,以修复ScalingLazyColumn
的 API 问题。(Ia9c90) - 我们将整个 API(Chip/ToggleChip/Dialog/Slider/Stepper/…)中的
iconTintColor
和toggleControlTintColor
重命名为iconColor
和toggleControlColor
,因为相应颜色已应用于 icon/toggleControl 槽位。(Ied238) - 将
PageIndicatorStyle
枚举重写入值类 (I2dc72) - 我们在可组合项中的某些槽位中添加了
RowScope/ColumnScope/BoxScope
,以向开发者说明布局假设。这样,开发者便可对某些槽位内容使用额外的修饰符,避免需要提供额外的布局元素。此外,我们还对 AppCard/TitleCard 颜色进行了一些微小更新,以使timeColor
和appColor
默认采用contentColor
。如果需要,这些属性仍然可以被单独替换。(I26b59) - 将
SwipeToDismissBoxState.Companion
对象设为不公开 (I39e84) - 修复了
InlineSlider
和Stepper
的参数顺序问题。这是遵循 API 指南的简单更改 (I11fec) - 我们移除了
SwipeToDismissBoxState
的 Saver 对象,因为它未被使用。(Ifb54e) - 我们更新了
CompactChip
,使其与最新的用户体验规范相符。内边距已缩小为水平 = 12.dp,垂直 = 0.dp。标签的字体已从按钮更改为 caption1。如果同时具有图标和标签,建议的图标尺寸为 20x20;对于仅包含图标的紧凑条状标签,建议的尺寸为 24x24。对于仅包含图标的用例,我们还确保了图标居中对齐。(Iea2be) - 我们在
ScalingLazyListLayoutInfo
中添加了一些新字段,让开发者能够知道所应用的contentPadding
和autoCenteringPadding
的数量。这在计算快速滑动/滚动数据时对开发者来说很有用 (I7577b) - 我们为 Dialog 实现了输入/输出转换。添加了
showDialog
参数,Dialog 现在可控制其自身的 可见性(这使 Dialog 在显示/隐藏时能够运行开头和结尾动画)。请注意,当用户通过滑动关闭对话框时,系统不会运行片尾动画。我们还在最近添加的SwipeToDismissBox
过载中添加了状态的默认值。(I682a0) - 为了更好地支持 i18n 和 a11y,我们更改了
ToggleChip
和SplitToggleChip
,使其不再有toggleControl
槽位的默认值。我们还更改了ToggleChipDefaults
,现在以下方法会返回 ImageVector,而不是 Icon(请注意,由于这些方法不再返回 @Composables,因此已更改为以小写开头)、SwitchIcon()->switchIcon()
、CheckboxIcon->checkboxIcon()
和RadioIcon()->radioIcon()
- 这样就允许并鼓励开发者创建自己的Icon()
可组合项并具有适当的contentDescription
集合。(I5bb5b) - 我们向
SwipeDismissableNavHost
添加了SwipeDismissableNavHostState
参数。这支持在用作导航目的地的屏幕上使用边缘滑动动作,因为现在在需要边缘滑动的屏幕上SwipeToDismissBoxState
可以提升和用于初始化SwipeDismissableNavHostState
和Modifier.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-alpha20
、androidx.wear.compose:compose-material:1.0.0-alpha20
和 androidx.wear.compose:compose-navigation:1.0.0-alpha20
。版本 1.0.0-alpha20 中包含这些提交内容。
新功能
- 为
SwipeToDismiss
添加了edgeSwipeToDismiss
修饰符。允许swipeToDismiss
仅在视口的左侧边缘保持启用状态。系统会在屏幕中心需要处理水平分页(在二维平面滚动地图或在页面之间水平滑动)时使用该修饰符。(I3fcec、b/200699800)
API 变更
- 对
CurvedModifiers
进行了基本实现,这为引入自定义曲线内容的方法开辟了道路(尚不提供CurvedModifiers
,但以后可能会提供创建自定义修饰符的功能)(I9b8df) - 为便于理解,更新了
EdgeSwipe
修饰符文档和默认值。(I6d00d) - 向 Scaffold 中添加了
PageIndicator
槽。通过直接向 Scaffold 中添加PageIndicator
,可确保其正确显示在圆形设备上。(Ia6042) - 从
InlineSlider
和 Stepper 参数中移除了默认图标。这将有助于开发者更加关注本地化和无障碍功能要求。演示和示例中展示了默认图标的用法。(I7e6fd) - 在 TimeText 中,将 Trailing 和 Leading 参数名称替换成了 Start 和 End (Iaac32)
- 我们已添加包含
onDismissed
参数的SwipeToDismissBox
重载,以支持在滑动手势完成后触发导航事件的常见用法。(I50353、b/226565726) - 从
TimeText
用法中移除了ExperimentalWearMaterialApi
注解 (Ide520) - 我们已将
ScalingLazyList/Column
作用域和信息接口标记为密封状态(因为它们不可供外部开发者实现),这让我们日后能够向其中添加新成员,而无需对二进制文件进行破坏性更改。(I7d99f) - 我们向选择器添加了一个新的
flingBehaviour
属性,并添加了PickerDefaults.flingBehaviour()
方法,以支持配置快速滑动行为(例如添加 RSB 支持)。PickerState
现在会实现ScrollableState
接口。(Ib89c7)
bug 修复
- 针对 Wear Compose 库更新了 Android 运行时 (ART) 基准配置文件规则。ART 可以利用设备上的配置文件规则预先编译应用的特定部分,以提升应用性能。请注意,这对可调试应用没有任何影响。(Iaa8ef)
- 完善了文档 (I2c051)
版本 1.0.0-alpha19
2022 年 3 月 23 日
发布了 androidx.wear.compose:compose-foundation:1.0.0-alpha19
、androidx.wear.compose:compose-material:1.0.0-alpha19
和 androidx.wear.compose:compose-navigation:1.0.0-alpha19
。版本 1.0.0-alpha19 中包含这些提交内容。
API 变更
CurvedRow
已重命名为CurvedLayout
,并重新设计为使用 DSL 的作用域。借助此 DSL,您可以使用一系列嵌套的curvedRow
和curvedColumn
(Row 和 Column 的曲线布局等效项)指定更复杂的曲线布局。您可在这些布局元素内使用以下三种元素:curvedComposable
(用于添加任何 @Composable)、basicCurvedText
(Foundation 的曲线文本)和curvedText
(Wear Material 感知型曲线文本)。(Ib776a)- 使
PositionIndicator
的侧边可配置。现在,基本 PositionIndicator 的位置可配置为 End(可感知布局方向)、OppositeRsb(考虑屏幕旋转,将自身放置在实际 RSB 的对面)或绝对的 Left 和 Right。(I2f1f3) - 对于
SwipeToDismissBox
,我们已将SwipeDismissTarget
.Original 重命名为SwipeToDismissValue.Default
,并将SwipeDismissTarget.Dismissal
重命名为SwipeToDismissValue.Dismissed
。我们还将SwipeToDismissBoxDefaults.BackgroundKey
和SwipeToDismissBoxDefaults.ContentKey
分别移到了SwipeToDismissKeys.Background
和SwipeToDismissKeys.Content
。(I47a36) - 对于具有多个选择器,但一次只能修改一个选择器的屏幕,我们已向选择器添加了只读模式。当选择器处于只读模式时,它会显示当前选中的选项和一个标签(如果已提供)。(I879de)
- 已重构
SwipeToDismissBoxState
,以将ExperimentalWearMaterialApi
的作用域限制为Modifier.swipeable
和SwipeableState
(二者现在在内部使用)。SwipeToDismissBoxState
现在具有currentValue
、targetValue
、isAnimationRunning
和snapTo
成员,以支持常见用例。如果您还需要任何其他属性,请告知我们。此外,还修复了滑动偏移量在锚点舍入误差范围内时SwipeableState
的行为。(I58302)
bug 修复
- 简化并修复了代码,以检测
ScalingLazyColumn
的内容是否可滚动(用于确定是否显示滚动条)(I7bce0) - 修复了当存在多个状态并在这些状态间切换时位置指示器出现的 bug (I320b5)
- 我们已根据最新版用户体验指南,更新了 Compose for Wear OS 的默认主题排版/字体。需要注意的是,display1 (40.sp) 和 display2 (34.sp) 现在小于先前的值,并且行高和行间距也进行了一些其他的次要更新。(Ie3077)
- 我们向
SwipeToDismissBox
添加了阻力,以确保其仅在滑动关闭时移动,且完全不会在相反方向上移动。(Ifdfb9) - 我们已更改
CircularProgressIndicator
函数的一些默认参数值,使其符合 Wear Material Design 用户体验指南。对于 Spinner/Indeterminant 版本,更新了大小 (40->24.dp)、indicatorColor (primary->onBackground)、trackColor 透明度 (30%->10%) 和描边宽度 (4->3dp)。对于 Progress/Determinate 版本,更新了 trackColor 透明度 (30%->10%)。(I659cc) - 我们已根据最新版 Wear Material Design 用户体验规范,更新了
ScalingLazyColumn
的默认缩放参数。从视觉上看,这会导致列表项在更靠近列表中心的位置开始缩放,而在列表边缘的缩放比例却比以前小。(Ica8f3) - 对
ScalingLazyColumnDefaults.snapFlingBehavior
进行了一些调整,以改进动画的结束效果 (If3260)
版本 1.0.0-alpha18
2022 年 3 月 9 日
发布了 androidx.wear.compose:compose-foundation:1.0.0-alpha18
、androidx.wear.compose:compose-material:1.0.0-alpha18
和 androidx.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) - 我们为
ScalingLazyListItemInfo
添加了 unadjustedSize,因为浮点数精度问题会导致使用缩放尺寸和缩放比例计算原始项目尺寸变得不安全。(I54657、b/221079441) - 添加了
HorizontalPageIndicator
。它表示总页数和所选页面。它可以是线性或曲线的,具体取决于设备的形状。此外,它还支持自定义指示器形状,该形状用于决定每个指示器的视觉展示方式。(Iac898) - 我们更新了
PickerState
,以便 numberOfOptions 可以更新。这支持如DatePicker
等用例,也就是每月的天数随着所选月份而变化。PickerState 的构造函数参数已相应地更改为 initialNumberOfOptions。(Iad066) - 是滚动条且无法滚动时隐藏
PositionIndicator
。(Id0a7f) - 为了与 Scaffold 保持一致,我们的全屏 Dialog 组件现在会显示
PositionIndicator
和Vignette
。我们现在还使用ScalingLazyColumn
而不是Column
,这意味着,Dialog 内容现在位于ScalingLazyListScope
中,且通常需要用项目 { /* 内容 */ } 括起来。Dialog 相应地支持 verticalArrangement 参数。(Idea13) - 我们已将
ToggleChip
和SplitToggleChip
toggleIcon 属性的名称更改为 toggleControl,以便更好地与 Material Design 保持一致,从而帮助设计人员和开发者熟悉该 API。(If5921、b/220129803) - 我们在 Wear MaterialWear Material Theme Typology 中添加了一个新的条目 Caption3。Caption3 是一种小型字体,用在法律文本等超长篇文案中。(I74b13、b/220128356)
bug 修复
- 位置对齐后,停止贴靠动画。(Idb69d)
- 为 PositionIndicator 中的变化添加了动画效果。(I94cb9)
- 根据界面/用户体验反馈,我们更改了
ScalingLazyColumn
autoCentering,以便仅提供足够的空间来确保索引值为ScalingLazyListState.initialCenterItemIndex
或更大的项目能够完全滚动到视口中心。这样一来,开发者可以从一开始就将关于相应项目的一个或两个项目放置在中心位置,而它们不可滚动至中间位置。这意味着 autoCenteringScalingLazyColumn
将无法在initialCenterItemIndex/initialCenterItemScrollOffset
上方滚动 (I22ee2) - 我们为日期选择器添加了演示,并修复了
PickerState
中的一个 bug:在选择器显示之前,initiallySelectedOption 不会应用。(Id0d7e) - 为了减少圆形屏幕上较宽的
ScalingLazyColumn
项目的剪裁现象,我们将默认水平内容内边距从 8 dp 增加到了 10 dp。(I0d609) - 确保在滚动时显示
PositionIndicator
。(Ied9a2)
版本 1.0.0-alpha17
2022 年 2 月 23 日
发布了 androidx.wear.compose:compose-foundation:1.0.0-alpha17
、androidx.wear.compose:compose-material:1.0.0-alpha17
和 androidx.wear.compose:compose-navigation:1.0.0-alpha17
。版本 1.0.0-alpha17 中包含这些提交内容。
新功能
- 添加了可与
ScalingLazyColumn
搭配使用的贴靠支持功能。设置flingBehavior = ScalingLazyColumnDefaults.flingWithSnapBehavior(state)
即可启用贴靠支持功能。(I068d3、b/217377069) - 添加了选择器(用于选择 24 小时制或 12 小时制时间)演示。(Ie5552)
API 变更
- 修复了方形设备上
TimeText
的自定义字体和样式存在的问题 (Iea76e) ScalingLazyListLayoutInfo
现在具有与LazyListLayoutInfo
中的属性相匹配的reverseLayout
、viewportSize
和屏幕方向属性(I4f258、b/217917020)ScalingLazyColumn
现在具有与LazyList
中的属性相匹配的userScrollEnabled
属性(I164d0、b/217912513)- 现在,选择器默认在顶部和底部具有渐变效果 (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-alpha16
、androidx.wear.compose:compose-material:1.0.0-alpha16
和 androidx.wear.compose:compose-navigation:1.0.0-alpha16
。版本 1.0.0-alpha16 中包含这些提交内容。
新功能
- 添加了
CircularProgressIndicator
。进度指示器显示进程的长度或未指定的等待时间。如果使用的是全屏,则支持适用于 TimeText 或其他组件的间隔(刘海区域)。 (Iab8da)
API 变更
- 选择器现在具有一个
flingBehavior
参数,默认值会使其在滚动/滑动时与最近的选项对应。(I09000) - 适用于 InlineSlider 和 Stepper 的额外整数 API (I1b5d6)
bug 修复
- 我们已将
ScalingLazyListState
的默认 initialCenterItemIndex 从 0 更改为 1。这意味着,除非使用ScalingLazyListState.rememberScalingLazyListState(initialCenterItemIndex =
)
替换状态构建,否则在初始化时,第二个列表项 (index == 1) 将放置在视口中心,而第一个列表项 (index == 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-alpha15
、androidx.wear.compose:compose-material:1.0.0-alpha15
和 androidx.wear.compose:compose-navigation:1.0.0-alpha15
。版本 1.0.0-alpha15 中包含这些提交内容。
API 变更
- 我们向
ScalingLazyColumn
添加了一个新属性autoCentering
。如果为 true(默认值),则可确保第一项和最后一项在内的所有项均可滚动,以便这些项显示在列表视口的中心。请注意,如果使用自动居中选项,您可能需要将垂直内容内边距设置为 0 dp。如果同时提供了 autoCentering 和垂直内容内边距,它们将使得第一个列表项之前和最后一个列表项之后留出额外空间,使列表项能在较大的范围内滚动。(I2a282、b/214922490) - 我们添加了
Dialog
组件,可让任何可绘制项触发位于其他内容上方的全屏对话框。对话框显示后支持滑动关闭,并且会在用户执行该滑动手势时在后台显示其父级的内容。对话框内容的类型应为Alert
或Confirmation
(对之前的组件AlertDialog
和ConfirmationDialog
进行了重命名)。Alert
、Confirmation
和Dialog
均位于androidx.wear.compose.material.dialog
软件包中。Alert 和 Confirmation 可用作导航目的地。此外,还在必要时向 Alert 和 Confirmation 参数添加了 ColumnScope。(Ia9014) - 我们已从 WearOS Material Theme Colors 的 Compose 中移除了
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-alpha14
、androidx.wear.compose:compose-material:1.0.0-alpha14
和 androidx.wear.compose:compose-navigation:1.0.0-alpha14
。版本 1.0.0-alpha14 中包含这些提交内容。
新功能
我们在
ScalingLazyListState
中添加了多种方法,供开发者用来控制滚动到特定列表项以及设置初始列表项和偏移量的操作。在进行这项更改的过程中,我们还修改了 ScalingLazyList,使其定位到 ScalingLazyList 的视口中心而不是视口的起始位置。
在
ScalingLazyList
中新增了一个属性anchorType: ScalingLazyListAnchorType = ScalingLazyListAnchorType.ItemCenter
,用于控制中心 (ScalingLazyListAnchorType.ItemCenter
) 或Edge
(ScalingLazyListAnchorType.ItemStart
) 是否应与视口的中心线对齐。因此,
ScalingLazyListItemInfo.offset
和ScalingLazyListItemInfo.adjustedOffset
发生了变化,现在会反映相应项相对于列表项位置和列表的anchorType
的偏移量。例如,如果ScalingLazyColumn
的anchorType
为ItemCenter
,并且某个列表项的中心位于视口的中心线上,则偏移量为0
。新方法为
scrollTo
、animatedScrollTo
、centerItemIndex
和centerItemOffset
。(I61b61)我们在
SwipeDismissableNavHost
中添加了一个返回按钮处理程序,以便按返回按钮可以导航到导航层次结构中的上一级。(I5b086、b/210205624)
版本 1.0.0-alpha13
2021 年 12 月 15 日
发布了 androidx.wear.compose:compose-foundation:1.0.0-alpha13
、androidx.wear.compose:compose-material:1.0.0-alpha13
和 androidx.wear.compose:compose-navigation:1.0.0-alpha13
。版本 1.0.0-alpha13 中包含这些提交内容。
API 变更
- 我们已将
RangeIcons
设为内部 API(由InlineSlider
和Stepper
在内部引用)。(I927ec)
bug 修复
修复了以下问题:
SwipeDismissableNavHost
会在达到CREATED
Lifecycle 状态之前向 Compose 层次结构添加目的地。此问题会导致出现IllegalStateException
。修复此问题后,才能将navigation-compose
依赖项更新为2.4.0-beta02
及更高版本。(I40a2b、b/207328687)添加了一个 Drawables 枚举类,用于在 Wear Compose 库中获取可绘制资源,这样便不再需要使用反射机制。这修复了在
minifyEnabled=true
或shrinkResources=true
时库可绘制对象遭到移除的 bug。(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-alpha12
、androidx.wear.compose:compose-material:1.0.0-alpha12
和 androidx.wear.compose:compose-navigation:1.0.0-alpha12
。版本 1.0.0-alpha12 中包含这些提交内容。
新功能
我们添加了一个步进控件组件,让用户可以从一系列值中进行选择。步进控件是一种全屏控件,其顶部和底部带有增加按钮和减少按钮,中间是一个槽(预计会插入条状标签或文本)。按钮图标可根据需要自定义。(I625fe)
我们新增了两个用于显示对话框的可组合项:一个是 AlertDialog,用于等待用户响应,并显示标题、图标、消息以及以下任意一种:a) 两个用于进行简单二选一的按钮,或 b) 便于用户更加灵活选择的垂直堆叠条状标签或切换条状标签;另一个是 ConfirmationDialog,用于显示设有超时的确认消息。这个简单的对话框包含用于显示标题和(动画)图标的槽。(Ic2cf8)
API 变更
- 为对话框的建议显示时长值添加单位(毫秒)。(I09b48)
版本 1.0.0-alpha11
2021 年 11 月 17 日
发布了 androidx.wear.compose:compose-foundation:1.0.0-alpha11
、androidx.wear.compose:compose-material:1.0.0-alpha11
和 androidx.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-alpha10
、androidx.wear.compose:compose-material:1.0.0-alpha10
和 androidx.wear.compose:compose-navigation:1.0.0-alpha10
。版本 1.0.0-alpha10 中包含这些提交内容。
新功能
为 Wear Compose 添加了 InlineSlider。InlineSlider 可让用户从一系列值中进行选择。选择范围会显示为最小值到最大值的横条,用户可以从该范围中选择单个值。(If0148)
查看适用于 WearOS Codelab 的新 Compose!
API 变更
- Macrobenchmark 现在的
minSdkVersion
为23
。(If2655)
bug 修复
- 在 SideEffect 中更新了 SwipeDismissableNavHost 的转换处理(I04994、b/202863359)
- 更新了 SwipeDismissableNavHost 中的转换处理(I1cbe0、b/202863359)
版本 1.0.0-alpha09
2021 年 10 月 27 日
发布了 androidx.wear.compose:compose-foundation:1.0.0-alpha09
、androidx.wear.compose:compose-material:1.0.0-alpha09
和 androidx.wear.compose:compose-navigation:1.0.0-alpha09
。版本 1.0.0-alpha09 中包含这些提交内容。
新功能
- 我们已发布了适用于 Wear OS 的开发者预览版 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-alpha08
、androidx.wear.compose:compose-material:1.0.0-alpha08
和 androidx.wear.compose:compose-navigation:1.0.0-alpha08
。版本 1.0.0-alpha08 中包含这些提交内容。
API 变更
- 我们已将 AppCard 和 TitleCard 的
body
属性重命名为content
,并将其移至属性列表的末尾,以便能以尾随 lambda 的形式提供这些属性。此外,为了保持新槽名称的一致性,我们还将bodyColor
重命名为contentColor
。(I57e78)
bug 修复
- 添加了有关按钮、卡片、条状标签、主题、位置指示器和缩放延迟列组件在 KDocs 中的 developer.android.com 指南链接。(I22428)
- 修复了 WearOS SwipeToDismissBox 有时不处理滑动的问题。(I9387e)
- 添加了 Button、CompactButton、Chip、CompactChip、AppCard、TitleCard、ToggleButton、ToggleChip、SplitToggleChip 的示例 (Iddc15)
- 添加了针对 Card、Chip、ToggleChip、TimeText 和 ScalingLazyColumn 的微基准性能测试。(If2fe9)
版本 1.0.0-alpha07
2021 年 9 月 29 日
发布了 androidx.wear.compose:compose-foundation:1.0.0-alpha07
、androidx.wear.compose:compose-material:1.0.0-alpha07
和 androidx.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 上可能出现的闪烁问题,并确保重新测量曲线行 (Ie4e06)
- ChipDefaults.COLORBackgroundChipColors() 已根据用户体验规范变更进行了更新。在 MaterialTheme.colors.surface @ 75% alpha 的背景上,渐变现在从 MaterialTheme.colors.primary(alpha 为 32.5%)开始,以 MaterialTheme.colors.surface (alpha @ 0%) 结束。(Id1548)
- 我们更新了 ToggleChip 在选定状态下的颜色,以符合最新的 Wear Material Design 用户体验规范指南。选中后,在 MaterialTheme.color.surface @ 75% alpha 的背景上,ToggleChip 的渐变背景从左上角 MaterialTheme.color.surface @ 0% alpha 开始,到右下角 MaterialTheme.color.primary @ 32% alpha 结束。这会使 ToggleChip 的勾选与未勾选状态之间存在更细微的差别。(Idd40b)
版本 1.0.0-alpha06
2021 年 9 月 15 日
发布了 androidx.wear.compose:compose-foundation:1.0.0-alpha06
、androidx.wear.compose:compose-material:1.0.0-alpha06
和 androidx.wear.compose:compose-navigation:1.0.0-alpha06
。版本 1.0.0-alpha06 中包含这些提交内容。
新功能
- 我们为 Scaffold 添加了一个顶级应用可组合项,它提供了一种用于处理 PositionIndicator(例如 Scroll 或 Volume)位置的结构,该位置位于屏幕顶部,用于显示时间和应用状态,并且还支持使用 Vignette 对可滚动内容的屏幕顶部和底部边缘进行模糊处理。Scaffold 的主要区域是放置应用内容的位置。(I5e0bf)
- 为 Wear Compose 添加了 TimeText 实现 (I5654c)
Wear Compose Navigation 库
我们添加了 Wear Compose Navigation 库的第一个版本,它集成了 Wear Compose 和 Androidx Navigation 库。它提供了一种在应用中的 @Composable 函数(作为目的地)之间导航的简单方式。
此初始版本包含以下各项:
- 一个
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)
- 我们向 ScalingLazyColumn 添加了 reverseLayout 支持。这样可以逆转滚动和布局的方向 (I9e2fc)
- 废弃了
performGesture
和GestureScope
,它们已被performTouchInput
和TouchInjectionScope
取代。(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)
- Title 和 Body 之间的 TitleCard 间距已从 8.dp 减小到 2.dp。
- TitleCard 标题字体从正文更改为了 title3。
- 更改了卡片背景渐变效果,使背景看起来更暗。
版本 1.0.0-alpha05
2021 年 9 月 1 日
发布了 androidx.wear.compose:compose-foundation:1.0.0-alpha05
和 androidx.wear.compose:compose-material:1.0.0-alpha05
。版本 1.0.0-alpha05 中包含这些提交内容。
API 变更
- 将 ArcPaddingValues 标记为了 @Stable (I57deb)
- ScalingLazyColumnState 现在会实现 ScrollableState 接口,让开发者获得编程访问权限以滚动浏览组件。(I47dbc)
bug 修复
- 我们缩小了 Chip 和 ToggleChip 中的图标和文本之间的间距,使其与用户体验规范的更新保持一致。(I83802)
版本 1.0.0-alpha04
2021 年 8 月 18 日
发布了 androidx.wear.compose:compose-foundation:1.0.0-alpha04
和 androidx.wear.compose:compose-material:1.0.0-alpha04
。版本 1.0.0-alpha04 中包含这些提交内容。
新功能
- 添加了 SwipeToDismissBox 和可滑动修饰符,可用于支持从左到右滑动关闭手势。虽然与导航组件无关,但这应该用于退出一个屏幕并导航到另一个屏幕。为滑动关闭演示添加了集成测试。(I7bbaa)
- 我们向 ScalingLazyColumnState 类添加了 ScalingLazyColumnItemInfo 和 ScalingLazyColumnLayoutInfo 接口,让开发者能够在应用缩放后知道 ScalingLazyColumn 中项的实际位置和大小。我们还修复了与对 ScalingLazyColumn 应用内容“上”内边距后计算缩放的方式有关的 bug。(I27c07)
API 变更
- 添加了 CurvedTextStyle 类,以指定曲线文本样式选项。与 TextStyle 类似,但现在仅支持颜色、字号和背景。我们会在日后添加更多样式选项。(I96ac3)
- 我们向 ScalingLazyColumnState 类添加了 ScalingLazyColumnItemInfo 和 ScalingLazyColumnLayoutInfo 接口,让开发者能够在应用缩放后知道 ScalingLazyColumn 中项的实际位置和大小。我们还修复了与对 ScalingLazyColumn 应用内容“上”内边距后计算缩放的方式有关的 bug。(I27c07)
- 向
SwipeDismissTarget
枚举添加了@ExperimentalWearMaterialApi
,这属于SwipeToDismissBox
API 的一部分。(I48b5e)
bug 修复
- 为 SwipeToDismissBox 添加了测试材料 (I9febc)
版本 1.0.0-alpha03
2021 年 8 月 4 日
发布了 androidx.wear.compose:compose-foundation:1.0.0-alpha03
和 androidx.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 修复
- 我们更改了 AppCard 中 appName 内容的默认颜色,以响应用户体验规范更新。appName 的默认颜色现在为
MaterialTheme.colors.onSurfaceVariant
。此外,为标题位置添加了缺少的参数文档说明。(Ic4ad1)
版本 1.0.0-alpha02
2021 年 7 月 21 日
发布了 androidx.wear.compose:compose-foundation:1.0.0-alpha02
和 androidx.wear.compose:compose-material:1.0.0-alpha02
。版本 1.0.0-alpha02 中包含这些提交内容。
新功能
- 新增了一个 CurvedRow 类,用于在 arc 中安排可组合项的布局 (I29941)
- 新增了一种在应用中使用的卡片 (TitleCard),并支持将图片作为背景添加到卡片,以重点强调其内容 (I53b0f)
API 变更
- 向 CurvedRow 添加了对径向对齐的支持(类似于行中的垂直对齐)(Id9de5)
- 新增了一个 CurvedRow 类,用于在 arc 中安排可组合项的布局 (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-alpha01
和 androidx.wear.compose:compose-material:1.0.0-alpha01
。版本 1.0.0-alpha01 中包含这些提交内容。
新功能
Wear Compose 是一个基于 Compose 的 Kotlin 库,支持 Wear Material Design,是适用于 WearOS 穿戴式设备的 Material Design 的扩展。第一个 Alpha 版本包含以下对象的早期功能性实现:
- Material 主题 - 用于为通过此库使用的各个组件配置统一的颜色、字体排版和形状。
- Chip、CompactChip - 此类条状标签是体育场形状的,其变体可用于容纳图标、标签和次级标签内容。
- ToggleChip、SplitToggleChip - 一种特殊类型的条状标签,包含一个用于放置在两种状态之间进行切换的图标(例如单选按钮或复选框)的槽位。此外,SplitToggleChip 具有两个可点按区域,即一个可点击区域和一个可切换区域。
- Button、CompactButton - 圆形按钮,带有一个用于放置图标或极少文字(最多 3 个字符)的内容槽位。
- ToggleButton - 用于启用或停用某项操作的按钮,带有一个用于放置图标或极少文字(最多 3 个字符)的槽位。
- Card、AppCard - 圆角矩形,可提供多个用于放置应用图标、时间、标题和正文等内容的槽位。
后续版本将扩展 widget 集,以添加对 Wear Material Design 选择器、滑块、列表、页面指示符、对话框、滚动 RSB 指示符、消息框等对象的支持。
此外,我们还将为其他穿戴式设备专属功能(例如曲线布局和文字)以及架构提供支持,以便开发者能够轻松构建穿戴式应用/叠加层。
Wear Compose Material 的设计遵循与 Compose Material 相同的原则,不过是以穿戴式设备为目标平台。因此,在为穿戴式设备打造应用时,应使用 Wear Compose Material 库来代替 Compose Material 库。
这两个“Material”库应视为互斥,不应在同一应用中混用。如果开发者发现其依赖项中包含 Compose Material 库,则说明:a) Wear Compose Material 库中缺少组件(请告诉我们所需组件);或者 b) 目前所用组件不是我们推荐在穿戴式设备上使用的组件。