Glance

Build layouts for remote surfaces using a Jetpack Compose-style API.
Latest Update Stable Release Release Candidate Beta Release Alpha Release
February 7, 2024 - - - 1.0.0-alpha05

Declaring dependencies

To add a dependency on Glance, you must add the Google Maven repository to your project. Read Google's Maven repository for more information.

Add the dependencies for the artifacts you need in the build.gradle file for your app or module:

Groovy

dependencies {
    // For Glance support
    implementation "androidx.glance:glance:1.1.0-alpha01"
    // For AppWidgets support
    implementation "androidx.glance:glance-appwidget:1.1.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.1.0-alpha01")
    
    // For AppWidgets support
    implementation("androidx.glance:glance-appwidget:1.1.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"
    }
}

For more information about dependencies, see Add build dependencies.

Feedback

Your feedback helps make Jetpack better. Let us know if you discover new issues or have ideas for improving this library. Please take a look at the existing issues in this library before you create a new one. You can add your vote to an existing issue by clicking the star button.

Create a new issue

See the Issue Tracker documentation for more information.

Version 1.1

Version 1.1.0-alpha01

February 7, 2024

androidx.glance:glance-*:1.1.0-alpha01 is released. Version 1.1.0-alpha01 contains these commits.

New Features

  • Unit test library for Glance that doesn’t require UI Automator. Glance code can be tested directly without having to inflate the view.
  • Higher level components for simpler layouts.
  • New Modifiers and theme options.
  • New API for getting a flow of RemoteViews from a composition, runComposition

API Changes

  • Adds a new widgetBackground color role to Glance themes. (Ia2ab8)
  • Add GlanceAppWidget.runComposition (I6344c, b/298066147)
  • Adds new TopBar component (Ibd361)
  • Adds overrides to the clickable modifier. (Iacecf)
  • Adds a new api for tinting buttons. This should be experimental until 1.0 ships. (I92523)
  • Adds runGlanceAppWidgetUnitTest that provides scope to call methods on GlanceAppWidgetUnitTest such as provideComposable to provide a small isolated composable for test, onNode to find a Glance composable element in the provided content. This enables you to write unit tests for individual composable functions in your appWidget to verify that given certain inputs the function outputs the intended set of glance composable elements. (I2f682)
  • Adds a testTag modifier in semantics for use in unit tests. (I8f62f)
  • update TitleBar - text and icon individually tintable. (Ia0a60)
  • Adds scaffold component (I8a736)
  • Adds hasActionRunCallbackClickAction filter and assertHasActionRunCallbackClickAction assertion to test actionRunCallack. Also, adds additional shorthand variant functions for action related test filters - hasStartActivityClickAction<activityClass>(..), hasStartServiceAction<receiverClass>(..), hasSendBroadcastAction<receiverClass>(..). Adds similar variants for their assertHasXXX counterparts. (Ieca63)
  • Moves unreleased api around. Changes a modifier from internal to public but library restricted (If2a08)
  • Adds onCompositionError method where developers can run code when an error occurs (I9b56f)
  • Adds button and iconbutton apis to glance (I0fd6f)
  • Adds isLinearProgressIndicator, isIndeterminateLinearProgressIndicator, isIndeterminateCircularProgressIndicator filters to match progress indicators. Additional includes hasAnyDescendants filter to test if a node has a descendant in its sub-hierarchy that matches a specific matcher (Ifd426)
  • Adds assertions and filters to enable testing of click actions that start service / activity or broadcasts. Also includes testing if input elements are checked. (I3041c)

Version 1.0.0

Version 1.0.0-alpha06

February 7, 2024

androidx.glance:glance-appwidget-preview:1.0.0-alpha06 and androidx.glance:glance-preview:1.0.0-alpha06 are released. Version 1.0.0-alpha06 contains these commits.

New Features

  • Version updated to follow the main Glance module.

Version 1.0.0

September 6, 2023

androidx.glance:glance-*:1.0.0 is released. Version 1.0.0 contains these commits.

Major features of 1.0.0

  • Move Glance to stable version 1.0.0

Version 1.0.0-rc01

July 26, 2023

androidx.glance:glance-*:1.0.0-rc01 is released. Version 1.0.0-rc01 contains these commits.

Moves Glance to rc01 on the way to stable release for 1.0.0.

New Features

  • Adds key parameters to action lambdas for more stable action invocation.
  • Adds the ability to provide to ActvityOptions to startActivity actions.
  • Adds support for Android 14

API Changes

  • Added an optional key parameter for all elements that accept lambdas. (Id96c1, b/282445798)
  • Add support for setting ActivityOptions bundle for actionStartActivity (I6a08d)
  • Merged public and experimental API files for d,e,f,g-paths (I03646, b/278769092)
  • N/A, API file changes are just reordering methods (I5fa95)
  • Add API for setting CoroutineContext for GlanceAppWidgetReceiver requests (I0a100)
  • Added a new API to provide ActivityOptions for LazyColumn and LazyVerticalGrid that will be used for all actions in the list.(Id8d71)

Bug Fixes

  • N/A, API file changes are just reordering methods (I5fa95)
  • Glance text component style demo (Ie78a4)

Version 1.0.0-beta01

May 10, 2023

androidx.glance:glance-*:1.0.0-beta01 is released. Version 1.0.0-beta01 contains these commits.

New Features

  • Moves the library into beta.
  • Support for themeing using GlanceTheme , adds glance-material and glance-material3 modules to support material 2 and material 3 style themes in Glance.
  • Support for FontFamily added to text apis.
  • Moved GlanceAppWidget to a WorkManager session based update mechanism. Users of Glance for AppWidgets should now override GlanceAppWidget.provideGlance instead of the old Content method. As this now happens in a worker, this is now a good place to load resources, database or network items without having to have a separate worker.

API Changes

  • Added *Defaults API for Button, Checkbox, RadioButton and Switch. It brings glance closer in line with the patterns of Jetpack Compose. (I94828)
  • New Glance templates module (I94459)
  • Making ResourceColorProvider internal to module. Breaking change. Needed because ResourceColorProvider should only be used for dynamic theming to avoid situations where some colors are dynamic resources and some are fully resolved. (Ib0db7)
  • Adds FontFamily as an option for TextStyle. (Ic19ba, b/274179837)
  • Value parameter name for Enum.valueOf changed (Ia9b89)
  • More thrown exceptions from enum valueOf (I818fe)
  • Updated GlanceAppWidget to use provideGlance as the main entrypoint. GlanceAppWidget.Content is now deprecated. (I202b5)
  • Adds an option to supply tint color for images (I26192, b/212418562)
  • More return type nullability of deprecated-hidden functions. (Ibf7b0)
  • Adding @JvmDefaultWithCompatibility annotation (I8f206)
  • Removed the unused SingleEntityTemplateData.displayHeader. (I7f094)
  • Added support for using lambdas as callbacks (Ia0bbd)
  • Moved DayNightColorProvider to glance module (I1842c, b/256934779)
  • Removes LocalColorProvider from Templates. Templates will now use GlanceTheme.colors (Ic15e2)
  • Removed nullability from Text(style: TextStyle) (I7123b, b/237012816)
  • Default text color to black. remove nullability (I3072c, b/237012816)
  • Making dynamic theme ColorProviders its own object. Making ResourceColorProvider internal to the module. (Id0e2d, b/237012816)
  • Add the Undefined category to ImageSize. (I2fa39)
  • Remove deprecated GlanceAppWidget.Content function (Ib05f6)
  • Adds modifier as a parameter to AndroidRemoteViews. (I515d4)
  • Add GlanceAppWidget.compose to make unit testing easier (Ie9b28)

Bug Fixes

  • Added a demo widget for Glance text fonts (I5c3d7)
  • Makes AndroidRemoteViews sizable with Modifier.
  • Issues with inconsistent theme colors resolved
  • All resources now prefixed to avoid collisions

Version 1.0.0-alpha05

October 5, 2022

androidx.glance:glance:1.0.0-alpha05, androidx.glance:glance-appwidget:1.0.0-alpha05, and androidx.glance:glance-wear-tiles:1.0.0-alpha05 are released. Version 1.0.0-alpha05 contains these commits.

New Features

  • Adds requestPinGlanceAppWidget to GlanceAppWidgetManager, allowing apps to prompt a user to add their Glance based widget to their home screen. (Ic6e47)
  • Adds ACTION_DEBUG_UPDATE to GlanceAppWidgetReceiver to allow developers to force their widget to update from adb on rooted devices and emulators. (I94ae1)

API Changes

  • Remove header action buttons in Glance templates to simplify use case. (Ie4387)
  • Refactored Single Entity Template to reuse the Block subsystem design. (Iecd2c)
  • Refactored Glance List Template to useText/Image/Action Block design. (If0cc1)
  • Add priority number range for TextBlock and ImageBlock. (I73100)

Bug Fixes

  • Removed Material3 dependency. (I28d1c)
  • Moves toward a more consistent system for adding margins and spacing in glance template layouts. (I29773)
  • Fixes malformed Proguard rule that was blocking minified releases from building.

Version 1.0.0-alpha04

August 10, 2022

androidx.glance:glance:1.0.0-alpha04, androidx.glance:glance-appwidget:1.0.0-alpha04, and androidx.glance:glance-wear-tiles:1.0.0-alpha04 are released. Version 1.0.0-alpha04 contains these commits.

New Features

  • Adds Button coloring features.
  • Adds GlanceComposable annotation for better compile time checking.
  • Adds Wear specific Glance features.

API Changes

  • Update Glance Gallery Data API and Condensed View. (Ibc7a8)
  • Adds ButtonColors for configuring buttons. (Iea88d, b/236305351)
  • Rename ColorProvider.resolve to ColorProvider.getColor (Ic9dfe)
  • Adds copy() method to TextStyle. (I9aef6)
  • Adds a ColorProviders class that can be used as part of themes for Glance. (I848b9, b/237012816)
  • Add List Template support to list styles and collapsed view. (I50cdc)
  • Add semantics to GlanceModiier and GlanceCurvedModifier. (Ifda7e)
  • Add GlanceComposable annotation. (I5dbf0)
  • Moves Glance Templates into the main Glance project. (I9db94)
  • Add ColorProvider.resolve() (Ife532, b/214733442)
  • New method to get GlanceId from an existing appWidgetId or an intent from a configuration activity (Icb70c, b/230391946)
  • Add GlanceComposable annotation. (I2c21f)
  • Added GlanceRemoteViews for running composition outside of GlanceAppWidget. (I18f92)
  • Remove Color in ProgressIndicatorDefaults. (I40299)
  • Rename ActionCallback's onRun method to onAction, for consistency with the public APIs, as required by the API review feedback. (Icfa57)
  • Convert glance template layouts to use a map (I46bfd)
  • Add RadioButton composable (I4ecce)
  • Added GlanceWearTiles for composing wear tiles (Ia9f65)
  • Added clickable to GlanceCurvedModifier (Iec2a0)
  • Implement CurvedRow as a scope and create a DSL to add normal composable and/or curved elements. Also added curvedLine and curvedSpacer which are translated to ArcLine and ArcSpacer in proto tiles (Ib955b)
  • Updated nullability in core and appcompat to match Tiramisu DP2 (I0cbb7)
  • Add support for RuncallbackAction in glance-wear-tiles, only RunCallbackAction with NO parameter is supported for now (Ide64a)

External Contribution

  • Updated :compose:ui:ui-test api (updateApi) due to test-coroutines-lib migration (I3366d)

Version 1.0.0-alpha03

February 23, 2022

androidx.glance:glance-*:1.0.0-alpha03 is released. Version 1.0.0-alpha03 contains these commits.

New Features

  • Simplified state definition to default to Preferences.

API Changes

  • Simplify state handling by make PreferencesGlanceStateDefinition the default state handling. Removed GlanceAppWidget.updateAppWidgetState and introduced updateAppWidgetState that uses Preferences by default. (I58963)
  • Add Glance TemplateText class and update Template design (I4e146)
  • Adds outline infrastructure for the Freeform template (If03d6)
  • Updates to SingleEntityTemplate layouts (If925d)
  • Added LazyVerticalGrid (I5f442)
  • Use ColorProvider on SingleEntityTemplate (I01ee0)
  • Update template class name (I3720e)
  • Added LinearProgressIndicator and CircularProgressIndicator composable. (Ie116b)

Bug Fixes

  • Initial glance templates implementation, defines "single item template" data and example template layout (I35837)
  • Align the tile cotent to center by default (I264be)
  • Bug fix with fillMaxSize/Width/Height in glance-wear-tiles (I0a39f)

Version 1.0.0-alpha02

January 26, 2022

androidx.glance:glance-*:1.0.0-alpha02 is released. Version 1.0.0-alpha02 contains these commits.

New Features

This release contains the set of APIs to build Wear Tiles using Compose runtime with composables optimized for "Glanceable"

  • Declare your wear tile service by extending GlanceTileService, a service to create your tile in the composable Content() function.
  • Wear tiles specific glance composables: CurvedRow, CurvedText.
  • Handle different timeline modes for tile by defining TimelineMode.SingleEntry and TimelineMode.TimeBoundEntries.
  • LocalTimeInterval, the Local composition refer to a specific time interval.
  • BorderModifer is a GlanceModifier applying a border around an element.

This release also adds Progress Indicators to AppWidget Glance.

API Changes

  • Added LinearProgressIndicator and CircularProgressIndicator composable. (Ie116b)
  • Change actionStartBroadcastReceiver to actionSendBroadcast (I7d555)
  • Pass Context to GlanceAppWidget onDelete callback (I4c795)

Bug Fixes

  • Correct handling of OPTIONS_APPWIDGET_SIZES if present but empty. (I01f82)

Version 1.0.0-alpha01

December 15, 2021

androidx.glance:glance:1.0.0-alpha01, androidx.glance:glance-appwidget:1.0.0-alpha01, and androidx.glance:glance-appwidget-proto:1.0.0-alpha01 are released. Version 1.0.0-alpha01 contains these commits.

Features in initial release

  • The first release of Glance includes the first set of APIs to build AppWidget using Compose Runtime with a set of new Composables optimized for “Glanceables”.

Features