Wear Tiles

Create applications for Wear OS by Google smartwatches.
Latest Update Stable Release Release Candidate Beta Release Alpha Release
August 10, 2022 1.0.1 1.1.0-rc01 - -

Declaring dependencies

To add a dependency on Wear, 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 {
    // Use to implement support for wear tiles
    implementation "androidx.wear.tiles:tiles:1.1.0-rc01"

    // Use to utilize components and layouts with Material design in your tiles
    implementation "androidx.wear.tiles:tiles-material:1.1.0-rc01"

    // Use to preview wear tiles in your own app
    debugImplementation "androidx.wear.tiles:tiles-renderer:1.1.0-rc01"

    // Use to fetch tiles from a tile provider in your tests
    testImplementation "androidx.wear.tiles:tiles-testing:1.1.0-rc01"
}

Kotlin

dependencies {
    // Use to implement support for wear tiles
    implementation("androidx.wear.tiles:tiles:1.1.0-rc01")

    // Use to utilize components and layouts with Material design in your tiles
    implementation("androidx.wear.tiles:tiles-material:1.1.0-rc01")

    // Use to preview wear tiles in your own app
    debugImplementation("androidx.wear.tiles:tiles-renderer:1.1.0-rc01")

    // Use to fetch tiles from a tile provider in your tests
    testImplementation("androidx.wear.tiles:tiles-testing:1.1.0-rc01")
}

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-rc01

August 10, 2022

androidx.wear.tiles:tiles-*:1.1.0-rc01 is released. Version 1.1.0-rc01 contains these commits.

  • There were no new changes between the Beta and RC release.

Version 1.1.0-beta01

July 27, 2022

androidx.wear.tiles:tiles-*:1.1.0-beta01 is released. Version 1.1.0-beta01 contains these commits.

The 1.0.0-beta01 release of Tiles Material library contains components and layouts that are in-line with Material guidelines and easy to build.

The included components are:

  • Button - clickable, circular-shaped object, with either icon, text or image with 3 predefined sizes.
  • Chip - clickable, stadium-shaped object that can contain an icon, primary and secondary labels, and has fixed height and customizable width.
  • CompactChip & TitleChip - two variations of the standard Chip that have smaller and larger heights, respectively, and can contain one line of text.
  • CircularProgressIndicator - colored arc around the edge of the screen with the given start and end angles, which can describe a full or partial circle with the full progress arc behind it.
  • Text - styled text which uses the recommended Wear Material typography styles

All these components have their own colors object that can be built with the main Colors class to easily apply the same theme over all components. In addition to colors, there is a Typography class to easily get FontStyle objects using the typography name.

In addition to components, there are recommended tiles layouts:

  • PrimaryLayout - A layout which can be customized by adding primary or secondary labels, content in the middle, and a primary chip at the bottom. The main content within this layout could be added as a MultiSlotLayout or MultiButtonLayout object.
  • EdgeContentLayout - A layout for hosting CircularProgressIndicator around the edge with main content inside and primary or secondary label around it.
  • MultiButtonLayout - A layout that can contain 1 - 7 buttons, arranged in line with the Material guidelines depending on their number.
  • MultiSlotLayout - A row-like style layout with horizontally aligned and spaced slots (for icons or other small content).

All layouts have recommended padding and styles applied that are within Material guidelines.

API Changes

  • Major refactor to the Chip components that includes separating setters in Builder so that each part of the content is passed in separately with renaming to match guidelines (primary label, secondary label, image resource id). Additionally, content description will be auto generated if not set. (I57622)
  • ProgressIndicatorLayout has been renamed to EdgeContentLayout. (Ic1aa6)
  • Button size contents have been renamed to names without _BUTTON suffix in it with additional Javadocs clarification across Button. (I1dfe2)

Bug Fixes

  • Margins, padding and overall arrangement in Material Layouts has been updated to accommodate all types of recommended layouts and screen sizes and shapes.
  • Improvements to Material Layouts. In MultiSlotLayout slots are now flexible in width where they’ll wrap content instead of being fixed size.(I52919),(If18b4)
  • Area that can be tapped on CompactChip has been increased to follow accessibility guidelines. (Ie8264)

Version 1.1.0-alpha09

June 29, 2022

androidx.wear.tiles:tiles-*:1.1.0-alpha09 is released. Version 1.1.0-alpha09 contains these commits.

New Features

  • We have added support for adding optional labels in ProgressIndicatorLayout. (I30788)

API Changes

  • Helper methods for ElementMetadata now accept ElementMetadata instead of Modifiers. (I5a70f)

Bug Fixes

  • The limitation of 9 characters on CompactChip was removed. If text is too big to fit into the screen in PrimaryLayout, it will be ellipsized. (Id56ec)
  • Getters in Chip now have Content suffix. (Iba437)
  • Javadoc clarification across Tiles Material classes. (I56e41), (I80f31), (Iba437)

Version 1.1.0-alpha08

June 1, 2022

androidx.wear.tiles:tiles-*:1.1.0-alpha08 is released. Version 1.1.0-alpha08 contains these commits.

New Features

  • Metadata tag has been added to Modifiers to be used to track component’s metadata with helper methods added to the Helper class. (I70db2),(I30c3d)
  • Static method fromLayoutElement has been added to all components and layouts inside of Tiles Material. It should be used for testing, to cast a LayoutElement obtained from accessing the contents of a container to its original type. (Ia572a),(Idbd8a),(I3ae13),(I292fe),(I8b20f),(I3cacb),(I84b24)

Version 1.1.0-alpha07

May 18, 2022

androidx.wear.tiles:tiles-*:1.1.0-alpha07 is released. Version 1.1.0-alpha07 contains these commits.

API Changes

  • Getters related to different setters for content have now been added to the ProgressIndicatorLayout and PrimaryLayout. Now all setters in these classes have matching getters.(Iddbe5) (Iabe4e)
  • Getter for content description in Material Components can return null since its setter is not mandatory.
  • Attempting to create a Button with no content passed in will result in IllegalArgumentException. (I7fc0c)
  • Icon color related fields in ChipColors have been renamed from iconTintColor to iconColor. (Ic053b)

Bug Fixes

  • Added androidTests for Layouts in Tiles Material. (I96404)

Version 1.1.0-alpha06

May 11, 2022

androidx.wear.tiles:tiles-*:1.1.0-alpha06 is released. Version 1.1.0-alpha06 contains these commits.

New Features

  • The new layout has been added to the Material Layouts sub library - MultiButtonLayout. It represents a layout that can contain between 1 and 7 buttons arranged in line with the Material guidelines. In most cases, this layout should be passed in as a content to the PrimaryLayout. (Ib727f)

API Changes

  • MultiSlotLayout has been refactored to have only slots in it. This layout should be passed as a content to the main PrimaryLayout. (I1870f)
  • Updated defined default colors for CircularProgressIndicator to be one value instead of primary and secondary. (I64a51)
  • Added getter for horizontal spacer in MultiSlotLayout. (I11e1e)

Bug Fixes

  • Android tests for Components have been added to Tiles Material. (I20041)

Version 1.1.0-alpha05

April 6, 2022

androidx.wear.tiles:tiles-*:1.1.0-alpha05 is released. Version 1.1.0-alpha05 contains these commits.

New Features

  • Added helper methods to convert LayoutElement to Layout, Timeline, TimelineEntry into these classes for easier Tiles building. (I2f6d1)
  • Colors object was added to the Material library to be passed in across components’ colors as a theme. (I0792c)

API Changes

  • Material Text component requires text passed in into constructor. This component can now be customized by setting weight. (I25dbd)
  • Removed constants from ChipDefaults that are not used in the public setters. (I7baed)
  • Removed getters from CompactChip & TitleChip that don't have matching setters. (I99e85)
  • Removed DEFAULT_PADDING from ProgressIndicatorDefaults. (Idabcd)
  • Material components now accept CharSequence for content description instead of String. (I5b21a)

Bug Fixes

  • Refactored setters implementation of optional parameters in Button. (Ib7135)
  • Font style variant has been added to the fonts in Typography. (I8dbc6)

Version 1.1.0-alpha04

March 23, 2022

androidx.wear.tiles:tiles-*:1.1.0-alpha04 is released. Version 1.1.0-alpha04 contains these commits.

New Features

  • Optional primary or secondary label can be added to PrimaryLayout. (Ib9916)
  • Text component can be customized by setting overflow, italic, underline, etc. (I703f7)

API Changes

  • Default color constants have been removed from the Tiles Material API. (I0ab55)
  • All clickable components in Tiles Material require Clickable object in their Builder’s constructor instead of an Action. (I2f101)

Bug Fixes

  • Text will now draw an ellipsis on overflow in Chip and Text component. (I8a2f8)
  • Improved components look when the user font scale is set to large. (Ib63b1)
  • Clarify Javadocs of setPrimaryChipContent in PrimaryLayout. (Ie6296)

Version 1.1.0-alpha03

February 23, 2022

androidx.wear.tiles:tiles-*:1.1.0-alpha03 is released. Version 1.1.0-alpha03 contains these commits.

API Changes

  • Text component with the recommended typography styles has been added to the TIles Material. (Iec0ae)

Version 1.1.0-alpha02

February 9, 2022

androidx.wear.tiles:tiles-*:1.1.0-alpha02 is released. Version 1.1.0-alpha02 contains these commits.

New Features

  • A new sub-library layouts in Tiles Material has been added. It contains opinionated Tiles layouts with recommended padding and margin applied to make Tile development faster and easier implementation. Initial layouts are:
    • PrimaryLayout (I7ba91) that represents the layout with a primary chip at the bottom and content in the center.
    • MultiSlotLayout (I32104) that represents a layout with labels on rows 1 and 3, horizontally aligned and spaced slots on row 2 and all followed by a 4th row that contains a primary chip.
    • ProgressIndicatorLayout (I9fec6) that represents a layout with the circular progress indicator around the edge of the screen and the given content inside.
  • CircularProgressIndicator (Ic4b88) has been added to the Tiles Material components.

API Changes

  • Renamed remaining constants used by TitleChip to include title in the name. (I14f4c)
  • setHorizontalAlignment method has been added to the Chip. (Ie6e0b)

Version 1.1.0-alpha01

January 26, 2022

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

New Features

  • The new library Tiles Material has been added. It contains components to build Tiles layouts faster and easier with Material design. Initial components are:
    • Button
    • Chip
    • CompactChip
    • TitleChip

Bug Fixes

  • Fix bug in TileUiClient which led to cached resources being discarded. (I60e0b)

Version 1.0

Version 1.0.1

January 26, 2022

androidx.wear.tiles:tiles-*:1.0.1 is released. Version 1.0.1 contains these commits.

Bug Fixes

  • Fix bug in TileUiClient which led to cached resources being discarded. (I60e0b)

Version 1.0.0

November 3, 2021

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

Major features of 1.0.0

  • The Wear Tiles library provides functionality to build custom Tiles for Wear OS devices, along with the classes that allow the system to fetch your Tile and display it right next to your watch face.
  • tiles-renderer allows you to show a Tile as part of an Android Activity, facilitating quick testing of your tile layouts.

Version 1.0.0-rc01

October 27, 2021

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

Version 1.0.0-beta01

October 13, 2021

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

Bug Fixes

  • Fixed NullPointerException in TileUiClient when an empty resource version was provided. (I0586e)

Version 1.0.0-alpha12

September 29, 2021

androidx.wear.tiles:tiles-*:1.0.0-alpha12 is released. Version 1.0.0-alpha12 contains these commits.

Bug Fixes

  • UpdateScheduler no longer uses a weak reference, fixing issues where TileUiClient would not update(I1120d, b/199061124)

  • Declare that SysUiTileUpdateRequester queries PacakgeManager, fixing a bug where tile updates would not work on R+ devices. (I1120d)

Version 1.0.0-alpha11

September 1, 2021

androidx.wear.tiles:tiles-*:1.0.0-alpha11 is released. Version 1.0.0-alpha11 contains these commits.

New Features

  • Added and released a testing library, androidx.wear.tiles:tiles-testing library to enable developers to test their tiles more easily. (Iedb6b)

API Changes

  • Renamed TileProviderService to TileService. (I1ad2c)
  • Tiles builders updated; static .builder() methods have been deprecated in favour of calling new Foo.Builder(), and setter overloads which accepted a Builder instance have been removed. (Ia9606)
  • TileRenderer should now use a UI context, instead of the application context. (I84b61)

Bug Fixes

  • Fix bug causing multiple underlines to be applied in certain situations. (Ib6712)

Version 1.0.0-alpha10

August 18, 2021

androidx.wear.tiles:tiles:1.0.0-alpha10, androidx.wear.tiles:tiles-proto:1.0.0-alpha10, and androidx.wear.tiles:tiles-renderer:1.0.0-alpha10 are released. Version 1.0.0-alpha10 contains these commits.

API Changes

  • Removed layout checkers from public API. These will always be enabled, although will only raise a warning if a check fails. (Ie9f29)
  • TileRenderer now accepts a UI context, instead of the Application Context.

Bug Fixes

  • Fixed bug which prevented clickable elements in a Spannable from being clicked.

Version 1.0.0-alpha09

July 21, 2021

androidx.wear.tiles:tiles:1.0.0-alpha09, androidx.wear.tiles:tiles-proto:1.0.0-alpha09, and androidx.wear.tiles:tiles-renderer:1.0.0-alpha09 are released. Version 1.0.0-alpha09 contains these commits.

New Features

  • Added layout checkers to Wear Tiles' renderer. (I3a869)
    • These are used to validate best practises in your tile. To begin with, these will raise a warning if your tile does not contain any elements with a Semantics modifier.
  • Added documentation for DefaultTileProviderClient and TestingTileProviderClient constructors. (I9f4b9)

API Changes

  • Renaming in TileProviderClient (I0ec36):
    • getApiVersion -> requestApiVersion
    • tile/resourcesRequest -> requestTile/Resources
    • onTileFooEvent -> sendOnTileFooEvent
  • Added layout checkers to Wear Tiles' renderer. (I3a869)

Bug Fixes

  • Ensure that a LaunchAction target does not have special permissions. (I39136)

Version 1.0.0-alpha08

June 30, 2021

androidx.wear.tiles:tiles:1.0.0-alpha08, androidx.wear.tiles:tiles-proto:1.0.0-alpha08, and androidx.wear.tiles:tiles-renderer:1.0.0-alpha08 are released. Version 1.0.0-alpha08 contains these commits.

New Features

  • Spannables now support line_height instead of line_spacing.

API Changes

  • Add support for line_height in Spannables, remove line_spacing. (Ibeb54)
    • Code using line_spacing should be ported to use line_height instead.

Bug Fixes

  • Fix bug when using proportional dimensions. (I37ace)
  • Fix bug preventing Text elements having content descriptions. (Id2c7d)

Version 1.0.0-alpha07

June 16, 2021

androidx.wear.tiles:tiles:1.0.0-alpha07, androidx.wear.tiles:tiles-proto:1.0.0-alpha07, and androidx.wear.tiles:tiles-renderer:1.0.0-alpha07 are released. Version 1.0.0-alpha07 contains these commits.

API Changes

  • Add TileProviderClient interface, and expose DefaultTileProviderClient, allowing implementations to bind to a TileProviderService interface. (I69165)

Version 1.0.0-alpha06

June 2, 2021

androidx.wear.tiles:tiles:1.0.0-alpha06, androidx.wear.tiles:tiles-proto:1.0.0-alpha06, and androidx.wear.tiles:tiles-renderer:1.0.0-alpha06 are released. Version 1.0.0-alpha06 contains these commits.

API Changes

  • All Builder classes now contain getters for all properties. Note that these are intended for testing purposes only (I9d155)
  • Package change: Classes in androidx.wear.tiles.builders have been moved to androidx.wear.tiles.
  • Add experimental tint support to Tiles. (I38929)
  • Renamed LayoutElementBuilders.HALIGN_* to LayoutElementBuilders.HORIZONTAL_ALIGN_* (I67e58)
  • Renamed LayoutElementBuilders.VALIGN_* to LayoutElementBuilders.VERTICAL_ALIGN_* (I67e58)
  • Renamed LayoutElementBuilders.SPAN_VALIGN_* to LayoutElementBuilders.SPAN_VERTICAL_ALIGN_* (I67e58)
  • Added builder classes for Requests and Events. (Ib5cf4)
  • Migrated TileProviderService to use request and event classes from RequestBuilders and EventBuilders, rather than RequestReaders/EventReaders (e.g. onTileRequest now provides you with a RequestBuilders.TileRequest, rather than RequestReaders.TileRequest). (I46ea1)

Bug Fixes

  • Fix bug in async image loading for Tiles renderer. (Iad9b0)
  • Fixed layout bug when placing an image with width or height set to expand() in a Box with width or height set to wrap(). (I33770)

Version 1.0.0-alpha05

May 18, 2021

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

API Changes

  • Removed getTileId from incoming tile events (TileAddEvent, TileRemoveEvent, TileEnterEvent, TileLeaveEvent, TileRequest). (Ifbba2)
  • Renamed ImageResource#setAndroidResourceByResid to setAndroidResourceByResId (I4ba6e)
  • Renamed TimelineManager#deInit to close, and implemented AutoCloseable. (I5dff2)

Version 1.0.0-alpha04

May 5, 2021

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

API Changes

  • Hidden concrete TileProviderService classes.
    • Made TileUpdateRequester take a Class<? extends TileProviderService>. (Ib7cca)
  • Added ability to add extras to AndroidActivity. (I748f4)

Tiles Version 1.0.0-alpha03

April 21, 2021

androidx.wear.tiles:tiles:1.0.0-alpha03, androidx.wear.tiles:tiles-proto:1.0.0-alpha03, and androidx.wear.tiles:tiles-renderer:1.0.0-alpha03 are released. Version 1.0.0-alpha03 contains these commits.

API Changes

  • Rename TileManager -> TileClient
    • Rename TileManager#create -> TileClient#connect (I91839)

Bug Fixes

  • Added Proguard rules to ensure tiles and tiles-renderer work properly with Proguard enabled (Ie3d85)

Version 1.0.0-alpha02

April 7, 2021

androidx.wear.tiles:tiles:1.0.0-alpha02, androidx.wear.tiles:tiles-proto:1.0.0-alpha02, and androidx.wear.tiles:tiles-renderer:1.0.0-alpha02 are released. Version 1.0.0-alpha02 contains these commits.

API Changes

  • androidx.wear:wear-tiles has moved groups, and should now be referred to as androidx.wear.tiles:tiles
  • androidx.wear:wear-tiles-renderer has moved groups, and should now be referred to as androidx.wear.tiles:tiles-renderer
  • TileRenderer.LoadActionListener now consumes an instance of androidx.wear.tiles.builders.StateBuilders.State rather than androidx.wear.tiles.proto.StateProto.State.
  • TileRenderer now accepts Tile resources from androidx.wear.tiles.builders.ResourceBuilders.Resources, rather than an instance of androidx.wear.tiles.renderer.ResourceAccessors.

Bug Fixes

  • Fixed inability to use LoadActionListener, as it exposed an internal class.

Version 1.0.0-alpha01

March 10, 2021

androidx.wear:wear-tiles:1.0.0-alpha01, androidx.wear:wear-tiles-proto:1.0.0-alpha01, and androidx.wear:wear-tiles-renderer:1.0.0-alpha01 are released. Version 1.0.0-alpha01 contains these commits.

New Features

  • The Wear Tiles Renderer library provides functionality to build custom Tiles for Wear OS devices, along with the classes that allow the system to fetch your Tile and display it right next to your watch face.