Wear ProtoLayout

  
此库允许定义一组 UI 布局和非 UI 表达式,以便在远程界面上进行渲染/评估。
最新更新 稳定版 候选版 Beta 版 Alpha 版
2024年11月13日 1.2.1 - - 1.3.0-alpha04

声明依赖项

要添加对 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-alpha04"

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

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

Kotlin

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

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

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

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

反馈

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

创建新的问题

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

版本 1.3

版本 1.3.0-alpha04

2024年11月13日

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

新功能

  • 更新 Material3 形状为具有保存实际角值的字段的类,与 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 包含 这些提交

新功能

  • 向测试库添加 LayoutElementAssertionsProviderLayoutElementAssertionLayoutElementMatcherId1110

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

错误修复

  • 阐明 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 的一致性。
  • 改进了 Material Text 的缩放/非缩放功能,以适应 Android 14 的非线性字体缩放。
  • 改进了所有弧形元素的 RTL 布局方向支持。

其他更改

版本 1.2.0-rc01

2024年7月24日

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

错误修复

  • 我们修复了标准 Material 芯片,以便如果未传递任何主标签或辅助标签,则可以将其用作仅图标的芯片。(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 已锁定(实验性 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 并提供快速修复。
  • 改进了 Material Text 的缩放/非缩放功能,以适应 Android 14 的非线性字体缩放。

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

错误修复

  • 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

错误修复

  • 重命名了可变字体轴的名称,从 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

错误修复

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

版本 1.2.0-alpha02

2024年5月1日

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

API 更改

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

错误修复

  • 修复了初始化期间可能出现重复平台数据的问题。(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

错误修复

  • 修复了当在文本中同时使用省略号、字母间距和居中对齐时出现的文本对齐问题。(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 的模式版本要求注释。
  • 将目标区域扩展到任何 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 版本包含这些提交。

错误修复

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

API 更改

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

错误修复

  • 添加了对设置绘制圆弧元素方向的受限 API 和渲染器支持。(Idef5a
  • 未指定时,FloatToInt32Node 中的 RoundMode 默认值为 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.visibleI56902
  • FontStyle#setSizes 现在接受 int 而不是 SpProp 参数。(I02b37

错误修复

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

1.1.0-alpha03 版本

2023年11月29日

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

新功能

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

API 更改

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

1.1.0-alpha02 版本

2023年11月15日

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

新功能

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

1.1.0-alpha01 版本

2023年10月18日

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

新功能

  • Arcline 添加了笔刷选项,并支持 SweepGradient。(Ie7ce3)
  • 添加了对时区日期时间格式化的支持。(Ibfae0)
  • 添加了时区日期时间格式化所需的 protos 和 Java 包装器。(I97126)
  • 添加了用于读取存储在 DynamicDataValue 中的值的 getter。(Ie6cea)
  • 添加了用于在 EdgeContentLayout 中定位边缘内容的 setter,以便可以在其他内容之前定位它。(Ie8e8a)

错误修复

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

1.0 版本

1.0.0 版本

2023年8月9日

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

1.0.0 版本的主要功能

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

1.0.0-rc01 版本

2023年7月26日

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

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

API 更改

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

错误修复

  • 我们添加了一个检查,如果为 SpanText 设置了 DynamicColor,则会抛出异常。(I0e5bc)
  • 已明确说明 DAILY_CALORIES 数据源单位为 kcal。(Iaa785)

1.0.0-beta01 版本

2023年6月21日

已发布 androidx.wear.protolayout:protolayout-*:1.0.0-beta011.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)

错误修复

  • 更新具有动态字段的 Prop 消息以使用oneof代替(I81739)
  • 为具有 setter 的重载方法重用 setter 实现(Ied70c)
  • 正确记录具有重载方法的 setter 中的指纹(I86ed2)

1.0.0-alpha11 版本

2023年6月7日

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

新功能

  • 我们添加了一个用于心率准确性的 PlatformDataKey。(I7f9b8)

API 更改

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

错误修复

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

1.0.0-alpha10 版本

2023年5月24日

已发布 androidx.wear.protolayout:protolayout-*:1.0.0-alpha101.0.0-alpha10 版本包含以下提交。

新功能

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

API 更改

  • FontStyles 类现在是 final 的。(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 标记为实验性 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
  • 允许在 CircularProgressIndicator 中使用 DynamicFloatFloatProp 表示进度。这受支持版本 1.2 的渲染器支持。旧的渲染器将回退到提供的 staticValue(如果提供),否则回退到 0。(I0d91b
  • MultiButtonLayout 常量已重构到 LayoutDefaults.MultiButtonLayoutDefaults 类中,该类现在包含根据布局中按钮数量而定的按钮大小。(I13973
  • 支持在材质文本中使用 DynamicStringStringProp。这受支持版本 1.2 的渲染器支持。旧的渲染器将回退到提供的静态值。将 Text#getText 的返回类型从 String 更新为 StringProp。(I7275b

1.0.0-alpha09 版本

2023 年 5 月 10 日

已发布 androidx.wear.protolayout:protolayout-*:1.0.0-alpha091.0.0-alpha09 版本包含以下提交。

新功能

  • 我们添加了一个实验性扩展布局元素。请注意,默认情况下无法使用此元素,需要能够理解布局元素的渲染器扩展。(I6581d
  • 添加了对 ArcLineStrokeCap 支持。(I94951
  • 添加了对条件瞬时操作的支持。(I489a7
  • 添加了对条件持续时间操作的支持。(Iab469
  • 添加了根据秒数创建持续时间的功能。(Ib5fa1

API 更改

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

1.0.0-alpha08 版本

2023 年 4 月 19 日

已发布 androidx.wear.protolayout:protolayout-*:1.0.0-alpha081.0.0-alpha08 版本包含以下提交。

新功能

  • 已将 AndroidTextStyle 添加到 LayoutElementBuilders。(I8d967
  • 我们添加了对在 ProtoLayout 材质文本中设置排除字体填充的支持。(I17f5d
  • 内联图像现在支持 ARGB_8888。(I18c1e
  • DynamicColor 现在支持 onCondition 操作。(I10927

API 更改

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

错误修复

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

1.0.0-alpha07 版本

2023 年 4 月 5 日

已发布 androidx.wear.protolayout:protolayout-*:1.0.0-alpha071.0.0-alpha07 版本包含以下提交。

新功能

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

API 更改

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

错误修复

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

1.0.0-alpha06 版本

2023 年 3 月 22 日

已发布 androidx.wear.protolayout:protolayout-*:1.0.0-alpha061.0.0-alpha06 版本包含以下提交。

新功能

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

API 更改

  • 已向ProtoLayoutViewInstance添加LoadActionListener。(If7806

错误修复

  • 添加了FloatNodesTestId7281
  • 修复了加载结构化位图失败时渲染器崩溃的问题。

1.0.0-alpha05 版本

2023年3月8日

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

新功能

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

API 更改

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

错误修复

  • Animator对象将被重用于单个元素的后续动画。(Ia3be9

1.0.0-alpha04 版本

2023年2月22日

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

新功能

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

API 更改

  • 传感器数据需要API 29+。(I8099e
  • 我们添加了两个launchAction辅助方法(用于启动活动)。

错误修复

  • 将Tile动画中的set/getSpec重命名为set/getAnimationSpecI3d74b

1.0.0-alpha03 版本

2023年2月8日

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

新功能

  • 我们在protolayout-express库中为动态类型添加了toByteArray()fromByteArray()
  • 我们在protolayout-expression库中为动态类型添加了toString()
  • 我们添加了对动态类型的评估支持。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-alpha021.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-alpha011.0.0-alpha01 版本包含这些提交。

新功能

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