Wear Compose

  
编写适用于穿戴式设备的 Jetpack Compose 应用,提供相关功能来支持穿戴式设备以及该类设备专属的尺寸、形状和导航手势。
最近更新时间 当前稳定版 下一候选版 Beta 版 Alpha 版
2021 年 9 月 15 日 - - - 1.0.0-alpha06

声明依赖项

如需添加 Wear 的依赖项,您必须将 Google Maven 代码库添加到项目中。如需了解详情,请参阅 Google 的 Maven 代码库

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

Groovy

dependencies {
    implementation "androidx.wear.compose:compose-foundation:1.0.0-alpha07"

    // For Wear Material Design UX guidelines and specifications
    implementation "androidx.wear.compose:compose-material:1.0.0-alpha07"

    // For integration between Wear Compose and Androidx Navigation libraries
    implementation "androidx.wear.compose:compose-navigation:1.0.0-alpha07"

    // NOTE: DO NOT INCLUDE a dependency on androidx.compose.material:material.
    // androidx.wear.compose:compose-material is designed as a replacement
    // not an addition to androidx.compose.material:material.
    // If there are features from that you feel are missing from
    // androidx.wear.compose:compose-material please raise a bug to let us know.
}

Kotlin

dependencies {
    implementation("androidx.wear.compose:compose-foundation:1.0.0-alpha07")

    // For Wear Material Design UX guidelines and specifications
    implementation("androidx.wear.compose:compose-material:1.0.0-alpha07")

    // For integration between Wear Compose and Androidx Navigation libraries
    implementation("androidx.wear.compose:compose-navigation:1.0.0-alpha07")

    // NOTE: DO NOT INCLUDE a dependency on androidx.compose.material:material.
    // androidx.wear.compose:compose-material is designed as a replacement
    // not an addition to androidx.compose.material:material.
    // If there are features from that you feel are missing from
    // androidx.wear.compose:compose-material please raise a bug to let us know.
}

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

反馈

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

创建新问题

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

版本 1.0.0

版本 1.0.0-alpha06

2021 年 9 月 15 日

发布了 androidx.wear.compose:compose-foundation:1.0.0-alpha06androidx.wear.compose:compose-material:1.0.0-alpha06androidx.wear.compose:compose-navigation:1.0.0-alpha06版本 1.0.0-alpha06 中包含这些提交内容

新功能

  • 我们为 Scaffold 添加了一个顶级应用可组合项,它提供了一种用于处理 PositionIndicator(例如 Scroll 或 Volume)位置的结构,该位置位于屏幕顶部,用于显示时间和应用状态,并且还支持使用 Vignette 对可滚动内容的屏幕顶部和底部边缘进行模糊处理。Scaffold 的主要区域是放置应用内容的位置。(I5e0bf)
  • 为 Wear Compose 添加了 TimeText 实现 (I5654c)

Wear Compose Navigation 库

  • 我们添加了 Wear Compose Navigation 库的第一个版本,它集成了 Wear Compose 和 Androidx Navigation 库。它提供了一种在应用中的 @Composable 函数(作为目的地)之间导航的简单方式。

  • 此初始版本包含以下各项:

    • 一个 SwipeDismissableNavHost 可组合项,用于托管导航图以及通过滑动手势提供向后导航
    • NavGraphBuilder.composable 扩展,用于协助构建导航图
    • rememberSwipeDismissableNavController(),允许提升状态
  • 下面是一个示例用法,我们在其中创建了两个屏幕并在它们之间导航:

    val navController = rememberSwipeDismissableNavController()
    SwipeDismissableNavHost(
        navController = navController,
        startDestination = "start"
    ) {
        composable("start") {
            Column(
                horizontalAlignment = Alignment.CenterHorizontally,
                verticalArrangement = Arrangement.Center,
                modifier = Modifier.fillMaxSize(),
            ) {
                Button(onClick = { navController.navigate("next") }) {
                    Text("Go")
                }
            }
        }
        composable("next") {
            Column(
                horizontalAlignment = Alignment.CenterHorizontally,
                verticalArrangement = Arrangement.Center,
                modifier = Modifier.fillMaxSize(),
            ) {
                Text("Swipe to go back")
            }
        }
    }
    
  • Wear Compose Navigation 被封装为单独的库,因此实现自己的手动导航的简单 WearCompose 应用无需依赖于 Androidx Navigation 库。

API 变更

  • 通过设置背景和内容的键身份,更新了 SwipeDismissableNavHost 以支持 rememberSaveable (I746fd)
  • 我们添加了可以处理 LazyListState 的 PositionIndicator 适配器 (I21b88)
  • 更新了 SwipeToDismissBox 以支持 rememberSaveable (Ie728b)
  • 我们向 ScalingLazyColumn 添加了 reverseLayout 支持。这样可以逆转滚动和布局的方向 (I9e2fc)
  • 废弃了 performGestureGestureScope,它们已被 performTouchInputTouchInjectionScope 取代。(Ia5f3fb/190493367
  • 我们已将 VignetteValue 重命名为 VignettePosition,并将 VignetteValue.Both 重命名为 VignettePosition.TopAndBottom。(I57ad7)
  • 我们已将 ScalingLazyColumnState 重命名为 ScalingLazyListState,将 ScalingLazyColumnItemInfo 重命名为 ScalingLazyListItemInfo,将 ScalingLazyColumnLayoutInfo 重命名为 ScalingLazyListLayoutInfo,并将 ScalingLazyColumnScope 重命名为 ScalingLazyListScope,以防日后决定添加 ScalingLazyRow 实现。(I22734)

bug 修复

  • 更新了 CompactChip 文档,以说明在没有提供图标和标签的情况下会发生什么。(I4ba88)
  • 我们对 Wear 卡片组件进行了一些调整。(I6b3d0)
    1. Title 和 Body 之间的 TitleCard 间距已从 8.dp 减小到 2.dp。
    2. TitleCard 标题字体从正文更改为了 title3。
    3. 更改了卡片背景渐变效果,使背景看起来更暗。

版本 1.0.0-alpha05

2021 年 9 月 1 日

发布了 androidx.wear.compose:compose-foundation:1.0.0-alpha05androidx.wear.compose:compose-material:1.0.0-alpha05版本 1.0.0-alpha05 中包含这些提交内容

API 变更

  • 将 ArcPaddingValues 标记为了 @Stable (I57deb)
  • ScalingLazyColumnState 现在会实现 ScrollableState 接口,让开发者获得编程访问权限以滚动浏览组件。(I47dbc)

bug 修复

  • 我们缩小了 Chip 和 ToggleChip 中的图标和文本之间的间距,使其与用户体验规范的更新保持一致。(I83802)

版本 1.0.0-alpha04

2021 年 8 月 18 日

发布了 androidx.wear.compose:compose-foundation:1.0.0-alpha04androidx.wear.compose:compose-material:1.0.0-alpha04版本 1.0.0-alpha04 中包含这些提交内容

新功能

  • 添加了 SwipeToDismissBox 和可滑动修饰符,可用于支持从左到右滑动关闭手势。虽然与导航组件无关,但这应该用于退出一个屏幕并导航到另一个屏幕。为滑动关闭演示添加了集成测试。(I7bbaa)
  • 我们向 ScalingLazyColumnState 类添加了 ScalingLazyColumnItemInfo 和 ScalingLazyColumnLayoutInfo 接口,让开发者能够在应用缩放后知道 ScalingLazyColumn 中项的实际位置和大小。我们还修复了与对 ScalingLazyColumn 应用内容“上”内边距后计算缩放的方式有关的 bug。(I27c07)

API 变更

  • 添加了 CurvedTextStyle 类,以指定曲线文本样式选项。与 TextStyle 类似,但现在仅支持颜色、字号和背景。我们会在日后添加更多样式选项。(I96ac3)
  • 我们向 ScalingLazyColumnState 类添加了 ScalingLazyColumnItemInfo 和 ScalingLazyColumnLayoutInfo 接口,让开发者能够在应用缩放后知道 ScalingLazyColumn 中项的实际位置和大小。我们还修复了与对 ScalingLazyColumn 应用内容“上”内边距后计算缩放的方式有关的 bug。最后,我们 (I27c07)
  • SwipeDismissTarget 枚举添加了 @ExperimentalWearMaterialApi,这属于 SwipeToDismissBox API 的一部分。(I48b5e)

bug 修复

  • 为 SwipeToDismissBox 添加了测试材料 (I9febc)

版本 1.0.0-alpha03

2021 年 8 月 4 日

发布了 androidx.wear.compose:compose-foundation:1.0.0-alpha03androidx.wear.compose:compose-material:1.0.0-alpha03版本 1.0.0-alpha03 中包含这些提交内容

API 变更

  • 新增了 CurvedText 组件,让开发者能够轻松地沿着圆圈的弧线(通常位于圆形屏幕的边缘)写入文字 (Id1267)
  • 我们已将 CardDefaults.imageBackgroundPainter() 重命名为 CardDefaults.imageWithScrimBackgroundPainter(),以便让用户清楚知道背景图片上绘制有纱罩。(I53206)
  • 新增了 ScalingLazyColumn 组件,用于为 Wear Material 提供列表组件,支持用户在鱼眼视图中缩减列表内容的大小,让列表内容在靠近组件边缘时渐隐为透明。(I7070c)

bug 修复

  • 我们更改了 AppCard 中 appName 内容的默认颜色,以响应用户体验规范更新。appName 的默认颜色现在为 MaterialTheme.colors.onSurfaceVariant。此外,为标题位置添加了缺少的参数文档说明。(Ic4ad1)

版本 1.0.0-alpha02

2021 年 7 月 21 日

发布了 androidx.wear.compose:compose-foundation:1.0.0-alpha02androidx.wear.compose:compose-material:1.0.0-alpha02版本 1.0.0-alpha02 中包含这些提交内容

新功能

  • 新增了一个 CurvedRow 类,用于在 arc 中安排可组合项的布局 (I29941)
  • 新增了一种在应用中使用的卡片 (TitleCard),并支持将图片作为背景添加到卡片,以重点强调其内容 (I53b0f)

API 变更

  • 向 CurvedRow 添加了对径向对齐的支持(类似于行中的垂直对齐)(Id9de5)
  • 新增了一个 CurvedRow 类,用于在 arc 中安排可组合项的布局 (I29941)
  • 新增了一种在应用中使用的卡片 (TitleCard),并支持将图片作为背景添加到卡片,以重点强调其内容 (I53b0f)
  • 向 ToggleChipDefaults 添加了切换图标(复选框、开关和单选按钮),以便开发者可以更轻松地配置 ToggleChip 和 SplitToggleChips (I7b639)
  • 更新了条状标签的开始和结束内容的内边距,这样,无论条状标签是否会显示图标,内边距始终为 14.dp(之前在显示图标时为 12.dp,不显示图标时为 14.dp)(I34c86)

bug 修复

  • 针对 CurvedRow 添加了测试 (I93cdb)
  • 将 Wear Compose 依赖项与 Compose 1.0.0-rc01 相关联。(Ie6bc9)
  • 更改了卡片和条状标签中背景图片绘制的处理方式,以便系统裁剪而不是拉伸图片,从而保持图片显示比例不变。(I29b41)
  • 针对 Button 和 ToggleButton 添加了更多演示和集成测试。(5e27ed2)
  • 添加了更多条状标签测试,以涵盖 imageBackgroundChips 的内容颜色 (Ia9183)

版本 1.0.0-alpha01

2021 年 7 月 1 日

发布了 androidx.wear.compose:compose-foundation:1.0.0-alpha01androidx.wear.compose:compose-material:1.0.0-alpha01版本 1.0.0-alpha01 中包含这些提交内容

新功能

Wear Compose 是一个基于 Compose 的 Kotlin 库,支持 Wear Material Design,是适用于 WearOS 穿戴式设备的 Material Design 的扩展。第一个 Alpha 版本包含以下对象的早期功能性实现:

  • Material 主题 - 用于为通过此库使用的各个组件配置统一的颜色、字体排版和形状。
  • Chip、CompactChip - 此类条形标签是体育场形状的,其变体可用于容纳图标、标签和次级标签内容。
  • ToggleChip、SplitToggleChip - 一种特殊类型的条形标签,包含一个用于放置在两种状态之间进行切换的图标(例如单选按钮或复选框)的槽位。此外,SplitToggleChip 具有两个可点按区域,即一个可点击区域和一个可切换区域。
  • Button、CompactButton - 圆形按钮,带有一个用于放置图标或极少文字(最多 3 个字符)的内容槽位。
  • ToggleButton - 用于启用或停用某项操作的按钮,带有一个用于放置图标或极少文字(最多 3 个字符)的槽位。
  • Card、AppCard - 圆角矩形,可提供多个用于放置应用图标、时间、标题和正文等内容的槽位。

后续版本将扩展 widget 集,以添加对 Wear Material Design 选择器、滑块、列表、页面指示符、对话框、侧面旋钮 (RSB) 指示符、消息框等对象的支持。

此外,我们还将为其他穿戴式设备专属功能(例如曲线布局和文字)以及架构提供支持,以便开发者能够轻松构建穿戴式应用/叠加层。

Wear Compose Material 的设计遵循与 Compose Material 相同的原则,不过是以穿戴式设备为目标平台。因此,在为穿戴式设备打造应用时,应使用 Wear Compose Material 库来代替 Compose Material 库。

这两个“Material”库应视为互斥,不应在同一应用中混用。如果开发者发现其依赖项中包含 Compose Material 库,则说明:a) Wear Compose Material 库中缺少组件(请告诉我们所需组件);或者 b) 目前所用组件不是我们推荐在穿戴式设备上使用的组件。