Glance

使用 Jetpack Compose 风格的 API 构建远程界面的布局。
最新更新 稳定版 发布候选版 Beta 版 Alpha 版
2025 年 5 月 7 日 1.1.1 - - 1.2.0-alpha01

声明依赖项

要添加对 Glance 的依赖项,您必须将 Google Maven 代码库添加到您的项目中。如需了解更多信息,请阅读 Google 的 Maven 代码库

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

Groovy

dependencies {
    // For Glance support
    implementation "androidx.glance:glance:1.2.0-alpha01"
    // For AppWidgets support
    implementation "androidx.glance:glance-appwidget:1.2.0-alpha01"

    // For Wear-Tiles support
    implementation "androidx.glance:glance-wear-tiles:1.0.0-alpha05"
}

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.1.0-beta03"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Kotlin

dependencies {
    // For Glance support
    implementation("androidx.glance:glance:1.2.0-alpha01")
    
    // For AppWidgets support
    implementation("androidx.glance:glance-appwidget:1.2.0-alpha01")

    // For Wear-Tiles support
    implementation("androidx.glance:glance-wear-tiles:1.0.0-alpha05")
}

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.1.0-beta03"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

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

反馈

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

创建新问题

如需了解更多信息,请参阅 Issue Tracker 文档

版本 1.2

版本 1.2.0-alpha01

2025 年 5 月 7 日

androidx.glance:glance-*:1.2.0-alpha01 已发布。版本 1.2.0-alpha01 包含这些提交

API 变更

  • currentCompositeKeyHash 现已弃用。请改用 currentCompositeKeyHashCode。替换 API 使用更多位编码相同的哈希,这指数级地降低了组合层次结构中两个随机不相关组具有相同哈希键的几率。(I4cb6ab/177562901
  • 添加了一个新的 API,用于为 glance Image 可组合项和背景图像修饰符指定 Alpha(0f1f)。如果未指定,则保留源图像的 Alpha 值。(I8ad05
  • 添加用于生成预览的 Glance API。替换 GlanceAppWidget.providePreview 以提供微件的预览布局。然后,调用 GlanceAppWidgetManager.setWidgetPreview 以设置您的预览。(Iced16
  • 添加 MultiProcessGlanceAppWidget 以支持多进程配置(Idbb90
  • 移除了实验性标记,我们现在支持 lambda 表达式(I74d98b/299361317
  • 允许为 GlanceAppWidget.runComposition 指定 lambda 接收器(I84829
  • requestPinGlanceAppWidget 添加 previewSize 参数(I9f8f0b/303256067

错误修复

  • 移除了对新平台 API 访问的手动概要化,因为在使用 AGP 7.3 或更高版本(例如 R8 版本 3.3)的 R8 时以及在使用 AGP 8.1 或更高版本(例如 D8 版本 8.1)的所有构建中,此操作都会通过 API 建模自动进行。建议不使用 AGP 的客户端更新到 D8 8.1 或更高版本。如需了解更多详细信息,请参阅本文。(If6b4cb/345472586
  • glance-appwidget 库更新为 compileSdk 35I2e26b

版本 1.1

版本 1.1.1

2024 年 10 月 16 日

androidx.glance:glance-*:1.1.1 已发布。版本 1.1.1 包含这些提交

安全修复

  • 截至本次更改,androidx 针对 protobuf 4.28.2 进行编译,以解决 CVE-2024-7254。请将您对 androidx.glance:glance-appwidget-protoandroidx.glance:glance-appwidget-external-protobuf 1.1.0 版本的依赖项升级到 1.1.1,以解决漏洞风险。

版本 1.1.0

2024 年 6 月 12 日

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

自 1.0.0 以来的重要变更

  • 将 Glance 移至 1.1.0 稳定版。

版本 1.1.0-rc01

2024 年 5 月 14 日

androidx.glance:glance-*:1.1.0-rc01 已发布。版本 1.1.0-rc01 包含这些提交

新功能

  • 为 Glance 的 Preview 注解添加了宽度和高度参数。将 1.1.0 移至发布候选版。

API 变更

  • 为 Scaffold 添加了可选参数。(If753f
  • 为 Glance @Preview 添加了宽度和高度参数。(Ibabe8
  • 移除了对 Glance Wear Tile 预览的支持。(I3850a
  • 添加了用于为 FontStyle 设置自定义粗细值的 API。(I7390a
  • ViewfinderImplementationMode 枚举重命名,以更好地反映底层实现,并为 TransformationInfo.sourceRotation 添加了固定常量(Ic6149

错误修复

  • 修复了在向后兼容模式下导致 ViewGroups 渲染问题的错误(I8de92

外部贡献

版本 1.1.0-beta02

2024 年 4 月 17 日

androidx.glance:glance-*:1.1.0-beta02 已发布。此版本包含之前版本中缺失的源 JAR。

版本 1.1.0-beta01

2024 年 4 月 3 日

androidx.glance:glance-*:1.1.0-beta01 已发布。版本 1.1.0-beta01 包含这些提交

版本 1.1.0-alpha01

2024 年 2 月 7 日

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

新功能

  • Glance 的单元测试库,无需 UI Automator。Glance 代码可以直接测试,而无需膨胀视图。
  • 更高级别的组件,可实现更简单的布局。
  • 新的修饰符和主题选项。
  • 用于从组合中获取 RemoteViews 流的新 API:runComposition

API 变更

  • 为 Glance 主题添加了一个新的 widgetBackground 颜色角色。(Ia2ab8
  • 添加 GlanceAppWidget.runCompositionI6344cb/298066147
  • 添加新的 TopBar 组件(Ibd361
  • clickable 修饰符添加了覆盖。(Iacecf
  • 添加了一个新的 API,用于为按钮着色。此功能在 1.0 版本发布之前应保持实验性。(I92523
  • 添加了 runGlanceAppWidgetUnitTest,它提供了在 GlanceAppWidgetUnitTest 上调用方法的范围,例如 provideComposable 以提供用于测试的小型独立可组合项,onNode 以在提供的内容中查找 Glance 可组合元素。这使您能够为 appWidget 中的单个可组合函数编写单元测试,以验证在给定某些输入的情况下,该函数是否输出了预期的一组 glance 可组合元素。(I2f682
  • 在语义中添加了一个 testTag 修饰符,用于单元测试。(I8f62f
  • 更新 TitleBar - 文本和图标可单独着色。(Ia0a60
  • 添加 scaffold 组件(I8a736
  • 添加了 hasActionRunCallbackClickAction 过滤器和 assertHasActionRunCallbackClickAction 断言来测试 actionRunCallack。此外,还为与操作相关的测试过滤器添加了额外的简写变体函数 - hasStartActivityClickAction<activityClass>(..)hasStartServiceAction<receiverClass>(..)hasSendBroadcastAction<receiverClass>(..)。为其 assertHasXXX 对应项添加了类似的变体。(Ieca63
  • 移动未发布的 API。将修饰符从内部更改为公共但库受限。(If2a08
  • 添加了 onCompositionError 方法,开发人员可以在发生错误时运行代码(I9b56f
  • 为 Glance 添加了按钮和图标按钮 API(I0fd6f
  • 添加了 isLinearProgressIndicatorisIndeterminateLinearProgressIndicatorisIndeterminateCircularProgressIndicator 过滤器以匹配进度指示器。此外还包括 hasAnyDescendants 过滤器,用于测试节点在其子层次结构中是否存在与特定匹配器匹配的后代(Ifd426
  • 添加了断言和过滤器,以支持测试启动服务/活动或广播的点击操作。还包括测试输入元素是否已选中。(I3041c

版本 1.0.0

版本 1.0.0-alpha06

2024 年 2 月 7 日

androidx.glance:glance-appwidget-preview:1.0.0-alpha06androidx.glance:glance-preview:1.0.0-alpha06 已发布。版本 1.0.0-alpha06 包含这些提交。

新功能

  • 版本已更新,以遵循主 Glance 模块。

版本 1.0.0

2023 年 9 月 6 日

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

1.0.0 的主要功能

  • 将 Glance 移至稳定版 1.0.0

版本 1.0.0-rc01

2023 年 7 月 26 日

androidx.glance:glance-*:1.0.0-rc01 已发布。版本 1.0.0-rc01 包含这些提交。

将 Glance 移至 1.0.0 稳定版发布前的 rc01。

新功能

  • 为动作 lambda 添加了关键参数,以实现更稳定的动作调用。
  • 添加了为 startActivity 操作提供 ActvityOptions 的功能。
  • 添加了对 Android 14 的支持

API 变更

  • 为所有接受 lambda 表达式的元素添加了一个可选的关键参数。(Id96c1b/282445798
  • 添加了对为 actionStartActivity 设置 ActivityOptions bundle 的支持(I6a08d
  • 合并了 d、e、f、g 路径的公共和实验性 API 文件(I03646b/278769092
  • 不适用,API 文件更改只是方法的重新排序(I5fa95
  • 添加了用于为 GlanceAppWidgetReceiver 请求设置 CoroutineContext 的 API(I0a100
  • 添加了一个新的 API,用于为 LazyColumnLazyVerticalGrid 提供 ActivityOptions,该选项将用于列表中的所有操作。(Id8d71

错误修复

  • 不适用,API 文件更改只是方法的重新排序(I5fa95
  • Glance 文本组件样式演示(Ie78a4

版本 1.0.0-beta01

2023 年 5 月 10 日

androidx.glance:glance-*:1.0.0-beta01 已发布。版本 1.0.0-beta01 包含这些提交。

新功能

  • 将库移至 Beta 版。
  • 支持使用 GlanceTheme 进行主题设置,添加了 glance-material 和 glance-material3 模块以支持 Glance 中的 Material 2 和 Material 3 样式主题。
  • 为文本 API 添加了 FontFamily 支持。
  • GlanceAppWidget 移至基于 WorkManager 会话的更新机制。Glance for AppWidgets 的用户现在应重写 GlanceAppWidget.provideGlance,而不是旧的 Content 方法。由于现在此操作在工作器中进行,因此现在是加载资源、数据库或网络项的好地方,而无需单独的工作器。

API 变更

  • ButtonCheckboxRadioButtonSwitch 添加了 *Defaults API。它使 Glance 更符合 Jetpack Compose 的模式。(I94828
  • 新的 Glance 模板模块(I94459
  • ResourceColorProvider 设为模块内部。这是一项重大变更。之所以需要这样做,是因为 ResourceColorProvider 只能用于动态主题设置,以避免某些颜色是动态资源而另一些颜色是完全解析的情况。(Ib0db7
  • FontFamily 添加为 TextStyle 的一个选项。(Ic19bab/274179837
  • Enum.valueOf 的值参数名称已更改(Ia9b89
  • enum valueOf 抛出更多异常(I818fe
  • 更新了 GlanceAppWidget,以使用 provideGlance 作为主要入口点。GlanceAppWidget.Content 现已弃用。(I202b5
  • 添加了一个选项来为图像提供着色(I26192b/212418562
  • 更多已弃用-隐藏函数的返回类型可空性。(Ibf7b0
  • 添加 @JvmDefaultWithCompatibility 注解(I8f206
  • 移除了未使用的 SingleEntityTemplateData.displayHeader。(I7f094
  • 添加了对使用 lambda 表达式作为回调的支持(Ia0bbd
  • DayNightColorProvider 移至 Glance 模块(I1842cb/256934779
  • 从模板中移除了 LocalColorProvider。模板现在将使用 GlanceTheme.colors。(Ic15e2
  • Text(style: TextStyle) 中移除了可空性(I7123bb/237012816
  • 默认文本颜色为黑色。移除可空性(I3072cb/237012816
  • 将动态主题 ColorProviders 设为自己的对象。将 ResourceColorProvider 设为模块内部。(Id0e2db/237012816
  • ImageSize 添加了 Undefined 类别。(I2fa39
  • 移除已弃用的 GlanceAppWidget.Content 函数(Ib05f6
  • 将修饰符添加为 AndroidRemoteViews 的参数。(I515d4
  • 添加 GlanceAppWidget.compose 以简化单元测试(Ie9b28

错误修复

  • 为 Glance 文本字体添加了一个演示微件(I5c3d7
  • 使 AndroidRemoteViews 可使用 Modifier 进行调整大小。
  • 不一致的主题颜色问题已解决
  • 所有资源现在都已添加前缀以避免冲突

版本 1.0.0-alpha05

2022 年 10 月 5 日

androidx.glance:glance:1.0.0-alpha05androidx.glance:glance-appwidget:1.0.0-alpha05androidx.glance:glance-wear-tiles:1.0.0-alpha05 已发布。版本 1.0.0-alpha05 包含这些提交。

新功能

  • requestPinGlanceAppWidget 添加到 GlanceAppWidgetManager,允许应用提示用户将基于 Glance 的微件添加到其主屏幕。(Ic6e47
  • ACTION_DEBUG_UPDATE 添加到 GlanceAppWidgetReceiver,以允许开发人员在已 ROOT 设备和模拟器上通过 adb 强制更新其微件。(I94ae1

API 变更

  • 移除了 Glance 模板中的标题操作按钮,以简化用例。(Ie4387
  • 重构了单实体模板以重用块子系统设计。(Iecd2c
  • 重构了 Glance 列表模板以使用 Text/Image/Action 块设计。(If0cc1
  • TextBlockImageBlock 添加了优先级数字范围。(I73100

错误修复

  • 移除了 Material3 依赖项。(I28d1c
  • 转向更一致的系统,用于在 Glance 模板布局中添加边距和间距。(I29773
  • 修复了阻止小型化版本构建的格式错误的 Proguard 规则。

版本 1.0.0-alpha04

2022 年 8 月 10 日

androidx.glance:glance:1.0.0-alpha04androidx.glance:glance-appwidget:1.0.0-alpha04androidx.glance:glance-wear-tiles:1.0.0-alpha04 已发布。版本 1.0.0-alpha04 包含这些提交。

新功能

  • 添加了按钮着色功能。
  • 添加了 GlanceComposable 注解以实现更好的编译时检查。
  • 添加了 Wear 特定的 Glance 功能。

API 变更

  • 更新了 Glance 图库数据 API 和精简视图。(Ibc7a8
  • 添加了 ButtonColors 用于配置按钮。(Iea88db/236305351
  • ColorProvider.resolve 重命名为 ColorProvider.getColorIc9dfe
  • TextStyle 添加了 copy() 方法。(I9aef6
  • 添加了一个 ColorProviders 类,可用作 Glance 主题的一部分。(I848b9b/237012816
  • 为列表样式和折叠视图添加了列表模板支持。(I50cdc
  • GlanceModiierGlanceCurvedModifier 添加了语义。(Ifda7e
  • 添加 GlanceComposable 注解。(I5dbf0
  • 将 Glance 模板移至主 Glance 项目。(I9db94
  • 添加 ColorProvider.resolve()Ife532b/214733442
  • 获取现有 appWidgetId 或配置活动意图中的 GlanceId 的新方法(Icb70cb/230391946
  • 添加 GlanceComposable 注解。(I2c21f
  • 添加了 GlanceRemoteViews,用于在 GlanceAppWidget 之外运行组合。(I18f92
  • 移除了 ProgressIndicatorDefaults 中的 Color。(I40299
  • ActionCallback 的 onRun 方法重命名为 onAction,以与公共 API 保持一致,这是 API 审查反馈的要求。(Icfa57
  • 将 Glance 模板布局转换为使用 map(I46bfd
  • 添加 RadioButton 可组合项(I4ecce
  • 添加了 GlanceWearTiles 用于组合穿戴式设备磁贴(Ia9f65
  • GlanceCurvedModifier 添加了 clickable(Iec2a0
  • CurvedRow 实现为作用域,并创建 DSL 以添加普通可组合项和/或弯曲元素。还添加了 curvedLinecurvedSpacer,它们在原型磁贴中转换为 ArcLineArcSpacer。(Ib955b
  • 更新了核心和 appcompat 中的可空性以匹配 Tiramisu DP2(I0cbb7
  • 在 glance-wear-tiles 中添加了对 RuncallbackAction 的支持,目前仅支持不带参数的 RunCallbackActionIde64a

外部贡献

  • 由于 test-coroutines-lib 迁移,更新了 :compose:ui:ui-test API (updateApi)(I3366d

版本 1.0.0-alpha03

2022 年 2 月 23 日

androidx.glance:glance-*:1.0.0-alpha03 已发布。版本 1.0.0-alpha03 包含这些提交。

新功能

  • 简化了状态定义,默认使用 Preferences。

API 变更

  • 简化状态处理,将 PreferencesGlanceStateDefinition 设为默认状态处理方式。移除了 GlanceAppWidget.updateAppWidgetState,并引入了默认使用 PreferencesupdateAppWidgetState。(I58963
  • 添加 Glance TemplateText 类并更新模板设计(I4e146
  • 为 Freeform 模板添加了轮廓基础结构(If03d6
  • SingleEntityTemplate 布局更新(If925d
  • 添加了 LazyVerticalGridI5f442
  • SingleEntityTemplate 上使用 ColorProviderI01ee0
  • 更新模板类名(I3720e
  • 添加了 LinearProgressIndicatorCircularProgressIndicator 可组合项。(Ie116b

错误修复

  • 初始 Glance 模板实现,定义“单项模板”数据和示例模板布局(I35837
  • 默认情况下将磁贴内容居中对齐(I264be
  • 修复了 glance-wear-tiles 中 fillMaxSize/Width/Height 的错误(I0a39f

版本 1.0.0-alpha02

2022 年 1 月 26 日

androidx.glance:glance-*:1.0.0-alpha02 已发布。版本 1.0.0-alpha02 包含这些提交。

新功能

此版本包含一组 API,用于使用 Compose 运行时构建 Wear Tiles,其中包含为“Glanceables”优化的可组合项

  • 通过扩展 GlanceTileService 声明您的穿戴式设备磁贴服务,该服务用于在可组合的 Content() 函数中创建您的磁贴。
  • 穿戴式设备磁贴专用的 Glance 可组合项:CurvedRowCurvedText
  • 通过定义 TimelineMode.SingleEntryTimelineMode.TimeBoundEntries 来处理磁贴的不同时间轴模式。
  • LocalTimeInterval,本地组合引用特定的时间间隔。
  • BorderModifer 是一个 GlanceModifier,用于在元素周围应用边框。

此版本还向 AppWidget Glance 添加了进度指示器。

API 变更

  • 添加了 LinearProgressIndicatorCircularProgressIndicator 可组合项。(Ie116b
  • actionStartBroadcastReceiver 更改为 actionSendBroadcastI7d555
  • 将 Context 传递给 GlanceAppWidget onDelete 回调(I4c795

错误修复

  • 正确处理 OPTIONS_APPWIDGET_SIZES(如果存在但为空)。(I01f82

版本 1.0.0-alpha01

2021 年 12 月 15 日

androidx.glance:glance:1.0.0-alpha01androidx.glance:glance-appwidget:1.0.0-alpha01androidx.glance:glance-appwidget-proto:1.0.0-alpha01 已发布。版本 1.0.0-alpha01 包含这些提交。

初始版本中的功能

  • Glance 的第一个版本包含第一组 API,用于使用 Compose Runtime 构建 AppWidget,其中包含一组为“Glanceables”优化的新可组合项。

功能