wear protolayout

  
此库允许定义一组将在远程 Surface 上呈现/评估的界面布局和非界面表达式。
最近更新时间 稳定版 候选版 Beta 版 Alpha 版
2025 年 9 月 24 日 1.3.0 - - 1.4.0-alpha01

声明依赖项

如需添加 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")
}

如需详细了解依赖项,请参阅添加 build 依赖项

反馈

您的反馈将帮助我们改进 Jetpack。如果您发现了新问题,或对此库有任何改进建议,请告诉我们。创建新问题前,请先查看此库中的现有问题。您可以点击星标按钮,为现有问题投票。

创建新问题

如需了解详情,请参阅问题跟踪器文档

版本 1.4

版本 1.4.0-alpha01

2025 年 9 月 24 日

发布了 androidx.wear.protolayout:protolayout-*:1.4.0-alpha01。版本 1.4.0-alpha01 中包含这些提交内容

新功能

  • LayoutModifier 添加了辅助方法,该方法可使元素在相应功能块变得可见时淡入。(I38531b/390345969
  • 添加了 materialScopeWithResources 以支持 M3 MaterialScope 概念,该概念还负责自动资源注册。在其中,为图片(backgroundImageavatarImage 和图标)添加了新的辅助方法,这样在使用时就无需在 onTileResourceRequest 中手动注册资源。(I525bdb/428692714
  • ProtoLayout 适用于 ImageImageResources 的 Kotlin 辅助程序,用于 ProtoLayoutScope 和自动资源注册。(Iada82b/430584304
  • 添加了 getter,用于获取在自定义单个 Lottie 动画时允许的 Lottie 属性数量。(I73733b/436532706
  • AndroidLottieResourceByResId 中添加了 API,以允许通过属性自定义 Lottie 动画;并添加了 API,以创建主题化 slot 的属性,并将 slot ID 设置为指定颜色。(I301b3b/423581481
  • 添加了提供程序 API,用于接受 PendingIntent 作为点击操作(I01978b/433802488
  • Image.Builder - setImageResource 中添加了新的 API,可将资源对象直接设置为 onTileRequest 中的图片,而无需在 onTileResourcesRequest 的映射中注册该资源对象。(Ifa69ab/428693523
  • 添加了 ProtoLayoutScope 概念,以便在 Tile 中更好地处理资源。(I132ceb/428692423
  • ProtoLayout Material3 MaterialScope 现在将 Context 字段公开,以便在作用域内的方法中使用,而无需传递它。(I0e5ccb/414559956
  • 将标题语义 API 公开(I75299b/413653475
  • 公开 ARC_DIRECTION_* 常量以供 Arc/ArcLine/ArcText/DashedArcLine 使用。(I83959b/427556439

API 变更

  • 我们已弃用 Image.Builder()Image.Builder.setResourceId 方法,转而使用新的自动资源注册 API,该 API 可在 Image.Builder(ProtoLayoutScope)Image.Builder.setImageResource API 中使用,无需替换 onTileResourcesRequest。(I7bfe6b/432758526
  • 将用于创建 ProtoLayoutScope 的 API 从受限移至公开。不过,它们不应被使用,因为系统已处理这些调用。(I1d8e8b/432758251

bug 修复

版本 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
    • LayoutModifier,能够以链式函数(paddingcontentDescription [包括 clearSemantics]、backgroundclipopacity 等)的形式添加大多数修饰符,可转换为现有的 Modifiers 对象
    • LayoutColorsLayoutString 作为类型,可更轻松地支持使用动态字段和限制
    • textfontStyle
    • 更好地支持 StateBuilder 的映射,包括 DynamicDataMap 和工厂方法(例如 intAppDataKey),以便更轻松地创建 AppDataKey 对象
  • Lottie 动画支持包括以下选项:设置动画应何时开始的不同触发器,例如在加载布局时或在布局变为可见时
    • 改进了梯度支持:
    • 作为 Brush 的一部分的线性渐变 API,可用于 Background 修饰符中的元素,例如 BoxSpacer 等。…
    • 允许在用于线性渐变和扫描渐变的 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)
  • 如果未设置动态值的 layoutConstraintsTextSpacerArcLineDashedArcLine 构建器不会抛出异常。请注意,旧版渲染器仍需要设置 layoutConstraints,并且会忽略未设置该属性的任何动态值。(Ic52e8)
  • 添加标题语义修饰符,以指示布局元素是内容部分的标题,用于实现无障碍功能,并默认将 primaryLayout 的标题 slot 中的文本标记为无障碍标题。(Iae1fb)
  • primaryLayout 进行最终的界面润饰,其中标题 slot 和主 slot 之间的空间在较小的屏幕上从 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 已锁定的库(标记为实验性的除外)。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
    • LayoutModifier,能够以链式函数(paddingcontentDescription [包括 clearSemantics]、backgroundclipopacity 等)的形式添加大多数修饰符,可转换为现有的 Modifiers 对象
    • LayoutColorsLayoutString 作为类型,可更轻松地支持使用动态字段和限制
    • textfontStyle
    • 更好地支持 StateBuilder 的映射,包括 DynamicDataMap 和工厂方法(例如 intAppDataKey),以便更轻松地创建 AppDataKey 对象
  • Lottie 动画支持包括以下选项:设置动画应何时开始的不同触发器,例如在加载布局时或在布局变为可见时
    • 改进了梯度支持:
    • 作为 Brush 的一部分的线性渐变 API,可用于 Background 修饰符中的元素,例如 BoxSpacer 等。…
    • 允许在用于线性渐变和扫描渐变的 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 背景修饰符中添加了 Brush 的辅助程序。(I995de)
  • MaterialScope 中,强制性 Android Context 字段已公开,以便在为 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)
  • 我们添加了针对访问全局 reduceMotion 设置时发生崩溃的保护措施,该崩溃是在未提供该设置的某些平台上触发的。(I01e2c)

API 变更

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

bug 修复

  • 允许在 ColorStop 中使用动态值,也允许在 SweepGradient 中使用起始角度/结束角度。(I0146d)
  • Google 文档修复。(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)
  • 移除了 Material 3 中的非 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 textButton 组件。(Id680d)
  • 添加了 iconButton ProtoLayout Material3 组件。(Ica3f0)
  • 添加了 ProtoLayout Material3 按钮容器组件。(I17a38)
  • 为 protolayout-material3 添加了对可链式语义修饰符的支持 (I4af62)
  • 添加了 ProtoLayout Material3 单段 CircularProgressIndicator (I2c8a2)
  • 添加了 paddingmetadata 修饰符 (I8720a)
  • 添加了 backgroundclipclickable 修饰符 (I35478)
  • 向 Brush 添加了 LinearGradient,并允许在 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 nullness 注解,这些注解属于 type-use 类型。Kotlin 开发者应使用以下编译器实参来强制执行正确用法:-Xjspecify-annotations=strict(这是 Kotlin 编译器从 2.1.0 版开始的默认实参)。(Id1f9bb/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,以便更好地支持这些布局在不同屏幕尺寸下的响应式行为,并提高功能块的一致性。
  • 改进了 Material Text 的缩放/非缩放,以支持 Android 14 的非线性字体缩放。
  • 改进了对所有弧形元素的 RTL 布局方向的支持。

其他更改

  • 如需查看版本 1.1.0 中引入的更完整的变更集,请参阅 beta01 版本说明

版本 1.2.0-rc01

2024 年 7 月 24 日

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

bug 修复

  • 我们已修复标准 Material Chip,因此,如果未传入任何主要或次要标签,则该 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,通过指定要使用的首选字体系列名称来支持即将推出的灵活字体。
  • 扩展了 Corner 修饰符,以支持使用单独的水平值和垂直值指定每个 CornerRadius,从而允许构建具有不对称圆角的元素。
  • 添加了新的 Transformation 修饰符,用于提供 LayoutElement 的平移、旋转和缩放功能。这些转换可以通过使用动态值来实现动画效果。
  • 为所有弧形元素(ArcArcLineArcText)添加了 setArcDirection,并提供 ClockwiseCounterClockwiseNormal 选项,以便更好地支持不同的布局方向(例如 LTR 和 RTL)。
  • 通过将使用 Clickable 修饰符的任何元素的可点按区域扩展为至少 48dp x 48dp,提高了所有触摸目标的无障碍性。
  • 通过添加 setResponsiveContentInsetEnabled 改进了 PrimaryLayoutEdgeContentLayout,以便更好地支持这些布局在不同屏幕尺寸下的响应式行为,并提高功能块的一致性。添加了 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)

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)
  • 已从 ArcModifiers 中移除了转换 API,因为它们不支持该功能 (Ic0827)
  • ArcDirectionProp 构建器现在需要在构造函数中提供一个值。(I76ada)
  • PlatformDataValues.Builder.putAll 方法可用于将一个 PlatformDataValue 合并到另一个 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 规则,用于在 PrimaryLayout 未与 setResponsiveContentInsetEnabled 搭配使用时报告警告,并提供快速修复。(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,以便更好地与用户体验指南保持一致,并通过将主要标签放在顶部固定位置和为标签设置自适应边衬区,实现 Tile 的一致性。(I60175)
  • 我们添加了 PrimaryLayout.setResponsiveContentInsetEnabled,用于在此布局中向主标签、次级标签和底部条状标签添加自适应边衬区,以避免内容超出屏幕边缘。(I0c457)
  • 添加了从 CircularProgressIndicator 中移除外部边距的方法,以便将其用作较小的组件。(I55c06)

API 变更

  • 现在,图块渲染器默认排除所有文本元素的字体内边距,且不提供包含字体内边距的选项。(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 添加了架构版本要求注释。
  • 将任何 Clickable 元素的目标区域扩展到 48 dp x 48 dp,以满足无障碍功能要求。
  • 字体内边距默认处于关闭状态,这是所有 Text 元素和包含文字的 Material 组件的唯一行为。

其他更改

  • 如需查看版本 1.1.0 中引入的更完整的变更集,请参阅 beta01 版本说明

版本 1.1.0-rc01

2024 年 1 月 24 日

发布了 androidx.wear.protolayout:protolayout-*:1.1.0-rc01版本 1.1.0-rc01 中包含这些提交内容

bug 修复

  • 启用更新后立即出现 PlatformTimeUpdateNotifierImpl 标记。(I77145)
  • 已针对 RTL 布局修复 CircularProgressIndicator。从现在开始,无论在何种情况下,它都会顺时针旋转。(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 元素停用字体内边距。此外,还从公共 API 中移除了 AndroidTextStyle 和相关设置器,并进行了以下 bug 修复:
  • EdgeContentLayout 中添加了一个用于定位边缘内容的 setter,以便在其他内容之前定位边缘内容。
  • 在遇到无法识别的枚举值时始终抛出异常。
  • 当表达式产生无效的数值(NaN 或无限值)或抛出 ArithmeticException 时,使表达式的结果无效。

API 变更

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

bug 修复

  • 添加了受限 API 和渲染器支持,用于设置绘制弧形元素的方向。(Idef5a)
  • 如果未指定,RoundModeFloatToInt32Node 中默认为 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 计划之后,我们现在已默认对所有 Text 元素停用字体内边距。此外,还从公共 API 中移除了 AndroidTextStyle 和相关的 setter。(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 添加了架构版本要求注释 (I0f03c)
  • TextOverflow 中添加了新选项,用于扩展 API,以便在固定父容器中对文本进行省略号处理,即使未达到最大行数(但没有足够的空间容纳文本)也是如此。(I110a9)
  • 添加了用于构建带权重的 ExpandedDimensionProp 的辅助方法 DimensionBuilders.weight。(I4f72b)
  • DynamicInstantDynamicDuration 可用作状态或平台数据类型。(I6819f)

API 变更

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

版本 1.1.0-alpha02

2023 年 11 月 15 日

发布了 androidx.wear.protolayout:protolayout-*:1.1.0-alpha02版本 1.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-alpha01版本 1.1.0-alpha01 中包含这些提交内容

新功能

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

bug 修复

  • 修复了以下问题:当表达式具有多个时间数据源注册时,不会立即更新。(I8e1a8)
  • 修复了在差异更新期间使根元素居中的 bug。(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。例如,功能块库使用这些 API 来支持平台数据绑定(以便更快地更新功能块数据)和动画。

版本 1.0.0-rc01

2023 年 7 月 26 日

发布了 androidx.wear.protolayout:protolayout-*:1.0.0-rc01版本 1.0.0-rc01 中包含这些提交内容

  • 如需从 Tile 迁移到 ProtoLayout,请按照此处的说明操作。

API 变更

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

bug 修复

  • 我们添加了一项检查,如果已为 SpanText 设置 DynamicColor,则抛出异常。(I0e5bc)
  • 明确了 DAILY_CALORIES 数据源单位为千卡。(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 int 常量直接用于 DynamicHeartRateAccuracy.constant()DynamicHeartRateAccuracy.dynamicDataValueOf(),而不是值常量。(I82ff5)
  • PlatformHealthSources.Constants 类可实例化,这是一个错误。此问题现已修复。(Icb849)
  • PlatformTimeUpdateNotifier#setReceiver 现在接收 Runnable 而不是 Supplier 函数和 Executor 来进行通知。(I9d938)
  • 我们已将 PlatformTimeUpdateNotifier#setReceiver 中的参数类型从 Callable 更改为 Supplier。(I664bf)
  • CompactChipTitleChip 现在支持向其中添加图标。(I5a01e)

bug 修复

  • 更新了具有动态字段的 Prop 消息,以使用 oneof 代替 (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)
  • 为所有 chip 组件添加了用于完美对齐标签的 setter。所有 chip 现在都应用了最小可点按目标。(I8ae92)
  • LayoutDefaults#BUTTON_MAX_NUMBER 已重命名为 MAX_BUTTONS。(I84788)
  • DAILY_DISTANCE 重命名为 DAILY_DISTANCE_M。(I4f758)

bug 修复

  • 更新了属性类型文档,以阐明为何强制使用静态值。指定未提供静态值时使用的默认值。(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 类已提供构建器的实现。(I1d70c)
  • 允许将 DynamicFloatFloatProp 搭配使用。请注意,FloatProp 不需要布局限制,因为它不作为布局更改属性使用。(I286ac)
  • 移除了 LoalActionSetStateAction 操作,因为它们尚未真正获得支持。(I5d6a6)
  • 为内嵌图片资源添加了对 ARGB_8888 格式的支持。(I8a07c)
  • StateEntryValue 重命名为 DynamicDataValue,并更新状态 API 以使用 DynamicDataKey (If1c01)
  • 我们限制了 StateStore 中允许的条目数量,以确保每个 StateStore 实例的内存用量和状态更新时间都得到妥善控制。因此,开发者需要确保映射中的条目不超过 MAX_STATE_ENTRY_COUNT 个,否则在创建或更新 StateStore 时会收到 IllegalStateException。(Ibadb3)
  • 隐藏了 OnLoadTriggerOnConditionMetTrigger 类,并将 setTrigger 重命名为 OnConditionMetTriggersetCondition。(Ibf629)
  • 出于性能和兼容性方面的考虑,ProtoLayout 渲染器不支持 AnimatedVectorDrawable 资源中的全套功能。在确定支持的 API 集之前,我们会将这些 API 标记为实验性。(Ic6daf)
  • 为每日距离、每日卡路里和每日攀爬楼层数添加了动态类型。平台健康类内容来源的密钥现在位于 PlatformHealthSources.Keys 下 (Ib7637)
  • Easing.cubicBezier 方法取代了 CubicBezierEasing.Builder。这样一来,EasingFunction 类就被移除了,并且现在可以直接从 Easing 接口访问该类中的缓动常量。此外,setInfiniteRepeatable 已替换为 INFINITE_REPEATABLE_WITH_RESTARTINFINITE_REPEATABLE_WITH_REVERSE (Ib41e7)
  • 实现 PlatformDataProvider 以提供心率和每日步数。从公共 API 中移除了 SensorGateway 接口。(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)
  • ArcLine 添加了 StrokeCap 支持。(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-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)
  • 整数和浮点数格式化程序现在使用构建器模式。(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)
  • 我们已为边框和背景添加 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 方法现在接受执行器。(I346ab)
  • 我们在 BoundDynamicType 中添加了 startEvaluation 方法,以便在绑定动态类型后触发评估。(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 触发器。这些可用于启动支持触发器的动画。
  • 我们为扩展维度添加了布局权重,并为封装维度添加了最小尺寸。
  • 我们添加了时长和即时动态类型。这些函数可用于在动态表达式中表示时间点或时长。
  • 我们添加了对 AnimatedVectorDrawableSeekableAnimatedVectorDrawable 作为布局资源的支持。

API 变更

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

bug 修复

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

版本 1.0.0-alpha03

2023 年 2 月 8 日

发布了 androidx.wear.protolayout:protolayout-*:1.0.0-alpha03版本 1.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-alpha02版本 1.0.0-alpha02 中包含这些提交内容

新功能

  • androidx.wear.tiles:tiles 中的布局构建器正在迁移至 androidx.wear.protolayout:protolayout。在下一 Alpha 版中,androidx.wear.tiles:tiles 中的布局构建器将被废弃。

版本 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”的新库。