wear protolayout

  
该库允许定义一组 UI 布局和非 UI 表达式,以便在远程界面上进行渲染/求值。
最新更新 稳定版本 版本候选版 (RC) Beta 版本 Alpha 版本
2026 年 3 月 25 日 1.4.0 - - -

声明依赖项

要添加对 wear-protolayout 的依赖,必须将 Google Maven 仓库添加到您的项目中。有关更多信息,请参阅 Google's Maven repository

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

Groovy

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

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

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

Kotlin

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

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

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

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

反馈

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

创建新问题

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

版本 1.4

版本 1.4.0

2026 年 3 月 25 日

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

自 1.3.0 以来的重要变更

新功能

  • Wear ProtoLayout 1.4.0-beta01 版本的发布表明该库的功能已完成,且 API 已锁定(标记为实验性的除外)。Wear ProtoLayout 1.4 包含以下新功能和 API:
    • 内联图像资源与性能改进: 引入了一种改进的资源处理概念,其中 ImageResource 可以直接内联在布局本身中。
    • Material3TileService: 引入了一个新的、对 Kotlin 友好的服务,用于创建卡片(Tiles)。它通过提供一个单一的挂起函数(suspend function)来返回卡片布局和资源,从而简化了开发。它会自动管理 MaterialScopeProtoLayoutScope,以实现更好的资源处理和更快的卡片加载性能。
    • 卡片预览更新: 卡片预览工具已更新,支持新的 ProtoLayoutScope 自动资源处理,确保预览能够正确反映内联资源,无需额外配置。
    • 多项 Kotlin DSL 改进:Tile 和构建卡片所需的所有其他 API(如 Timeline)添加了专门的 Kotlin 辅助工具,以改善 Kotlin 开发者的体验。
    • 动态服务切换: 引入了 METADATA_GROUP_KEY,允许开发者在清单文件中对多个 TileService 实例进行分组。这使得在新 OS 版本中,可以实现代表相同卡片的不同服务之间的动态切换。
    • 更新中的卡片 ID: 开发者现在可以在更新请求中指定特定的 tileId,从而更细致地控制刷新哪些卡片实例。
    • 提高编译 SDK 要求: 为了支持新的 Material3TileService 和高级资源处理,compileSdk 版本要求已提高至 35
    • ANR 防护: 将卡片更新请求期间的解绑逻辑移至后台线程,以防止“应用程序无响应”(ANR)错误。
    • 针对心率数据的正确 RequiresPermission 注解: 从 API 36 开始,调用 PlatformHealthSources.heartRateBpmPlatformHealthSources.heartRateAccuracy 需要向调用 App 授予 android.health.connect.HealthPermissions.READ_HEART_RATE 权限。

版本 1.4.0-rc02

2026 年 3 月 11 日

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

API 变更

  • 从 API 36 开始,访问心率数据(例如通过带有 PlatformHealthSources.heartRateBpmPlatformHealthSources.heartRateAccuracyProtoLayout 表达式库)需要向调用 App 授予 android.health.connect.HealthPermissions.READ_HEART_RATE 权限。

版本 1.4.0-rc01

2026 年 2 月 25 日

androidx.wear.protolayout:protolayout-*:1.4.0-rc01 已发布,相较前一版本无更改。1.4.0-rc01 版本包含这些提交

版本 1.4.0-beta01

2026 年 2 月 11 日

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

新功能

Wear ProtoLayout 1.4.0-beta01 版本的发布表明该库的功能已完成,且 API 已锁定(标记为实验性的除外)。Wear ProtoLayout 1.4 包含以下新功能和 API:

  • 内联图像资源与性能改进: 引入了一种改进的资源处理概念,其中 ImageResource 可以直接内联在布局本身中。
    • 这显著简化了开发过程,无需在 onTileResourcesRequest 中进行手动资源映射并覆盖该方法。
    • 这显著提高了卡片的加载时间,因为无需进行两次 Binder 调用,只需实现 onTileResourcesRequest 方法即可。
    • 所有 Image API 现在都通过提供接受负责此操作的 ProtoLayoutScope 的新方法来支持这一概念。
  • Material3 作用域与资源自动注册: 添加了 materialScopeWithResources 以支持带有内联图像资源的 Material3 MaterialScope 概念。此作用域处理自动资源注册,并包含新的图像辅助方法(backgroundImageavatarImageicon),以简化组件的使用。

    • 简化的代码片段

      materialScopeWithResources(
      context = context,
      deviceConfiguration = deviceParameters,
          protoLayoutScope = protoLayoutScope) {
        primaryLayout(
        // layout setup here
      iconContent = { **icon**(
      **imageResource**(
      **androidImageResource**(R.drawable.myIcon)))})
      //…
      }
      
  • PendingIntent 支持: 添加了对卡片 PendingIntent 的支持。PendingIntent 可点击项接受回退操作(LoadActionLaunchAction)。这确保了如果 ProtoLayout 渲染器版本较旧且不支持 PendingIntent,系统会自动使用有效的回退操作。

  • 多项 Kotlin DSL 改进

    • Image 和所有 ImageResources 类型添加了专门的 Kotlin 辅助工具,以改善 Kotlin 开发者的体验。
    • 为容器类型(如 BoxRowColumn 等)添加了辅助工具,使其更符合现代 Android 开发习惯。
    • 添加了新的 Kotlin Transformation 修饰符和用于淡入动画的辅助方法。
  • 自定义 Lottie 动画:AndroidLottieResourceByResId 中添加了 API,允许通过属性自定义 Lottie 动画,并添加了具体的支持和 API,用于基于槽位 ID 和指定颜色为槽位创建主题属性。

  • 环境模式感知: 添加了一个新的平台事件源 isInAmbientMode,允许布局根据设备是否处于环境模式做出反应并更新表达式。

API 变更

  • Material3 图像辅助工具: 弃用了现有的 Material3 图像辅助工具,转而使用利用 ProtoLayoutScope 和新的内联资源处理方式的新重载方法。
  • MaterialScope 更新: MaterialScope 中的 protoLayoutScope 字段现在为 NonNull,以便在通过 materialScopeWithResources 创建时更易于使用。添加了一个新的 hasProtoLayoutScope 函数来检查其是否存在。MaterialScope 现在还公开了 Context 的公共字段。
  • 语义标题(Semantics heading) 作为 API 在 LayoutModifier 中可用。
  • 圆弧方向支持: ARC_DIRECTION_* 常量现在已公开,可用于 Arc/ArcLine/ArcText/DashedArcLine 元素。

Bug 修复

  • 资源比较: 通过为比较资源类型实现优化的 hashequals 方法,优化了性能。
  • 为单槽位 textButton 应用默认内容描述。
  • 修复了在渲染器侧调整最大行数的计算。

版本 1.4.0-alpha05

2026 年 1 月 28 日

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

API 变更

Bug 修复

  • 通过从 TileService 中移除有状态的 ProtoLayoutScope,我们解决了资源处理的问题。(I5dc0ab/474614772

版本 1.4.0-alpha04

2026 年 1 月 14 日

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

API 变更

  • 我们弃用了 Material3 图像辅助工具,转而使用新的利用 ProtoLayoutScope 的重载方法,以及更好的资源处理概念(其中 ImageResource 可以直接内联在布局中,无需在 onTileResourcesRequest 方法中进行映射)。为了获得最佳体验,请将其与 Wear Tiles 1.6-alpha04 版本中添加的 androidx.wear.tiles.Material3TileService 一起使用。(I8198cb/440376391

版本 1.4.0-alpha03

2025 年 12 月 17 日

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

Bug 修复

  • 现在使用优化的哈希和相等性方法来比较两种资源类型,以实现更好的资源处理和性能改进。(82f21b2f

版本 1.4.0-alpha02

2025 年 10 月 22 日

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

新功能

  • 添加了新的平台事件源 (isInAmbientMode),描述设备是否处于环境模式。(Ief832

API 变更

  • PendingIntent 可点击项现在接受回退操作(LoadAction/LaunchAction),当 ProtoLayout 渲染器不支持 PendingIntent 时使用。当渲染器版本低于支持 PendingIntent 的版本时,回退操作将自动被拾取并放入布局中。(I6eee2b/450259727
  • MaterialScope 中的 protoLayoutScope 字段现在设为 NonNull,以便在通过 materialScopeWithResources 创建时更易于使用。此外,添加了一个 hasProtoLayoutScope 函数来检查其是否存在。(I1858fb/450067019

版本 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 概念,同时也负责自动资源注册。在其中,添加了新的图像辅助方法(backgroundImageavatarImageicon),使用时无需手动在 onTileResourceRequest 中注册资源。(I525bdb/428692714
  • ProtoLayout Kotlin 辅助工具,用于配合 ProtoLayoutScope 和自动资源注册使用 ImageImageResources。(Iada82b/430584304
  • 添加了用于获取一个 Lottie 动画自定义中允许有多少 Lottie 属性的 getter。(I73733b/436532706
  • AndroidLottieResourceByResId 中添加 API 以允许通过属性自定义 Lottie 动画,并添加用于通过槽位 ID 将槽位主题化为指定颜色的属性创建 API。(I301b3b/423581481
  • 添加接收 PendingIntent 作为点击操作的提供者 API。(I01978b/433802488
  • Image.Builder 中添加新 API - setImageResource,用于在 onTileRequest 中直接为 Image 设置资源对象,而无需在 onTileResourcesRequest 中注册映射。(Ifa69ab/428693523
  • 添加了 ProtoLayoutScope 概念,为 Tiles 中更好的资源处理做准备。(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,用于处理所有既定的默认设置并简化自定义。
    • iconEdgeButton, textEdgeButton
    • iconButton, textButton, button, imageButton, avatarButton, compactButton
    • titleCard, appCard, graphicDataCard, iconDataCard, textDataCard
    • circularProgressIndicator, segmentedCircularProgressIndicator
    • primaryLayout, buttonGroup
    • 所有组件均可在任何 SDK 级别和 ProtoLayout 渲染器版本上运行,并在适用时提供合理的后备方案。
  • 为基础 ProtoLayout 元素提供更友好的 Kotlin 和类 Compose API。
    • LayoutModifier,能够以链式函数的形式添加大多数修饰符(paddingcontentDescription(包括 clearSemantics)、backgroundclipopacity 等),并可转换为现有的 Modifiers 对象。
    • LayoutColorsLayoutString 作为类型,支持更容易地使用动态字段和约束。
    • textfontStyle
    • StateBuilder 提供更好的映射支持,包括 DynamicDataMap 和工厂方法(如 intAppDataKey),以更轻松地创建 AppDataKey 对象。
  • 支持 Lottie 动画,包括设置不同触发选项(例如当布局加载时或可见时开始动画)。
    • 改进了渐变支持。
    • Brush 的一部分线性渐变 API,可用于 Box, Spacer 等元素的 Background 修饰符……
    • 允许在用于线性渐变和扫描渐变的 ColorStop 中使用动态颜色值。
    • 弧形对象中现有的扫描渐变(Sweep Gradient)现在支持动态颜色以及起始和结束角度。
  • protolayout-expression 中的平台数据绑定,用于在布局可见性发生变化时随时接收信息,例如可用于在滑动卡片时隐藏布局的某些部分。
  • 测试库 - protolayout-testing - 已添加,旨在为任何 ProtoLayout 元素提供更轻松的单元测试覆盖。
  • 新元素 DashedArcLine,具有改进的功能集,使得线条可以带有虚线,与现有的 ArcLine 不同。
  • ArcSpacer 支持以 DP 维度而不是度数来设置其长度。
  • 添加了适用于某些字体的圆度(roundness)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
  • Text, Spacer, ArcLineDashedArcLine 构建器如果未设置动态值的 layoutConstraints,将不会抛出异常。请注意,较旧的渲染器仍然需要设置 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 已锁定(标记为实验性的除外)。Wear ProtoLayout 1.3 包含以下新功能和 API:

  • Material 3 设计进入手表领域,组件和布局针对圆形显示屏进行了优化,并可从小到大屏幕尺寸进行适度缩放。
    • 这包括仅限 Kotlin 的 protolayout-material3 库,其中包含更多类似 Compose 的 API,适用于以下组件和功能:
    • 来自系统和表盘的动态配色方案,具有最新的 Material3 颜色、形状和排版主题。
    • MaterialScope,用于处理所有既定的默认设置并简化自定义。
    • iconEdgeButton, textEdgeButton
    • iconButton, textButton, button, imageButton, avatarButton, compactButton
    • titleCard, appCard, graphicDataCard, iconDataCard, textDataCard
    • circularProgressIndicator, segmentedCircularProgressIndicator
    • primaryLayout, buttonGroup
    • 所有组件均可在任何 SDK 级别和 ProtoLayout 渲染器版本上运行,并在适用时提供合理的后备方案。
  • 为基础 ProtoLayout 元素提供更友好的 Kotlin 和类 Compose API。
    • LayoutModifier,能够以链式函数的形式添加大多数修饰符(paddingcontentDescription(包括 clearSemantics)、backgroundclipopacity 等),并可转换为现有的 Modifiers 对象。
    • LayoutColorsLayoutString 作为类型,支持更容易地使用动态字段和约束。
    • textfontStyle
    • StateBuilder 提供更好的映射支持,包括 DynamicDataMap 和工厂方法(如 intAppDataKey),以更轻松地创建 AppDataKey 对象。
  • 支持 Lottie 动画,包括设置不同触发选项(例如当布局加载时或可见时开始动画)。
    • 改进了渐变支持。
    • Brush 的一部分线性渐变 API,可用于 Box, Spacer 等元素的 Background 修饰符……
    • 允许在用于线性渐变和扫描渐变的 ColorStop 中使用动态颜色值。
    • 弧形对象中现有的扫描渐变(Sweep Gradient)现在支持动态颜色以及起始和结束角度。
  • protolayout-expression 中的平台数据绑定,用于在布局可见性发生变化时随时接收信息,例如可用于在滑动卡片时隐藏布局的某些部分。
  • 测试库 - protolayout-testing - 已添加,旨在为任何 ProtoLayout 元素提供更轻松的单元测试覆盖。
  • 新元素 DashedArcLine,具有改进的功能集,使得线条可以带有虚线,与现有的 ArcLine 不同。
  • ArcSpacer 支持以 DP 维度而不是度数来设置其长度。
  • 添加了适用于某些字体的圆度(roundness)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
  • ButtonColors, CardColorsProgressIndicatorColors 现在支持 copy 方法,并可选择覆盖某些参数。(Ie2054

API 变更

  • 向测试库添加动态数据绑定支持。(Ib98de
  • 修复了 imageButtonbackgroundImage 函数一起使用时的问题,移除了遮罩。此外,允许 backgroundImage 函数指定 null 作为遮罩颜色,意味着不会应用遮罩。(Ibec3c

Bug 修复

  • 将默认的 hasValueOfType 方法更改为抛出 UnsupportedOperationException 而不是 IllegalArgumentException。(Ia36c3
  • 默认颜色标记值已更新以反映最新规范。(I75d44
  • 修复了 AndroidX tiles 渲染器中圆弧线条上可见的混叠问题。(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
  • 我们向 Material3 ProtoLayout ColorScheme 添加了 errorDim,用于高优先级错误或紧急操作,例如安全警报。(Ia17bb
  • 我们添加了一个防护措施,防止在访问全局 reducemotion 设置时发生崩溃,这在某些未提供该设置的平台上会被触发。(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
  • 添加了 border, visibilityopacity 修饰符。(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 textButton 组件。(Id680d
  • 添加 iconButton ProtoLayout Material3 组件。(Ica3f0
  • 添加了 ProtoLayout Material3 按钮容器组件。(I17a38
  • 向 protolayout-material3 添加了对可链式语义修饰符的支持。(I4af62
  • 添加了 ProtoLayout Material3 单分段 CircularProgressIndicator。(I2c8a2
  • 添加了 padding,metadata 修饰符。(I8720a
  • 添加了 background,clipclickable 修饰符。(I35478
  • LinearGradient 添加到 Brush,并允许将其用于 Background 修饰符。(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 注解,它们是类型使用的。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 版本包含这些提交

新功能

  • 向测试库添加 LayoutElementAssertionsProvider, LayoutElementAssertionLayoutElementMatcher。(Id1110

版本 1.3.0-alpha02

2024 年 10 月 16 日

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

新功能

  • Material 3 库的初始版本。包括 text, edgeButton, buttonGroupprimaryLayout 组件。

安全修复

  • 截至此更改,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 字体。
  • 额外修饰符支持
  • Transformation 修饰符,提供带或不带动画的平移、旋转和缩放。
  • 为每个圆角半径指定不同的值(水平和垂直)。
  • 提高了所有触摸目标的无障碍性,将任何使用 Clickable 修饰符的元素的可点击区域扩展到至少 48dp x 48dp
  • 通过添加 setResponsiveContentInsetEnabled 改进了 PrimaryLayoutEdgeContentLayout,以更好地支持这些布局在不同屏幕尺寸上的响应式行为,并提高卡片的一致性。
  • 改进了 Material Text 针对 Android 14 非线性字体缩放的缩放/非缩放支持。
  • 改进了对所有圆弧元素上 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 的平移、旋转和缩放。这些转换可以使用动态值进行动画处理。
  • 为所有圆弧元素(Arc, ArcLineArcText)添加了带有 Clockwise, CounterClockwiseNormal 选项的 setArcDirection,以便在不同的布局方向(如 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 版本包含这些提交

    新功能

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

    API 变更

    • FontFamily 常量被移动到 FontStyle 中,而不是其构建器类中。(I06ced
    • 更新 FontSetting.weightFontSetting.width API 以包含范围注解,并将 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 合并到另一个中。(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 元素现在可以选择添加 ArcDirection (Clockwise, CounterclockwiseNormal)。将此行为添加到 Arc, ArcLineArcText 将修复它们在 RTL 布局上的行为。(I90699
    • EdgeContentLayout 已更新,带有新的 setResponsiveContentInsetEnabled 设置器,以实现与 UX 指南更好的对齐,通过在顶部固定位置放置主标签并在标签上实现响应式插图,从而在卡片中保持一致性。(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 的模式版本要求注解。
    • 将任何 Clickable 元素的目标区域扩展到 48 dp x 48 dp,以满足无障碍要求。
    • 默认情况下关闭字体内边距,这是所有 Text 元素和包含文本的 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 现在通过添加带有 BrushSweepGradientBrush 来支持渐变,并在端点上带有阴影,以更好地表示大于 360 度的长度(通过在现有的 StrokeCap 上添加 Shadow)。
    • 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 和相关的设置器已从公共 API 中删除。并进行了以下错误修复:
    • 为在 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 计划,我们现在在所有 Text 元素上默认关闭了字体内边距。此外,AndroidTextStyle 和相关的设置器已从公共 API 中删除。(I79094, Ib0b03, I32959, Iaf7d5, Ifa298, I0a4ae, Ida9d3
    • Modifier.hiddenModifier.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
    • 添加辅助方法 DimensionBuilders.weight,用于构建带权重的 ExpandedDimensionProp。(I4f72b
    • DynamicInstantDynamicDuration 可用作状态或平台数据类型。(I6819f

    API 变更

    • 更新 API 以隐藏 DynamicZonedDateTime,并将其所有操作移至 DyanamicInstantI34b94
    • 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 中添加对 Sweep Gradient 的渲染器支持。(I4d5bb)

    版本 1.1.0-alpha01

    2023年10月18日

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

    新功能

    • Arcline 添加了画笔(brush)选项,并支持 SweepGradient。(Ie7ce3
    • 添加了对带时区的日期时间格式化的支持。(Ibfae0
    • 添加了带时区的日期时间格式化所需的原型(protos)和 Java 包装器。(I97126
    • 添加了用于读取 DynamicDataValue 中存储的值的 getter。(Ie6cea
    • EdgeContentLayout 添加了一个用于定位边缘内容的 setter,使其可以放置在其他内容之前。(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 来支持平台数据绑定(以实现更快的磁贴数据更新)和动画。

    版本 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 布局允许的最大嵌套 LayoutElements 深度限制为 30 层。(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 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 设为最终类(final class)(I408ca
    • TimeGateway 接口已在 protolayout-expression-pipeline 库中被 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

    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 嵌套接口。Builder 的实现已由 LoadActionLaunchAction 类提供。(I1d70c
    • 允许在 FloatProp 中使用 DynamicFloat。请注意,FloatProp 不需要布局约束,因为它不用作布局更改属性。(I286ac
    • LoalActionSetStateAction 操作已被移除,因为它们实际上尚未得到支持。(I5d6a6
    • 添加了对内联图像资源的 ARGB_8888 格式的支持。(I8a07c
    • StateEntryValue 重命名为 DynamicDataValue,并更新状态 API 以使用 DynamicDataKeyIf1c01
    • 我们正在限制 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 以在表达式管道中的节点需要提供程序的受支持键时向其注册。(Ib616a
    • SensorGateway 不再是 Closeable,因为它不再维护任何状态。(I6b4f7
    • 允许在 CircularProgressIndicator 中对进度使用带 DynamicFloatFloatProp。这受支持 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
    • 添加了对条件 Instant 操作的支持。(I489a7
    • 添加了对条件 Duration 操作的支持。(Iab469
    • 添加了对从秒创建持续时间的支持。(Ib5fa1

    API 变更

    • enable/disablePlatformSource 方法已从 DynamicTypeEvaluator 中移除。调用者应负责更新。(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
    • 整数和浮点数格式化程序现在使用 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 修复

    • 添加 FloatNodesTestId7281
    • 修复渲染器在无法加载结构化位图时的崩溃问题。

    版本 1.0.0-alpha05

    2023 年 3 月 8 日

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

    新功能

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

    API 变更

    • 我们为 Repeatable 添加了 forwardRepeatDelayMillisreverseRepeatDelayMillis。我们还将 AnimationSpec 中的 delayMillis 重命名为 startDelayMillisIfb266
    • DynamicTypeEvaluator.bind 方法现在接受 Executor。(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 修复

    • 在 Tiles 动画中将 set/getSpec 重命名为 set/getAnimationSpecI3d74b

    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: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”的新库,用于从动态变量创建表达式。