wear protolayout
| 最新更新 | 稳定版本 | 版本候选版 (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 以来的重要变更
- 有关 1.3.0 以来的更改详情,请参阅 1.4.0-beta01 版本说明。
新功能
- Wear ProtoLayout 1.4.0-beta01 版本的发布表明该库的功能已完成,且 API 已锁定(标记为实验性的除外)。Wear ProtoLayout 1.4 包含以下新功能和 API:
- 内联图像资源与性能改进: 引入了一种改进的资源处理概念,其中
ImageResource可以直接内联在布局本身中。 - Material3TileService: 引入了一个新的、对 Kotlin 友好的服务,用于创建卡片(Tiles)。它通过提供一个单一的挂起函数(suspend function)来返回卡片布局和资源,从而简化了开发。它会自动管理
MaterialScope和ProtoLayoutScope,以实现更好的资源处理和更快的卡片加载性能。 - 卡片预览更新: 卡片预览工具已更新,支持新的
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.heartRateBpm或PlatformHealthSources.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.heartRateBpm和PlatformHealthSources.heartRateAccuracy的ProtoLayout表达式库)需要向调用 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方法即可。 - 所有
ImageAPI 现在都通过提供接受负责此操作的ProtoLayoutScope的新方法来支持这一概念。
- 这显著简化了开发过程,无需在
Material3 作用域与资源自动注册: 添加了
materialScopeWithResources以支持带有内联图像资源的 Material3MaterialScope概念。此作用域处理自动资源注册,并包含新的图像辅助方法(backgroundImage、avatarImage和icon),以简化组件的使用。简化的代码片段
materialScopeWithResources( context = context, deviceConfiguration = deviceParameters, protoLayoutScope = protoLayoutScope) { primaryLayout( // layout setup here iconContent = { **icon**( **imageResource**( **androidImageResource**(R.drawable.myIcon)))}) //… }
PendingIntent 支持: 添加了对卡片
PendingIntent的支持。PendingIntent可点击项接受回退操作(LoadAction或LaunchAction)。这确保了如果ProtoLayout渲染器版本较旧且不支持PendingIntent,系统会自动使用有效的回退操作。多项 Kotlin DSL 改进
- 为
Image和所有ImageResources类型添加了专门的 Kotlin 辅助工具,以改善 Kotlin 开发者的体验。 - 为容器类型(如
Box、Row、Column等)添加了辅助工具,使其更符合现代 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 修复
- 资源比较: 通过为比较资源类型实现优化的
hash和equals方法,优化了性能。 - 为单槽位 textButton 应用默认内容描述。
- 修复了在渲染器侧调整最大行数的计算。
版本 1.4.0-alpha05
2026 年 1 月 28 日
androidx.wear.protolayout:protolayout-*:1.4.0-alpha05 已发布。1.4.0-alpha05 版本包含这些提交。
API 变更
- 添加了新的 Kotlin
Transformation修饰符。(I195a7,b/397169191)
Bug 修复
- 通过从
TileService中移除有状态的ProtoLayoutScope,我们解决了资源处理的问题。(I5dc0a,b/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一起使用。(I8198c,b/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的版本时,回退操作将自动被拾取并放入布局中。(I6eee2,b/450259727)MaterialScope中的protoLayoutScope字段现在设为NonNull,以便在通过materialScopeWithResources创建时更易于使用。此外,添加了一个hasProtoLayoutScope函数来检查其是否存在。(I1858f,b/450067019)
版本 1.4.0-alpha01
2025 年 9 月 24 日
androidx.wear.protolayout:protolayout-*:1.4.0-alpha01 已发布。1.4.0-alpha01 版本包含这些提交。
新功能
- 为
LayoutModifier添加了辅助方法,使元素在卡片变得可见时淡入。(I38531,b/390345969) - 添加了
materialScopeWithResources以支持 M3MaterialScope概念,同时也负责自动资源注册。在其中,添加了新的图像辅助方法(backgroundImage、avatarImage和icon),使用时无需手动在onTileResourceRequest中注册资源。(I525bd,b/428692714) ProtoLayoutKotlin 辅助工具,用于配合ProtoLayoutScope和自动资源注册使用Image和ImageResources。(Iada82,b/430584304)- 添加了用于获取一个 Lottie 动画自定义中允许有多少 Lottie 属性的 getter。(I73733,b/436532706)
- 在
AndroidLottieResourceByResId中添加 API 以允许通过属性自定义 Lottie 动画,并添加用于通过槽位 ID 将槽位主题化为指定颜色的属性创建 API。(I301b3,b/423581481) - 添加接收
PendingIntent作为点击操作的提供者 API。(I01978,b/433802488) - 在
Image.Builder中添加新 API -setImageResource,用于在onTileRequest中直接为 Image 设置资源对象,而无需在onTileResourcesRequest中注册映射。(Ifa69a,b/428693523) - 添加了
ProtoLayoutScope概念,为 Tiles 中更好的资源处理做准备。(I132ce,b/428692423) ProtoLayoutMaterial3MaterialScope现在将Context字段公开,以便在作用域内的方法中使用,无需在各处传递。(I0e5cc,b/414559956)- 将标题语义 API 公开。(I75299,b/413653475)
- 将
ARC_DIRECTION_*常量公开,供在Arc/ArcLine/ArcText/DashedArcLine中使用。(I83959,b/427556439)
API 变更
- 我们弃用了
Image.Builder()和Image.Builder.setResourceId方法,转而使用新的自动资源注册 API,该 API 在Image.Builder(ProtoLayoutScope)和Image.Builder.setImageResourceAPI 中可用,无需覆盖onTileResourcesRequest。(I7bfe6,b/432758526) - 将用于创建
ProtoLayoutScope的 API 从受限改为公开。但它们不应被使用,因为系统已经处理了这些调用。(I1d8e8,b/432758251)
Bug 修复
- 添加对在
ProtoTiles中支持PendingIntent的实现。(I38167,b/430610429) - 添加
invalidateLayout方法。(Ief898) - 将默认的 minSdk 从 API 21 升级到 API 23 (Ibdfca, b/380448311, b/435705964, b/435705223)
ImageResource现在具有hashCode和equals方法。(I650ee,b/428692423,b/428693523)- 添加新的 proto 消息
PendingIntentAction及其包装构建器。(Ie2aca,b/427643502) - 减少
ZoneId实例的创建频率。(I284d3) - 为单槽位
textButton应用默认内容描述。(I0dc8a,b/415001534) - 修复了在渲染器侧调整最大行数的计算。(I933bc,b/414353620)
版本 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,textEdgeButtoniconButton,textButton,button,imageButton,avatarButton,compactButtontitleCard,appCard,graphicDataCard,iconDataCard,textDataCardcircularProgressIndicator,segmentedCircularProgressIndicatorprimaryLayout,buttonGroup- 所有组件均可在任何 SDK 级别和
ProtoLayout渲染器版本上运行,并在适用时提供合理的后备方案。
- 这包括仅限 Kotlin 的
- 为基础 ProtoLayout 元素提供更友好的 Kotlin 和类 Compose API。
LayoutModifier,能够以链式函数的形式添加大多数修饰符(padding、contentDescription(包括clearSemantics)、background、clip、opacity等),并可转换为现有的Modifiers对象。LayoutColors和LayoutString作为类型,支持更容易地使用动态字段和约束。text和fontStyle- 为
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,ArcLine和DashedArcLine构建器如果未设置动态值的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,textEdgeButtoniconButton,textButton,button,imageButton,avatarButton,compactButtontitleCard,appCard,graphicDataCard,iconDataCard,textDataCardcircularProgressIndicator,segmentedCircularProgressIndicatorprimaryLayout,buttonGroup- 所有组件均可在任何 SDK 级别和 ProtoLayout 渲染器版本上运行,并在适用时提供合理的后备方案。
- 这包括仅限 Kotlin 的
- 为基础 ProtoLayout 元素提供更友好的 Kotlin 和类 Compose API。
LayoutModifier,能够以链式函数的形式添加大多数修饰符(padding、contentDescription(包括clearSemantics)、background、clip、opacity等),并可转换为现有的Modifiers对象。LayoutColors和LayoutString作为类型,支持更容易地使用动态字段和约束。text和fontStyle- 为
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,并添加了一个新的实验性 APIPlatformEventSources.isLayoutUpdatePending。(Ie1e04)
Bug 修复
primaryLayout的边距现在被正确地向上取整,这可能会在某些布局上导致主槽位空间减少最多 2dp。(I8f5d3)- 对
ProtoLayoutMaterial3 组件中默认动态配色方案的说明。(Iff5f3) Typography.NUMERAL_*排版默认不再是等宽字体。如果文本正在动画化,强烈建议为其添加FontSetting.tabularNum()设置。在所有其他情况下,不需要此等宽选项,并且不使用它会有更多可用字符。(Id3cd9)- 对
ProtoLayoutMaterial3 组件中默认动态配色方案的说明。(I9d831)
1.3.0-alpha09 版本
2025 年 2 月 26 日
androidx.wear.protolayout:protolayout-*:1.3.0-alpha09 已发布。1.3.0-alpha09 版本包含这些提交。
新功能
- 为
enterTransition和exitTransition添加了实验性修饰符。(I4a4d6) - 我们添加了额外的平台绑定,以便在完整布局的可见性发生变化时接收其状态。(I250c3)
- 允许将测试应用程序状态和平台数据注入
LayoutElementAssertionsProvider,以便评估动态值。(Ib5fcb) - 向 protolayout 测试库添加圆角过滤器。(Ie2361)
ButtonColors,CardColors和ProgressIndicatorColors现在支持 copy 方法,并可选择覆盖某些参数。(Ie2054)
API 变更
- 向测试库添加动态数据绑定支持。(Ib98de)
- 修复了
imageButton与backgroundImage函数一起使用时的问题,移除了遮罩。此外,允许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 组件(
graphicCard和avatarButton),以在不支持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,visibility和opacity修饰符。(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.kt和LayoutColor.kt中的顶级方法重命名为具有 Java 友好名称。(I7aff0) - 删除了 Material3 中的非 ProtoLayout 排版。(Idd9ae)
- 向 Material3 中
*Colors类的字段添加了后缀 Color。(I2d114)
Bug 修复
版本 1.3.0-alpha06
2025 年 1 月 15 日
androidx.wear.protolayout:protolayout-*:1.3.0-alpha06 已发布。1.3.0-alpha06 版本包含这些提交。
新功能
LayoutColor以支持静态和动态颜色类型。(I4c89b)- 添加了
ProtoLayout Material3textButton 组件。(Id680d) - 添加
iconButtonProtoLayout Material3 组件。(Ica3f0) - 添加了 ProtoLayout Material3 按钮容器组件。(I17a38)
- 向 protolayout-material3 添加了对可链式语义修饰符的支持。(I4af62)
- 添加了 ProtoLayout Material3 单分段
CircularProgressIndicator。(I2c8a2) - 添加了
padding,metadata修饰符。(I8720a) - 添加了
background,clip和clickable修饰符。(I35478) - 将
LinearGradient添加到 Brush,并允许将其用于 Background 修饰符。(Ic4dea) - 为 appCard 和
titleCard添加了小尺寸。(I91f98) - 添加了 ProtoLayout Material3
graphicDataCard组件。(I92be7) - 添加了 ProtoLayout Material3
iconDataCard和textDataCard组件。(I4e1e4) - 添加了 ProtoLayout Material3
appCard组件。(Id4c57) - 将
EdgeButtonColors抽象为ButtonColors。(I83624) - 添加了 ProtoLayout Material3
titleCard组件。(I2dc72)
API 变更
- ProtoLayout Material3 API 现在接受
LayoutString以支持静态和动态文本。(I9c24a)
Bug 修复
版本 1.3.0-alpha05
2024 年 12 月 11 日
androidx.wear.protolayout:protolayout-*:1.3.0-alpha05 已发布。1.3.0-alpha05 版本包含这些提交。
新功能
Bug 修复
- 该库现在使用 JSpecify nullness 注解,它们是类型使用的。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 版本包含这些提交。
新功能
- 向测试库添加
LayoutElementAssertionsProvider,LayoutElementAssertion和LayoutElementMatcher。(Id1110)
版本 1.3.0-alpha02
2024 年 10 月 16 日
androidx.wear.protolayout:protolayout-*:1.3.0-alpha02 已发布。1.3.0-alpha02 版本包含这些提交。
新功能
- Material 3 库的初始版本。包括
text,edgeButton,buttonGroup和primaryLayout组件。
安全修复
- 截至此更改,androidx 针对 protobuf 4.28.2 进行编译,以解决 CVE-2024-7254。请将您对
androidx.wear.protolayout:protolayout-proto和androidx.wear.protolayout:protolayout-external-protobuf1.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 修复
版本 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-proto和androidx.wear.protolayout:protolayout-external-protobuf1.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 修饰符的元素的可点击区域扩展到至少
48dpx48dp。 - 通过添加
setResponsiveContentInsetEnabled改进了PrimaryLayout和EdgeContentLayout,以更好地支持这些布局在不同屏幕尺寸上的响应式行为,并提高卡片的一致性。 - 改进了 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,以便在未传入主标签或辅助标签时,它可以仅用作图标。(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.weight和FontSetting.width - 为所有数字字符设置相同的宽度 - 等宽数字(
FontSetting.tnum字体特性设置) - 改进了字体选择 API,通过指定要使用的首选字体系列名称来支持即将推出的 flex 字体。
- 设置不同的字体变化设置,如
- 扩展了
Corner修饰符,支持为每个CornerRadius指定单独的水平和垂直值,从而允许构建具有非对称圆角的元素。 - 添加了新的
Transformation修饰符,提供LayoutElement的平移、旋转和缩放。这些转换可以使用动态值进行动画处理。 - 为所有圆弧元素(
Arc,ArcLine和ArcText)添加了带有Clockwise,CounterClockwise和Normal选项的setArcDirection,以便在不同的布局方向(如 LTR 和 RTL)中获得更好的支持。 - 提高了所有触摸目标的无障碍性,将任何使用
Clickable修饰符的元素的可点击区域扩展到至少48dpx48dp。 - 通过添加
setResponsiveContentInsetEnabled改进了PrimaryLayout和EdgeContentLayout,以更好地支持这些布局在不同屏幕尺寸上的响应式行为,并提高卡片的一致性。添加了 linter 警告,建议将这些 API 与快速修复结合使用。 - 改进了 Material
Text针对 Android 14 非线性字体缩放的缩放/非缩放支持。
API 变更
- 默认字体系列名称 (
DEFAULT_SYSTEM_FONT) 已被移除,因为它隐含在不使用preferredFontFamiliesAPI 的情况中。(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.weight和FontSetting.widthAPI 以包含范围注解,并将 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)
- 扩展了
FontSettingAPI 以包含: - 向
FontStyle添加了字体系列 API,允许指定应使用的字体系列顺序列表。(Iba9f5) - 重命名了 Material
LayoutDefaults中内容与辅助标签之间空间高度的常量,这些常量最初以“Edge content”为前缀,现在更加通用,因为它们可以应用于PrimaryLayout和EdgeContentLayout。(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,Counterclockwise或Normal)。将此行为添加到Arc,ArcLine或ArcText将修复它们在 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 支持带有可选权重的展开维度。
- 对所有
ProtoLayoutAPI 的模式版本要求注解。 - 将任何
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)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现在通过添加带有Brush和SweepGradient的Brush来支持渐变,并在端点上带有阴影,以更好地表示大于 360 度的长度(通过在现有的StrokeCap上添加Shadow)。DynamicInstant支持区域日期-时间格式化。DynamicInstant和DynamicDuration可用作状态或平台数据类型。- 文本大小的自动调整大小功能,允许将多个大小设置给
FontStyle.setSizes,其中文本大小将根据其在父级内部拥有的空间自动缩放。此外,我们通过添加TEXT_OVERFLOW_ELLIPSIZE并弃用TEXT_OVERFLOW_ELLIPSIZE_END,改进了溢出文本的省略选项。 Spacer现在支持具有可选权重的展开维度。为了构建ExpandedDimensionProp,我们添加了一个辅助方法DimensionBuilders.weight。- 支持使用
Modifier.visible动态隐藏和取消隐藏布局元素。这包括在BoolProp中使用动态值。 - 所有
ProtoLayoutAPI 现在都有模式版本要求注解,并且可以在调用较新 API 之前检查版本。 - 每个具有
Clickable的元素现在在渲染器中将其目标区域扩展到至少 48x48,以更好地支持无障碍要求。 - 遵循其他 Material 组件和 Compose 计划,我们现在在所有
Text元素上默认关闭了字体内边距。此外,AndroidTextStyle和相关的设置器已从公共 API 中删除。并进行了以下错误修复: - 为在
EdgeContentLayout中定位边缘内容添加了设置器,以便将其放置在其他内容之前。 - 在遇到无法识别的枚举值时,始终抛出异常。
- 当表达式产生无效的数值(NaN 或无穷大)或抛出
ArithmeticException时,使其结果无效。
API 变更
- 对
SweepGradientAPI 的更新,允许在构造函数中接受颜色或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 版本包含这些提交。
新功能
API 变更
- 文本溢出选项
TEXT_OVERFLOW_ELLIPSIZE_END现已弃用。请使用行为非常相似的新 APITEXT_OVERFLOW_ELLIPSIZE。(I822d8) - 遵循其他 Material 组件和 Compose 计划,我们现在在所有 Text 元素上默认关闭了字体内边距。此外,
AndroidTextStyle和相关的设置器已从公共 API 中删除。(I79094, Ib0b03, I32959, Iaf7d5, Ifa298, I0a4ae, Ida9d3) 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) - 向
ProtoLayoutAPI 添加架构版本要求注解(I0f03c) - 在
TextOverflow中扩展 API,新增选项用于在固定父容器中省略文本,即使未达到最大行数(但空间不足以显示文本)时也是如此。(I110a9) - 添加辅助方法
DimensionBuilders.weight,用于构建带权重的ExpandedDimensionProp。(I4f72b) DynamicInstant和DynamicDuration可用作状态或平台数据类型。(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 添加了
ArcLineStrokeCapShadow字段。(I830ec) - 扩展 API 以便指定 Spacer 的宽度或高度进行展开。(I757ca)
- 我们添加了一个实验性 API,可根据父容器内的剩余空间自动缩放文本大小。(Ibbe63)
- 支持最小可点击尺寸(I178e3)
- 为
StrokeCapShadow添加了渲染器支持。(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 元素中移除了
setLayoutConstraintForDynamicAnchorAngle和getLayoutConstraintForDynamicAnchorAngle方法。这些方法是错误添加的,对所提供的布局没有任何影响。(If7d01) - 我们将
ProtoLayout布局允许的最大嵌套LayoutElements深度限制为 30 层。(I8a74b)
Bug 修复
版本 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现在接受DynamicDataKey到DynamicDataValue的类型安全映射,而不是不安全的泛型。这意味着DynamicDataValue现在根据其DynamicType进行类型化。HEART_RATE_ACCURACY_X常量已移至PlatformHealthSources的根目录下,以匹配其他 Android 常量的位置。HEART_RATE_ACCURACY_Xint 常量现在直接用于DynamicHeartRateAccuracy.constant()和DynamicHeartRateAccuracy.dynamicDataValueOf(),而不是值常量。(I82ff5)PlatformHealthSources.Constants类被错误地设计为可实例化。现已修复。(Icb849)PlatformTimeUpdateNotifier#setReceiver现在接收Runnable而不是Supplier函数和用于通知的Executor。(I9d938)- 我们已将
PlatformTimeUpdateNotifier#setReceiver中的参数类型从Callable更改为Supplier。(I664bf) CompactChip和TitleChip现在支持添加图标。(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/clearReceiver(I14b02) - 在 Material Text 中,
getExcludeFontPadding已重命名为hasExcludeFontPadding。(Iea01d) - 为所有芯片组件添加了用于完美对齐标签的 setter。现在所有芯片都应用了最小可点击目标。(I8ae92)
LayoutDefaults#BUTTON_MAX_NUMBER已重命名为MAX_BUTTONS。(I84788)DAILY_DISTANCE重命名为DAILY_DISTANCE_M。(I4f758)
Bug 修复
版本 1.0.0-alpha10
2023 年 5 月 24 日
androidx.wear.protolayout:protolayout-*:1.0.0-alpha10 已发布。版本 1.0.0-alpha10 包含这些提交。
新功能
- 添加
AppDataKey以访问应用推送的状态;添加PlatformDataKey以访问平台数据;在StateStore中添加命名空间支持。(I7985e) - 支持
DynamicBool的Equal和NotEqual操作。(I6a0c1)
API 变更
FontStyles类现在是最终类。(Iaa2ea)LayoutElementBuilders#FontStyles已弃用。请使用androidx.wear.protolayout.Typography或创建您自己的FontStyle。(Ic929b)- 从
Action接口中隐藏Action#Builder嵌套接口。Builder 的实现已由LoadAction和LaunchAction类提供。(I1d70c) - 允许在
FloatProp中使用DynamicFloat。请注意,FloatProp不需要布局约束,因为它不用作布局更改属性。(I286ac) LoalAction和SetStateAction操作已被移除,因为它们实际上尚未得到支持。(I5d6a6)- 添加了对内联图像资源的 ARGB_8888 格式的支持。(I8a07c)
- 将
StateEntryValue重命名为DynamicDataValue,并更新状态 API 以使用DynamicDataKey(If1c01) - 我们正在限制
StateStore中允许的条目数量,以确保每个StateStore实例的内存使用和状态更新时间得到良好控制。因此,开发者需要确保映射中的条目不超过MAX_STATE_ENTRY_COUNT,否则在创建或更新StateStore时会收到IllegalStateException。(Ibadb3) - 隐藏
OnLoadTrigger和OnConditionMetTrigger类,并将OnConditionMetTrigger的setTrigger重命名为setCondition。(Ibf629) - 出于性能和兼容性原因,
ProtoLayout渲染器不会支持AnimatedVectorDrawable资源中的全部功能。我们已将这些 API 标记为实验性,直到我们能确定支持的集合为止。(Ic6daf) - 添加了每日距离、每日卡路里和每日楼层的动态类型。平台健康源的键现在位于
PlatformHealthSources.Keys下(Ib7637) Easing.cubicBezier方法取代了CubicBezierEasing.Builder。随之EasingFunction类被移除,该类中的缓动常量现在可直接从Easing接口访问。此外,setInfiniteRepeatable被INFINITE_REPEATABLE_WITH_RESTART和INFINITE_REPEATABLE_WITH_REVERSE取代(Ib41e7)- 实现
PlatformDataProvider以提供心率和每日步数。SensorGateway接口已从公共 API 中移除。(I55b84) - 添加
PlatformDataProvider,并更新StateStore以在表达式管道中的节点需要提供程序的受支持键时向其注册。(Ib616a) SensorGateway不再是Closeable,因为它不再维护任何状态。(I6b4f7)- 允许在
CircularProgressIndicator中对进度使用带DynamicFloat的FloatProp。这受支持 1.2 版本的渲染器支持。旧渲染器将回退到提供的staticValue,否则回退到 0(I0d91b) MultiButtonLayout常量已重构为LayoutDefaults.MultiButtonLayoutDefaults类,该类现在包含根据布局中按钮数量确定的按钮尺寸常量。(I13973)- 支持在 Material Text 中将
StringProp与DynamicString结合使用。这受支持 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)- 我们添加了对在
ProtoLayoutMaterial Text 中设置排除字体填充的支持。(I17f5d) - 内联图像现在支持 ARGB_8888。(I18c1e)
DynamicColor现在支持onCondition操作。(I10927)
API 变更
- 支持反向动画的自定义持续时间(I3251f)
- 我们添加了
SemanticDescription修饰符。此外,ContentDescription不可绑定。(I3f1d) DynamicBool.isFalse()方法现在被DynamicBool.negate()取代,且DynamicBool.isTrue()被移除。此外,NaNDynamicFloat值以及将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 包含这些提交。
新功能
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 变更
- 我们为
Repeatable添加了forwardRepeatDelayMillis和reverseRepeatDelayMillis。我们还将AnimationSpec中的delayMillis重命名为startDelayMillis(Ifb266) 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) - 我们添加了
OnLoad和OnConditionalMet触发器。这些可用于启动支持触发器的动画。 - 我们添加了展开维度的布局权重和包裹维度的最小尺寸。
- 我们添加了持续时间和瞬时动态类型。这些可用于在动态表达式中表示时间点或持续时间。
- 我们添加了对
AnimatedVectorDrawable和SeekableAnimatedVectorDrawable作为布局资源的支持。
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 包含这些提交。
新功能
- 我们为 protolayout-express 库中的动态类型添加了
toByteArray()和fromByteArray()。 - 我们为 protolayout-expression 库中的动态类型添加了
toString()。 - 我们添加了对动态类型的求值支持。来自 protolayout-expression-pipeline 库的
DynamicTypeEvaluator类可用于对先前创建的动态类型(DynamicString、DynamicFloat等)进行求值(并接收更新后的值)。 - 当动画无法播放时(因为被求值器禁用,或正在运行的动画数量已达到设置的限制),设置在可动画节点上的静态值将用于替换动画。
版本 1.0.0-alpha02
2023 年 1 月 25 日
androidx.wear.protolayout:protolayout:1.0.0-alpha02、androidx.wear.protolayout:protolayout-expression:1.0.0-alpha02 和 androidx.wear.protolayout:protolayout-proto:1.0.0-alpha02 已发布。版本 1.0.0-alpha02 包含这些提交。
新功能
- 来自
androidx.wear.tiles:tiles的布局构建器正在迁移到androidx.wear.protolayout:protolayout。androidx.wear.tiles:tiles中的那些构建器将在后续某个 alpha 版本中被弃用。
版本 1.0.0-alpha01
2023 年 1 月 11 日
androidx.wear.protolayout:protolayout-expression:1.0.0-alpha01 和 androidx.wear.protolayout:protolayout-proto:1.0.0-alpha01 已发布。版本 1.0.0-alpha01 包含这些提交。
新功能
- 此版本引入了一个名为“ProtoLayout Expression”的新库,用于从动态变量创建表达式。