wear protolayout

  
此库允许定义一组 UI 布局和非 UI 表达式,以在远程界面上渲染/评估。
最新更新 稳定版本 发布候选版 Beta 版本 Alpha 版本
2025 年 6 月 4 日 1.3.0 - - -

声明依赖项

要添加对 wear-protolayout 的依赖项,您必须将 Google Maven 存储库添加到您的项目中。请阅读Google 的 Maven 存储库以获取更多信息。

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

Groovy

dependencies {
    // Use to implement support for Wear ProtoLayout Expressions
    implementation "androidx.wear.protolayout:protolayout-expression:1.3.0"

    // Use to implement support for Wear ProtoLayout
    implementation "androidx.wear.protolayout:protolayout:1.3.0"

    // Use to utilize components and layouts with Material design in your ProtoLayout
    implementation "androidx.wear.protolayout:protolayout-material:1.3.0"
}

Kotlin

dependencies {
    // Use to implement support for Wear ProtoLayout Expressions
    implementation("androidx.wear.protolayout:protolayout-expression:1.3.0")

    // Use to implement support for Wear ProtoLayout
    implementation("androidx.wear.protolayout:protolayout:1.3.0")

    // Use to utilize components and layouts with Material design in your ProtoLayout
    implementation("androidx.wear.protolayout:protolayout-material:1.3.0")
}

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

反馈

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

创建新问题

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

版本 1.3

版本 1.3.0

2025 年 6 月 4 日

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

自 1.2.0 版本以来的重要变更

  • Material 3 设计应用于手表,其组件和布局针对圆形显示屏进行了优化,并可从小屏幕尺寸适当地扩展到大屏幕尺寸
    • 这包括仅限 Kotlin 的 protolayout-material3 库,它为以下组件和功能提供了更多类似 Compose 的 API
    • 来自系统和表盘的动态色彩主题,采用最新的 Material3 主题,用于色彩、形状和排版
    • 用于处理所有有倾向性默认值和更轻松自定义的MaterialScope
    • iconEdgeButtontextEdgeButton
    • iconButtontextButtonbuttonimageButtonavatarButtoncompactButton
    • titleCardappCardgraphicDataCardiconDataCardtextDataCard
    • circularProgressIndicatorsegmentedCircularProgressIndicator
    • primaryLayoutbuttonGroup
    • 所有组件均可在任何 SDK 级别和 ProtoLayout 渲染器版本上运行,并在适用情况下提供合理的备用方案
  • 为基础 ProtoLayout 元素提供更多 Kotlin 友好、类似 Compose 的 API
    • 能够以链式函数(如 paddingcontentDescription(包括 clearSemantics)、backgroundclipopacity 等)添加大多数修饰符的LayoutModifier,可转换为现有的 Modifiers 对象
    • 作为更容易支持使用动态字段和约束的类型的LayoutColorsLayoutString
    • textfontStyle
    • StateBuilder 更好的映射支持,包括 DynamicDataMap 和工厂方法,例如用于更轻松创建 AppDataKey 对象的 intAppDataKey
  • 支持 Lottie 动画,包括设置动画何时开始的不同触发器选项,例如布局加载时或布局可见时
    • 改进的渐变支持
    • 作为 Brush 的一部分的线性渐变 API,可用于 BoxSpacer 等元素的 Background 修饰符中…
    • 允许在线性渐变和扫描渐变中使用的 ColorStop 中使用动态颜色值
    • 弧形对象中现有的扫描渐变现在支持动态颜色以及起始和结束角度
  • `protolayout-expression` 中的平台数据绑定,用于在布局可见性发生变化时随时接收信息,例如,这可用于在磁贴被滑动到时隐藏布局的某些部分
  • 已添加测试库 - protolayout-testing - 以支持更轻松地对任何 ProtoLayout 元素进行单元测试覆盖
  • 新增元素 DashedArcLine,具有改进的功能集,使线条可以有虚线,与现有的 ArcLine 不同
  • `ArcSpacer` 支持以 DP 尺寸而非度数设置其长度
  • 为某些字体添加了圆度 FontSetting

版本 1.3.0-rc01

2025 年 5 月 20 日

androidx.wear.protolayout:protolayout-*:1.3.0-rc01 已发布,与上一版本无任何变更。版本 1.3.0-rc01 包含这些提交

版本 1.3.0-beta02

2025 年 5 月 7 日

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

Bug 修复

  • 我们对在 API 36 及更高版本上应用的排版设计值进行了重要改进。这是因为从 API 36 开始,所有磁贴都将使用系统字体,因此此更改可提高磁贴轮播的更好一致性。(If316f)
  • 如果未设置动态值的 layoutConstraints,则 TextSpacerArcLineDashedArcLine 构建器将不会抛出异常。请注意,旧版渲染器仍要求设置 layoutConstraints,并会忽略未设置该值的任何动态值。(Ic52e8)
  • 添加标题语义修饰符,以指示布局元素是出于无障碍目的的内容部分的标题,并默认将 primaryLayout 标题槽中的文本标记为无障碍标题。(Iae1fb)
  • primaryLayout 进行最终 UX 优化,在较小屏幕上,标题槽和主槽之间的空间从 6dp 减小到 4dp。(I0e056)
  • 将默认内容描述应用于 textEdgeButton。(Ifaf8b)
  • avatarButton 内部填充的次要更新。(I0910b)

版本 1.3.0-beta01

2025 年 4 月 9 日

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

新功能

Wear ProtoLayout 的 1.3.0-beta01 版本表明该库的功能已完善,并且 API 已锁定(实验性 API 除外)。Wear ProtoLayout 1.3 包含以下新功能和 API

  • Material 3 设计应用于手表,其组件和布局针对圆形显示屏进行了优化,并可从小屏幕尺寸适当地扩展到大屏幕尺寸
    • 这包括仅限 Kotlin 的 protolayout-material3 库,它为以下组件和功能提供了更多类似 Compose 的 API
    • 来自系统和表盘的动态色彩主题,采用最新的 Material3 主题,用于色彩、形状和排版
    • 用于处理所有有倾向性默认值和更轻松自定义的MaterialScope
    • iconEdgeButtontextEdgeButton
    • iconButtontextButtonbuttonimageButtonavatarButtoncompactButton
    • titleCardappCardgraphicDataCardiconDataCardtextDataCard
    • circularProgressIndicatorsegmentedCircularProgressIndicator
    • primaryLayoutbuttonGroup
    • 所有组件均可在任何 SDK 级别和 ProtoLayout 渲染器版本上运行,并在适用情况下提供合理的备用方案
  • 为基础 ProtoLayout 元素提供更多 Kotlin 友好、类似 Compose 的 API
    • 能够以链式函数(如 paddingcontentDescription(包括 clearSemantics)、backgroundclipopacity 等)添加大多数修饰符的LayoutModifier,可转换为现有的 Modifiers 对象
    • 作为更容易支持使用动态字段和约束的类型的LayoutColorsLayoutString
    • textfontStyle
    • StateBuilder 更好的映射支持,包括 DynamicDataMap 和工厂方法,例如用于更轻松创建 AppDataKey 对象的 intAppDataKey
  • 支持 Lottie 动画,包括设置动画何时开始的不同触发器选项,例如布局加载时或布局可见时
    • 改进的渐变支持
    • 作为 Brush 的一部分的线性渐变 API,可用于 BoxSpacer 等元素的 Background 修饰符中…
    • 允许在线性渐变和扫描渐变中使用的 ColorStop 中使用动态颜色值
    • 弧形对象中现有的扫描渐变现在支持动态颜色以及起始和结束角度
  • `protolayout-expression` 中的平台数据绑定,用于在布局可见性发生变化时随时接收信息,例如,这可用于在磁贴被滑动到时隐藏布局的某些部分
  • 已添加测试库 - protolayout-testing - 以支持更轻松地对任何 ProtoLayout 元素进行单元测试覆盖
  • 新增元素 DashedArcLine,具有改进的功能集,使线条可以有虚线,与现有的 ArcLine 不同
  • `ArcSpacer` 支持以 DP 尺寸而非度数设置其长度
  • 为某些字体添加了圆度 FontSetting

版本 1.3.0-alpha10

2025 年 3 月 12 日

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

新功能

  • 在 Kotlin Background Modifier 中添加 Brush 助手。(I995de)
  • 强制性的 Android Context 字段已在 MaterialScope 中公开,以便开发人员在为 Material3 磁贴创建组件的函数中更轻松地使用。(I7df73)

API 变更

  • 将 API platformVisibilityStatus 重命名为 PlatformEventSources.isLayoutVisible,并添加新的实验性 API PlatformEventSources.isLayoutUpdatePending。(Ie1e04)

Bug 修复

  • primaryLayout 的边距现在已正确向上取整,这可能会导致某些布局的主槽位空间减少多达 2dp。(I8f5d3)
  • 澄清 ProtoLayout Material3 组件中的默认动态颜色主题。(Iff5f3)
  • Typography.NUMERAL_* 字体默认不再是表格/等宽字体。如果文本正在动画,强烈建议为其添加 FontSetting.tabularNum() 设置。在所有其他情况下,不需要此等宽字体选项,并且不使用它将有更多可用字符。(Id3cd9)
  • 澄清 ProtoLayout Material3 组件中的默认动态颜色主题。(I9d831)

版本 1.3.0-alpha09

2025 年 2 月 26 日

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

新功能

  • enterTransitionexitTransition 添加了实验性修饰符 (I4a4d6)
  • 我们添加了额外的平台绑定,以便在完整布局的可见性发生变化时接收其可见性状态。(I250c3)
  • 允许将测试应用状态和平台数据注入 LayoutElementAssertionsProvider 以评估动态值。(Ib5fcb)
  • 将角过滤器添加到 protolayout 测试库 (Ie2361)
  • ButtonColorsCardColorsProgressIndicatorColors 现在支持复制方法,并可选择覆盖某些参数。(Ie2054)

API 变更

  • 向测试库添加动态数据绑定支持 (Ib98de)
  • 修复了与 backgroundImage 函数一起使用时 imageButton 的问题,通过移除叠加层。此外,允许 backgroundImage 函数指定叠加层颜色为 null,这意味着将不应用叠加层。(Ibec3c)

Bug 修复

  • 已将默认的 hasValueOfType 方法更改为抛出 UnsupportedOperationException 而不是 IllegalArgumentException。(Ia36c3)
  • 默认颜色令牌值已更新以反映最新规范。(I75d44)
  • 修复了 AndroidX 磁贴渲染器中弧线上的混叠问题。(I88190)

版本 1.3.0-alpha08

2025 年 2 月 12 日

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

新功能

  • 为 Material3 文本添加 FontSetting 列表参数。(Ic102d)
  • 添加了 DynamicDataMap 类,StateBuilder 现在支持该类,以提供更好的类型安全 Kotlin 应用状态 API (I012ba)
  • 添加了工厂方法,例如 intAppDataKey,以便更轻松地创建 AppDataKey 对象 (Icea2a)
  • DynamicDataValue 现在除了 hasInt/hasColor/.... 方法之外,还具有 hasValueOfType(Class<?>) 方法 (I4f7a6)
  • 我们已将 errorDim 添加到 Material3 ProtoLayout ColorScheme,用于高优先级错误或紧急操作,例如安全警报。(Ia17bb)
  • 我们增加了一个防护措施,以防止在访问全局减速运动设置时发生崩溃,该崩溃在某些未提供该设置的平台上触发。(I01e2c)

API 变更

  • 已将 addKeyToValueMapping 重命名为 addToStateMap,并移除了 DynamicDataMap.put 方法,因为它们是冗余的。(Ibe9dd)
  • Material3 排版现在支持支持此轴的系统字体的圆度可变轴。ProtoLayout FontSetting 支持支持此轴的字体的圆度轴。(I33eb5)
  • 在 Material3 文本方法中,将 multilineAlignment 重命名为 alignment。(I2b66b)
  • 将圆形进度指示器更新为 Box 类型,同时将 constructGraphic 中的 mainContent 指定为 Box 类型 (I5a3dc)
  • 更好地支持在图中使用圆形进度指示器 (I039db)

Bug 修复

  • 允许在 ColorStop 中使用动态值,以及在 SweepGradient 中使用起始/结束角度。(I0146d)
  • 文档修复。(I4a63a)
  • 更新了 Material 3 组件(graphicCardavatarButton),以便在不支持 weight 扩展尺寸(例如低于 API 33)时提供备用方案。更新了文本组件,以便在渲染器不支持 TEXT_OVERFLOW_ELLIPSIZE 时回退到 TEXT_OVERFLOW_ELLIPSIZE_END。(I19e2c)
  • 针对 PrimaryLayoutMargins 的文档更新。(Ibaf7b

版本 1.3.0-alpha07

2025 年 1 月 29 日

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

新功能

  • 添加了 API 选项,用于为 Lottie 动画设置不同的触发器。此外,添加了在布局可见时触发的 API。(I8272d
  • 添加了 bordervisibilityopacity 修饰符。(I6d3dd
  • 将头像按钮添加到 ProtoLayout Material3 组件。(Idb5ae
  • 现在允许在 Material3 primaryLayout 中自定义边距(侧边距,在某些情况下也包括底部边距)。(Ib22f6
  • 添加了圆形进度指示器的分段变体。(I6a648
  • 将紧凑按钮组件添加到 ProtoLayout Material3。(Ia3c5c
  • 将胶囊形按钮和图像按钮组件添加到 ProtoLayout Material3。(Ifb88a

API 变更

  • LayoutModfier.foldIn 现已重命名为 foldRight,以更好地反映其预期行为。(Idf242
  • VisibleOnce 触发器现在是实验性的。(Ib2d26
  • 从公共 API 中移除了 withOpacity,因为存在图形库替代方案。(I030c2
  • LayoutString.ktLayoutColor.kt 中的顶级方法重命名为对 Java 友好的名称。(I7aff0
  • 移除了 Material3 中非 ProtoLayout 的排版。(Idd9ae
  • 在 Material3 的 *Colors 类中,为字段添加了 Color 后缀。(I2d114

Bug 修复

  • 为不支持不对称圆角的旧渲染器添加了 EdgeButton 回退实现。(I63364
  • 添加了旧渲染器中圆形进度指示器的回退实现。(I0f134

版本 1.3.0-alpha06

2025 年 1 月 15 日

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

新功能

  • LayoutColor 支持静态和动态颜色类型。(I4c89b
  • 添加了 ProtoLayout Material3 文本按钮组件。(Id680d
  • 添加了 iconButton ProtoLayout Material3 组件。(Ica3f0
  • 添加了 ProtoLayout Material3 按钮容器组件。(I17a38
  • 为 protolayout-material3 添加了对可链式语义修饰符的支持。(I4af62
  • 添加了 ProtoLayout Material3 单段 CircularProgressIndicator。(I2c8a2
  • 添加了 paddingmetadata 修饰符。(I8720a
  • 添加了 backgroundclipclickable 修饰符。(I35478
  • LinearGradient 添加到 Brush,并允许其在 Background Modifier 中使用。(Ic4dea
  • 为 appCard 和 titleCard 添加了小尺寸。(I91f98
  • 添加了 ProtoLayout Material3 graphicDataCard 组件。(I92be7
  • 添加了 ProtoLayout Material3 iconDataCardtextDataCard 组件。(I4e1e4
  • 添加了 ProtoLayout Material3 appCard 组件。(Id4c57
  • EdgeButtonColors 抽象为 ButtonColors。(I83624
  • 添加了 ProtoLayout Material3 titleCard 组件。(I2dc72

API 变更

  • ProtoLayout Material3 API 现在接受 LayoutString 以支持静态和动态文本。(I9c24a

Bug 修复

  • 添加了用于膨胀 DashedArcLine 的渲染器实现。(I0c700
  • 渲染器更改,允许 ArcSpacer 采用 dp 长度。(I1437b

版本 1.3.0-alpha05

2024 年 12 月 11 日

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

新功能

  • 添加了 LayoutString 以支持可绑定布局字符串字段。(Ida650
  • 添加了 ProtoLayout Material3 卡片容器组件。(Ic985a

Bug 修复

  • 此库现在使用 JSpecify 空值注解,它们是类型使用的。Kotlin 开发者应使用以下编译器参数来强制正确使用:-Xjspecify-annotations=strict(这是 Kotlin 编译器 2.1.0 版开始的默认设置)。(Id1f9b, b/326456246)

版本 1.3.0-alpha04

2024 年 11 月 13 日

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

新功能

  • 更新了 Material3 形状,使其成为一个带有字段的类,这些字段包含实际的 Corner 值,与 Wear Compose 中相同。(Ied8cd
  • 更新了 Material3 颜色,以包含 ColorScheme 概念,与 Wear Compose 中相同。(If645e
  • 向测试库添加了多个常用匹配器。(Ie5cec

版本 1.3.0-alpha03

2024 年 10 月 30 日

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

新功能

  • 向测试库添加了 LayoutElementAssertionsProviderLayoutElementAssertionLayoutElementMatcher。(Id1110

版本 1.3.0-alpha02

2024 年 10 月 16 日

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

新功能

  • Material 3 库的初始版本。包含 textedgeButtonbuttonGroupprimaryLayout 组件。

安全修复

  • 此更改以来,androidx 针对 protobuf 4.28.2 进行编译,以解决 CVE-2024-7254。请将对 androidx.wear.protolayout:protolayout-protoandroidx.wear.protolayout:protolayout-external-protobuf 的依赖项从 1.3.0-alpha01 版升级到 1.3.0-alpha02,以解决漏洞风险。

外部贡献

版本 1.3.0-alpha01

2024 年 10 月 2 日

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

Bug 修复

  • 澄清了 Roboto 和 Roboto Flex 字体系列名称的可用性取决于设备。(I193be
  • 在 AndroidX Tile 渲染器中启用了 Roboto Flex 字体系列。(I08e94

版本 1.2

版本 1.2.1

2024 年 10 月 16 日

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

安全修复

  • 此更改以来,androidx 针对 protobuf 4.28.2 进行编译,以解决 CVE-2024-7254。请将对 androidx.wear.protolayout:protolayout-protoandroidx.wear.protolayout:protolayout-external-protobuf 的依赖项从 1.2.0 版升级到 1.2.1,以解决漏洞风险。

版本 1.2.0

2024 年 8 月 7 日

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

自 1.1.0 以来的重要变更

  • FontStyle 已更新,增加了对可变轴的字体支持,并提供了更好的字体选择 API 以支持即将推出的 Flex 字体。
  • 附加修饰符支持
    • 转换修饰符提供平移、旋转和缩放,可带或不带动画。
    • 为每个圆角半径指定不同的值(水平和垂直)。
  • 通过将使用 Clickable 修饰符的任何元素的可点击区域扩展到至少 48dp x 48dp,改进了所有触摸目标的可访问性。
  • 通过添加 setResponsiveContentInsetEnabled 改进了 PrimaryLayoutEdgeContentLayout,以更好地支持这些布局在不同屏幕尺寸上的响应行为并提高 Tiles 的一致性。
  • 改进了 Android 14 非线性字体缩放的 Material Text 的缩放/非缩放。
  • 改进了对所有弧形元素的 RTL 布局方向的支持。

其他变更

版本 1.2.0-rc01

2024 年 7 月 24 日

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

Bug 修复

  • 我们修复了标准 Material Chip,使其仅在未传入主标签或副标签时才能用作图标。(Iceef9
  • Material 布局的文档已更新,包含相关页面的视觉效果,以便更容易理解布局。(I0256a

版本 1.2.0-beta01

2024 年 7 月 10 日

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

新功能

Wear ProtoLayout 的 1.2.0-beta01 版本表明此库的发布功能已完整,并且 API 已锁定(除非标记为实验性)。Wear ProtoLayout 1.2 包含以下新功能和 API

  • FontStyle 已更新以提供以下附加字体支持
    • 设置不同的字体变体设置,例如 FontSetting.weightFontSetting.width
    • 为所有数字字符设置相同的宽度 - 等宽数字(FontSetting.tnum 字体特性设置)
    • 改进了字体选择 API,通过指定要使用的首选字体系列名称来支持即将推出的 Flex 字体。
  • 扩展了 Corner 修饰符,以支持为每个 CornerRadius 指定单独的水平和垂直值,从而允许构建具有不对称角的元素。
  • 添加了新的 Transformation 修饰符,提供 LayoutElement 的平移、旋转和缩放。这些转换可以通过使用动态值进行动画处理。
  • 为所有弧形元素(ArcArcLineArcText)添加了 setArcDirection,选项包括 ClockwiseCounterClockwiseNormal,以更好地支持不同的布局方向(例如 LTR 和 RTL)。
  • 通过将使用 Clickable 修饰符的任何元素的可点击区域扩展到至少 48dp x 48dp,改进了所有触摸目标的可访问性。
  • 通过添加 setResponsiveContentInsetEnabled 改进了 PrimaryLayoutEdgeContentLayout,以更好地支持这些布局在不同屏幕尺寸上的响应行为并提高 Tiles 的一致性。添加了 linter 警告,建议使用这些 API 并提供快速修复。
  • 改进了 Android 14 非线性字体缩放的 Material Text 的缩放/非缩放。

API 变更

  • 移除了默认字体系列名称(DEFAULT_SYSTEM_FONT),因为它通过不使用 preferredFontFamilies API 来隐含。(I39dab
  • 传入 FontSetting.width 的参数应为正数。(I1266f

版本 1.2.0-alpha05

2024 年 6 月 26 日

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

新功能

  • Material.CompactChip 添加了 hasText 方法,以检查文本内容是否已设置。(I6e8fc

API 变更

  • FontFamily 常量已移至 FontStyle 而非其 Builder 类。(I06ced
  • 更新了 FontSetting.weightFontSetting.width API,以包含 Range 注解并将 weight 参数更改为 int。(Ia726c

Bug 修复

  • Material 库中的非可缩放文本现在可与 Android 14 的非线性字体缩放正确配合使用。(I6601e

版本 1.2.0-alpha04

2024 年 5 月 29 日

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

API 变更

  • 添加了不对称圆角 API,能够分别指定每个圆角的半径,并提供 2 个值。(Icbd69
  • 扩展了 FontSetting API,以包含
    • 字体特性设置,例如将字体设置为表格形式。(If12b7
    • 字体变体设置,例如为可变字体设置自定义宽度。(I2b36d
  • FontStyle 添加了字体系列 API,以允许指定应使用的字体系列的有序列表。(Iba9f5
  • 重命名了 Material LayoutDefaults 中内容和辅助标签之间空间高度的常量,这些常量最初以“Edge content”为前缀,现在更加通用,因为它们可以应用于 PrimaryLayoutEdgeContentLayout。(I4dc32

Bug 修复

  • 将可变字体轴的命名从 axisName 重命名为 axisTag。(I02ba3

版本 1.2.0-alpha03

2024 年 5 月 14 日

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

新功能

  • 添加了用于为 FontStyle 设置自定义权重值的 API。(I7390a

Bug 修复

  • 修复了由于空目标映射导致的 getTouchDelegateInfo 失败。(I2accf

版本 1.2.0-alpha02

2024 年 5 月 1 日

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

API 变更

  • 我们增加了对禁用单个可点击元素上的涟漪反馈的支持。(If1ede
  • 转换 API 已从 ArcModifiers 中移除,因为它们不支持该功能。(Ic0827
  • ArcDirectionProp Builder 现在在构造函数中需要一个值。(I76ada
  • PlatformDataValues.Builder.putAll 方法将允许将一个 PlatformDataValue 合并到另一个中。(I50ba3
  • Text#setIsScalable 已重命名为 Text#setScalable。(If920e
  • Material Text 可以设置是否使用可缩放大小(当用户字体大小更改时增大)或不使用。(Ibc849
  • 我们添加了将内容描述设置为 TitleChip 的选项。(I5d21f
  • 修复了 CompactChip 仅与图标一起正确工作的问题,并更新了 API 以允许此选项。(I6589e

Bug 修复

  • 修复了初始化期间潜在的重复平台数据问题。(Iba0fd
  • 引入 DynamicDataNode 的新 getter 以检索节点成本。成本用于获取动态节点配额。目前,固定值的节点成本为 0,所有其他节点成本为 1。(Ia33e1
  • NO_OP_QUOTA_MANAGER 中移除计数逻辑。(Ib50b8
  • 我们添加了一个 lint 规则,用于报告在未使用 setResponsiveContentInsetEnabled 的情况下使用 PrimaryLayout 时的警告,并提供快速修复。(I12025
  • 动态表达式节点的数量有限制。(Iffae8

版本 1.2.0-alpha01

2024 年 3 月 6 日

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

新功能

  • ProtoLayout Arc 元素现在可以选择添加 ArcDirectionClockwiseCounterclockwiseNormal)。将此行为添加到 ArcArcLineArcText 将修复它们在 RTL 布局上的行为。(I90699
  • EdgeContentLayout 已使用新的 setResponsiveContentInsetEnabled setter 进行更新,以实现与 UX 指南更好的对齐、Tiles 中的一致性,通过将主标签固定在顶部,并为标签设置响应式内边距。(I60175
  • 我们添加了 PrimaryLayout.setResponsiveContentInsetEnabled,它为该布局中的主标签、辅助标签和底部芯片添加了响应式内边距,以避免内容超出屏幕边缘。(I0c457
  • 添加了从 CircularProgressIndicator 中移除外部边距的方法,使其可以用作较小的组件。(I55c06

API 变更

  • Tiles 渲染器现在默认排除所有文本元素的字体内边距,并且没有选项可以包含它。(I3e300

Bug 修复

  • 修复了当文本同时使用省略号、字母间距和居中对齐时的文本对齐问题。(I716c7
  • 添加了针对 skia 弧线绘制问题的解决方法。(I08f09
  • 修复了 RTL 布局的 ArcLine 绘制方向。(I6c141

版本 1.1

版本 1.1.0

2024 年 2 月 7 日

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

自 1.0.0 以来的重要变更

  • 渐变支持和 ArcLine 中大于 360 度的长度的更好表示。
  • 日期时间格式化支持动态数据类型的不同时区。
  • 更好的文本自动调整大小和省略选项,以处理截断文本。
  • Spacer 支持具有可选权重的扩展尺寸。
  • 所有 ProtoLayout API 的 Schema 版本要求注解。
  • 将任何 Clickable 元素的目标区域扩展到 48 dp x 48 dp,以满足可访问性要求。
  • 字体内边距默认关闭,并且是所有文本元素和包含文本的 Material 组件的唯一行为。

其他变更

版本 1.1.0-rc01

2024 年 1 月 24 日

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

Bug 修复

  • PlatformTimeUpdateNotifierImpl 在启用更新后立即计时。(I77145
  • CircularProgressIndicator 已修复以支持 RTL 布局。从现在起,它在所有情况下都将顺时针旋转。(I95ee3
  • 添加了针对 skia 弧线绘制问题的解决方法。(I08f09

版本 1.1.0-beta01

2024 年 1 月 10 日

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

新功能

Wear ProtoLayout 的 1.1.0-beta01 版本表明此库的发布功能已完整,并且 API 已锁定(除非标记为实验性)。Wear ProtoLayout 1.1 包含以下新功能和 API

  • ArcLine 现在通过添加带有 SweepGradientBrush 来支持渐变,并在帽上添加阴影以更好地表示大于 360 度的长度,通过在现有 StrokeCap 上添加 Shadow
  • DynamicInstant 支持带有时区的日期时间格式化。DynamicInstantDynamicDuration 可以用作状态或平台数据类型。
  • 文本大小的自动调整功能,允许为 FontStyle.setSizes 设置多个大小,文本大小将根据其在父级内部的空间自动缩放。此外,我们通过添加 TEXT_OVERFLOW_ELLIPSIZE 并弃用 TEXT_OVERFLOW_ELLIPSIZE_END 改进了文本溢出的省略选项。
  • Spacer 现在支持具有可选权重的扩展尺寸。为了构建 ExpandedDimensionProp,我们添加了一个辅助方法 DimensionBuilders.weight
  • 支持使用 Modifier.visible 动态隐藏和取消隐藏布局元素。这包括在 BoolProp 中具有动态值。
  • 所有 ProtoLayout API 现在都具有 schema 版本要求注解,并且可以在调用较新 API 之前检查版本。
  • 每个具有 Clickable 的元素现在都将其目标区域在渲染器中扩展到至少 48x48,以更好地支持可访问性要求。
  • 根据其他 Material 组件和 Compose 计划,我们现在默认关闭所有 Text 元素的字体内边距。此外,AndroidTextStyle 和相关 setter 已从公共 API 中移除。并修复了以下错误
  • 添加了一个 setter,用于定位 EdgeContentLayout 中的边缘内容,使其可以放置在其他内容之前。
  • 在遇到无法识别的枚举值时始终抛出异常。
  • 当表达式产生无效数值(NaN 或无穷大)或抛出 ArithmeticException 时,使其结果失效。

API 变更

  • 更新 SweepGradient API,允许在构造函数中接受颜色或 ColorStops。(I6676f

Bug 修复

  • 添加了受限 API 和渲染器支持,用于设置弧形元素的绘制方向。(Idef5a
  • RoundMode 在未指定时默认为 FloatToInt32Node 中的 Floor。如果提供的 RoundMode 无法识别,节点仍将抛出异常。(I1b2d8

版本 1.1.0-alpha04

2023 年 12 月 13 日

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

新功能

  • VersionInfo 类现在实现了 Comparable 接口。(I8d13c
  • 渲染器现在支持 TEXT_OVERFLOW_ELLIPSIZE 选项。(I7f085

API 变更

  • 文本溢出选项 TEXT_OVERFLOW_ELLIPSIZE_END 现已弃用。请使用行为非常相似的新 API TEXT_OVERFLOW_ELLIPSIZE。(I822d8
  • 与其他 Material 组件和 Compose 计划一致,我们现在默认关闭所有文本元素的字体内边距。此外,AndroidTextStyle 和相关 setter 已从公共 API 中移除。(I79094Ib0b03I32959Iaf7d5Ifa298I0a4aeIda9d3
  • Modifier.hidden 已替换为 Modifier.visible。(I56902
  • FontStyle#setSizes 现在接受 int 而不是 SpProp 参数。(I02b37

Bug 修复

  • 在遇到未定义或无法识别的枚举值时抛出异常。(I9d2cf
  • 重构 DynamicTypeBindingRequest。(I27b57
  • 当表达式产生无效数值(NaN 或无穷大)或抛出 ArithmeticException 时,使其结果失效。(I681ae

版本 1.1.0-alpha03

2023 年 11 月 29 日

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

新功能

  • 添加了对动态隐藏/取消隐藏布局元素的实验性支持。(I64a78
  • BoolProp 添加了动态值支持。(I2fe96
  • ProtoLayout API 添加了 schema 版本要求注解。(I0f03c
  • 扩展了 API,在 TextOverflow 中新增选项,用于在固定父容器中省略文本,即使未达到最大行数(但文本空间不足)。(I110a9
  • 添加了辅助方法 DimensionBuilders.weight,用于构建带有权重的 ExpandedDimensionProp。(I4f72b
  • DynamicInstantDynamicDuration 可以用作状态或平台数据类型。(I6819f

API 变更

  • 更新 API 以隐藏 DynamicZonedDateTime 并将其所有操作移至 DyanamicInstant。(I34b94
  • Spacer 现在支持宽度/高度的扩展维度。(Ie7c94
  • 支持渲染器中的点击目标区域扩展。(I39c79

版本 1.1.0-alpha02

2023 年 11 月 15 日

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

新功能

  • ArcLine StrokeCap Shadow 字段添加到 API。(I830ec
  • 扩展 API,使其能够指定 Spacer 的宽度或高度以进行扩展。(I757ca
  • 我们添加了一个实验性 API,用于根据文本在其父级内部的空间自动缩放文本大小。(Ibbe63
  • 支持最小可点击大小。(I178e3
  • 添加了对 StrokeCap Shadow 的渲染器支持。(I48b17
  • ArcLine 中添加了对 Sweep Gradient 的渲染器支持。(I4d5bb

版本 1.1.0-alpha01

2023 年 10 月 18 日

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

新功能

  • Arcline 中添加了画笔选项,并支持 SweepGradient。(Ie7ce3
  • 添加了对带有时区的日期时间格式化的支持。(Ibfae0
  • 添加了带有时区的日期时间格式化所需的 proto 和 Java 包装器。(I97126
  • 添加了用于回读存储在 DynamicDataValue 中的值的方法。(Ie6cea
  • 添加了一个 setter,用于定位 EdgeContentLayout 中的边缘内容,使其可以放置在其他内容之前。(Ie8e8a

Bug 修复

  • 修复了当具有多个时间数据源注册的表达式未立即更新时的问题。(I8e1a8
  • 修复了在差异更新期间居中根元素的错误。(Ie48f7
  • 未设置(或空)的布局约束值将不再被忽略。(Ibc785
  • 减少了布局可见与其管道节点初始化之间的延迟。(I38d4e

版本 1.0

版本 1.0.0

2023 年 8 月 9 日

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

1.0.0 的主要功能

ProtoLayout 库引入了用于创建可在不同 Wear OS 界面上使用的布局和表达式的 API。例如,Tiles 库使用这些 API 支持平台数据绑定(用于更快的 Tile 数据更新)和动画。

版本 1.0.0-rc01

2023 年 7 月 26 日

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

  • 要从 Tiles 迁移到 ProtoLayout,请按照此处的说明进行操作。

API 变更

  • 我们已从 Arc 元素中移除了 setLayoutConstraintForDynamicAnchorAnglegetLayoutConstraintForDynamicAnchorAngle 方法。这些方法是错误添加的,它们对提供的布局没有任何影响。(If7d01
  • 我们将 ProtoLayout 布局的最大深度限制为 30 个嵌套 LayoutElements。(I8a74b

Bug 修复

  • 我们添加了一个检查,以在为 SpanText 设置 DynamicColor 时抛出异常。(I0e5bc
  • 澄清了 DAILY_CALORIES 数据源单位是 kcal。(Iaa785

版本 1.0.0-beta01

2023 年 6 月 21 日

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

新功能

  • 允许为时间绑定测试设置时钟。(I05622

API 变更

  • PlatformDataReceiver.onData()StateBuilders.Builder.addKeyToValueMapping 现在接受 DynamicDataKeyDynamicDataValue 的类型安全映射,而不是不安全的泛型。这意味着 DynamicDataValue 现在已使用其 DynamicType 类型化。HEART_RATE_ACCURACY_X 常量已移至 PlatformHealthSources 的根目录,以匹配其他 Android 常量位置。HEART_RATE_ACCURACY_X 整型常量现在直接在 DynamicHeartRateAccuracy.constant()DynamicHeartRateAccuracy.dynamicDataValueOf() 中使用,而不是值常量。(I82ff5
  • PlatformHealthSources.Constants 类因错误而可实例化。现已修复此问题。(Icb849
  • PlatformTimeUpdateNotifier#setReceiver 现在接收 Runnable 而不是 Supplier 函数和 Executor 来通知。(I9d938
  • 我们已将 PlatformTimeUpdateNotifier#setReceiver 中的参数类型从 Callable 更改为 Supplier。(I664bf
  • CompactChipTitleChip 现在支持添加图标。(I5a01e

Bug 修复

  • 使用 oneof 而不是动态字段更新 Prop 消息。(I81739
  • 重用具有 setter 的重载的 setter 实现。(Ied70c
  • 在具有重载的 setter 中正确记录指纹。(I86ed2

版本 1.0.0-alpha11

2023 年 6 月 7 日

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

新功能

  • 我们添加了用于心率准确度的 PlatformDataKey。(I7f9b8

API 变更

  • StateBuilders#getIdToValueMapping 重命名为 getKeyToValueMapping,并将返回类型更改为 Map<<AppDataKey<?>,DynamicDataValue>。(Iaa7ae
  • StateStore 设为最终类。(I408ca
  • TimeGateway 接口已替换为 protolayout-expression-pipeline 库中的 PlatformTimeUpdateNotifier,后者提供更新时间数据所需的频率。(I60869
  • PlatformDataProvider 中的 register/unregisterForData 重命名为 set/clearReceiver。(I14b02
  • 在 Material Text 中,getExcludeFontPadding 已重命名为 hasExcludeFontPadding。(Iea01d
  • 为所有芯片组件添加了完美对齐标签的 setter。所有芯片现在都应用了最小可点击目标。(I8ae92
  • LayoutDefaults#BUTTON_MAX_NUMBER 已重命名为 MAX_BUTTONS。(I84788
  • DAILY_DISTANCE 已重命名为 DAILY_DISTANCE_M。(I4f758

Bug 修复

  • 更新 Prop 类型文档,以澄清为何强制使用静态值。指定如果未提供静态值,则使用的默认值。(I155aa
  • PlatformDataKey 命名空间应遵循 Java 样式命名。(I47bda

版本 1.0.0-alpha10

2023 年 5 月 24 日

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

新功能

  • 添加了用于访问应用推送状态的 AppDataKey;添加了用于访问平台数据的 PlatformDataKey;在 StateStore 中添加了命名空间支持。(I7985e
  • 支持 DynamicBoolEqualNotEqual 操作。(I6a0c1

API 变更

  • FontStyles 类现在是最终类。(Iaa2ea
  • LayoutElementBuilders#FontStyles 已弃用。请使用 androidx.wear.protolayout.Typography 或创建您自己的 FontStyle。(Ic929b
  • Action 接口中隐藏 Action#Builder 嵌套接口。LoadActionLaunchAction 类已提供 Builder 的实现。(I1d70c
  • 允许将 DynamicFloatFloatProp 一起使用。请注意,FloatProp 不需要布局约束,因为它不作为布局更改属性使用。(I286ac
  • 移除了 LoalActionSetStateAction 操作,因为它们尚未真正支持。(I5d6a6
  • 添加了对内联图像资源 ARGB_8888 格式的支持。(I8a07c
  • StateEntryValue 重命名为 DynamicDataValue,并更新状态 API 以使用 DynamicDataKey。(If1c01
  • 我们正在限制 StateStore 中允许的条目数量,以确保每个 StateStore 实例的内存使用和状态更新时间得到良好的控制。因此,开发者需要确保他们的映射中不超过 MAX_STATE_ENTRY_COUNT 个条目,否则在创建或更新 StateStore 时将收到 IllegalStateException。(Ibadb3
  • 隐藏 OnLoadTriggerOnConditionMetTrigger 类,并将 OnConditionMetTriggersetTrigger 重命名为 setCondition。(Ibf629
  • 出于性能和兼容性原因,ProtoLayout 渲染器将不支持 AnimatedVectorDrawable 资源中的完整功能集。我们正在将这些 API 标记为实验性,直到我们可以定义受支持的集合。(Ic6daf
  • 添加了每日距离、每日卡路里和每日楼层的动态类型。平台健康源的键现在位于 PlatformHealthSources.Keys 下。(Ib7637
  • Easing.cubicBezier 方法取代了 CubicBezierEasing.Builder。因此,EasingFunction 类被移除,并且该类中的缓动常量现在可以直接从 Easing 接口访问。此外,setInfiniteRepeatableINFINITE_REPEATABLE_WITH_RESTARTINFINITE_REPEATABLE_WITH_REVERSE 取代。(Ib41e7
  • 实现 PlatformDataProvider 以提供心率和每日步数。SensorGateway 接口已从公共 API 中移除。(I55b84
  • 添加了 PlatformDataProvider,并更新了 StateStore 以在表达式管道中的节点需要提供程序支持的键时向 PlatformDataProvider 注册。(Ib616a
  • SensorGateway 不再是 Closeable,因为它不再维护任何状态。(I6b4f7
  • 允许将 FloatPropDynamicFloat 一起用于 CircularProgressIndicator 的进度。这适用于支持版本 1.2 的渲染器。旧渲染器将回退到提供的 staticValue,否则回退到 0。(I0d91b
  • MultiButtonLayout 常量已重构到 LayoutDefaults.MultiButtonLayoutDefaults 类中,该类现在包含根据布局中按钮数量确定的按钮大小。(I13973
  • 支持在 Material Text 中将 StringPropDynamicString 一起使用。这适用于支持版本 1.2 的渲染器。旧渲染器将回退到提供的静态值。将 Text#getText 的返回类型从 String 更新为 StringProp。(I7275b

版本 1.0.0-alpha09

2023 年 5 月 10 日

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

新功能

  • 我们添加了一个实验性的扩展布局元素。请注意,这不能默认使用,需要能够理解布局元素的渲染器扩展。(I6581d
  • 添加了 ArcLineStrokeCap 支持。(I94951
  • 添加了对条件 Instant 操作的支持。(I489a7
  • 添加了对条件 Duration 操作的支持。(Iab469
  • 添加了从秒创建 Duration 的支持。(Ib5fa1

API 变更

  • 已从 DynamicTypeEvaluator 中移除了 enable/disablePlatformSource 方法。调用者应负责更新。(I78c6d
  • 允许限制绑定数据类型的大小。(Ie2966
  • protolayout-material 中添加了对动态内容描述的支持。(I62c8e
  • 在 AnimationParameters 中,使用 long 和 @IntRange 表示 duration 和 delay。(I388b6

版本 1.0.0-alpha08

2023 年 4 月 19 日

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

新功能

  • AndroidTextStyle 已添加到 LayoutElementBuilders。(I8d967
  • 我们增加了对在 ProtoLayout Material Text 中设置排除字体内边距的支持。(I17f5d
  • 现在支持内联图像的 ARGB_8888 格式。(I18c1e
  • DynamicColor 现在支持 onCondition 操作。(I10927

API 变更

  • 支持反向动画的自定义持续时间。(I3251f
  • 我们添加了 SemanticDescription 修饰符。此外,ContentDescription 不可绑定。(I3f1d
  • DynamicBool.isFalse() 方法现在被 DynamicBool.negate() 替换,并且 DynamicBool.isTrue() 被移除。此外,NaN DynamicFloat 值和将 DynamicInt32 窄化为 DynamicFloat 现在会发出无效的动态结果。(I6ac1e
  • Int 和 float 格式化器现在使用 Builder 模式。(Ieb213

Bug 修复

  • 已从可动画字段中移除了回退静态值。(Ifcb01
  • DynamicTypeValueReceiver#onPreUpdate 已移除。(I2dc35
  • 动态表达式中的字符串长度现在受到限制。(I4c93
  • Gradle 依赖项现在在需要时正确设置为 api 而不是 implementation。(I40503

版本 1.0.0-alpha07

2023 年 4 月 5 日

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

新功能

  • StringProp 添加动态值支持。(I04342
  • 标记可绑定布局元素。(Ia110b

API 变更

  • sensorGateway#registerSensorGatewayConsumer 将数据类型作为参数,而不是 Consumer 中的方法。(Icf314
  • ObservableStateStore 已重命名为 StateStore。(Ieb0e2
  • 添加了 DynamicTypeEvaluator.Builder 而不是构造函数参数,以允许更多可选参数,包括现在默认为空存储的 ObservableStateStore。(I6f832
  • 重构了 DynamicTypeEvaluator 中参数的顺序。(Ic1ba4

Bug 修复

  • 正确地将信号从平台传感器源传播到下游节点。(I5a922

版本 1.0.0-alpha06

2023 年 3 月 22 日

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

新功能

  • 我们添加了一个实验性 API,用于在动态表达式中使用心率和每日步数。(Ifd711
  • 我们添加了对动画反向和向前延迟的支持。(Ic25f7
  • 我们向 Border 和 Background 添加了 DynamicColor 支持。
  • 我们向 DimensionBuilder 中的类型添加了动态值支持。
  • 来自 tiles-material 的布局和组件正在移至 protolayout-material

API 变更

  • LoadActionListener 已添加到 ProtoLayoutViewInstance。(If7806

Bug 修复

  • 添加了 FloatNodesTest。(Id7281
  • 修复了无法加载结构化位图时渲染器崩溃的问题。

版本 1.0.0-alpha05

2023 年 3 月 8 日

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

新功能

  • 我们向 Modifiers 对象添加了一个实验性的“内容更新”动画。当元素(带有此修饰符)或其子元素之一在布局更新期间发生更改时,此动画将触发。(bd03e5d

API 变更

  • 我们已将 forwardRepeatDelayMillisreverseRepeatDelayMillis 添加到 Repeatable 中。我们还将 AnimationSpec 中的 delayMillis 重命名为 startDelayMillis (Ifb266)
  • DynamicTypeEvaluator.bind 方法现在接受一个 Executor。(I346ab)
  • 我们已将 startEvaluation 方法添加到 BoundDynamicType 中,以便在绑定动态类型后触发评估。(I19908)

Bug 修复

  • Animator 对象将对单个元素的后续动画进行重用。(Ia3be9)

版本 1.0.0-alpha04

2023 年 2 月 22 日

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

新功能

  • ObservableStateStore 现在也会在移除键时通知监听器。
  • 我们已将渲染器架构版本和字体缩放比例添加到 DeviceParameters 中(这可用于根据不同的版本和字体设置有条件地创建布局)。
  • 我们已添加对 DynamicInt32 值进行动画处理的支持 (I05485)
  • 我们添加了 OnLoadOnConditionalMet 触发器。这些可用于启动支持触发器的动画。
  • 我们已为展开尺寸添加布局权重,并为封装尺寸添加最小尺寸。
  • 我们添加了 duration 和 instant 动态类型。这些可用于在动态表达式中表示时间点或持续时间。
  • 我们已添加对将 AnimatedVectorDrawableSeekableAnimatedVectorDrawable 作为布局资源进行动画处理的支持。

API 变更

  • 传感器数据需要 API 29 或更高版本。(I8099e)
  • 我们添加了两个 launchAction 辅助方法(用于启动 Activity)。

Bug 修复

  • 在 Tiles 动画中将 set/getSpec 重命名为 set/getAnimationSpec (I3d74b)

版本 1.0.0-alpha03

2023 年 2 月 8 日

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

新功能

  • 我们已将 toByteArray()fromByteArray() 添加到 protolayout-express 库中的动态类型。
  • 我们已将 toString() 添加到 protolayout-expression 库中的动态类型。
  • 我们已添加对动态类型的评估支持。protolayout-expression-pipeline 库中的 DynamicTypeEvaluator 类可用于评估(和接收更新的值)之前创建的动态类型(如 DynamicStringDynamicFloat 等)。
  • 当动画无法播放时(无论是评估器将其停用,还是正在运行的动画数量已达到设定的上限),可动画节点的静态值将用于替换动画。

版本 1.0.0-alpha02

2023 年 1 月 25 日

androidx.wear.protolayout:protolayout:1.0.0-alpha02androidx.wear.protolayout:protolayout-expression:1.0.0-alpha02androidx.wear.protolayout:protolayout-proto:1.0.0-alpha02 已发布。版本 1.0.0-alpha02 包含这些提交。

新功能

  • androidx.wear.tiles:tiles 中的布局构建器将移至 androidx.wear.protolayout:protolayoutandroidx.wear.tiles:tiles 中的构建器将在接下来的某个 alpha 版本中被弃用。

版本 1.0.0-alpha01

2023 年 1 月 11 日

androidx.wear.protolayout:protolayout-expression:1.0.0-alpha01androidx.wear.protolayout:protolayout-proto:1.0.0-alpha01 已发布。版本 1.0.0-alpha01 包含这些提交。

新功能

  • 此版本引入了一个新库“ProtoLayout Expression”,用于根据动态变量创建表达式。