# ListenableCanvasRenderer

Artifact: [androidx.wear.watchface:watchface-guava](https://developer.android.com/jetpack/androidx/releases/wear-watchface) [View Source](https://cs.android.com/search?q=file:androidx/wear/watchface/ListenableCanvasRenderer.kt+class:androidx.wear.watchface.ListenableCanvasRenderer) Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/wear-watchface#1.0.0) Deprecated in [1.1.0](https://developer.android.com/jetpack/androidx/releases/wear-watchface#1.1.0)

*** ** * ** ***

<br />

```
public abstract class ListenableCanvasRenderer extends Renderer.CanvasRenderer
```

<br />

|---|---|---|---|
| [java.lang.Object](https://developer.android.com/reference/java/lang/Object.html) ||||
| ↳ | [androidx.wear.watchface.Renderer](https://developer.android.com/reference/androidx/wear/watchface/Renderer) |||
|   | ↳ | [androidx.wear.watchface.Renderer.CanvasRenderer](https://developer.android.com/reference/androidx/wear/watchface/Renderer.CanvasRenderer) ||
|   |   | ↳ | [androidx.wear.watchface.ListenableCanvasRenderer](https://developer.android.com/reference/androidx/wear/watchface/ListenableCanvasRenderer) |

*** ** * ** ***

> [!CAUTION]
> **This class is deprecated.**   
> Use ListenableCanvasRenderer2 instead

`https://guava.dev/releases/snapshot-android/api/docs/com/google/common/util/concurrent/ListenableFuture.html`-based compatibility wrapper around `https://developer.android.com/reference/androidx/wear/watchface/Renderer.CanvasRenderer`'s suspending methods.

## Summary

| ### Public constructors |
|---|
| `[ListenableCanvasRenderer](https://developer.android.com/reference/androidx/wear/watchface/ListenableCanvasRenderer#ListenableCanvasRenderer(android.view.SurfaceHolder,androidx.wear.watchface.style.CurrentUserStyleRepository,androidx.wear.watchface.WatchState,kotlin.Int,kotlin.Long,kotlin.Boolean))( @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/android/view/SurfaceHolder.html surfaceHolder, @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/wear/watchface/style/CurrentUserStyleRepository currentUserStyleRepository, @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/wear/watchface/WatchState watchState, int canvasType, @https://developer.android.com/reference/androidx/annotation/IntRange(from = 0, to = 60000) long interactiveDrawModeUpdateDelayMillis, boolean clearWithBackgroundTintBeforeRenderingHighlightLayer )` **This method is deprecated.** Use ListenableCanvasRenderer2 instead |

| ### Public methods |
|---|---|
| `void` | `[init](https://developer.android.com/reference/androidx/wear/watchface/ListenableCanvasRenderer#init())()` **This method is deprecated.** Use ListenableCanvasRenderer2 instead |
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://guava.dev/releases/snapshot-android/api/docs/com/google/common/util/concurrent/ListenableFuture.html<https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html>` | `@https://developer.android.com/reference/androidx/annotation/UiThread [initFuture](https://developer.android.com/reference/androidx/wear/watchface/ListenableCanvasRenderer#initFuture())()` **This method is deprecated.** Use ListenableCanvasRenderer2 instead |

### Inherited methods

From [androidx.wear.watchface.Renderer](https://developer.android.com/reference/androidx/wear/watchface/Renderer) `final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/util/Collection.html<@https://developer.android.com/reference/androidx/annotation/NonNull https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-pair/index.html<@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/lang/Integer.html, @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/wear/watchface/ContentDescriptionLabel>>` `[getAdditionalContentDescriptionLabels](https://developer.android.com/reference/androidx/wear/watchface/Renderer#getAdditionalContentDescriptionLabels())()`

**This method is deprecated.** Use ListenableCanvasRenderer2 instead
`final float` `[getCenterX](https://developer.android.com/reference/androidx/wear/watchface/Renderer#getCenterX())()`

**This method is deprecated.** Use ListenableCanvasRenderer2 instead
`final float` `[getCenterY](https://developer.android.com/reference/androidx/wear/watchface/Renderer#getCenterY())()`

**This method is deprecated.** Use ListenableCanvasRenderer2 instead
`final long` `[getInteractiveDrawModeUpdateDelayMillis](https://developer.android.com/reference/androidx/wear/watchface/Renderer#getInteractiveDrawModeUpdateDelayMillis())()`

**This method is deprecated.** Use ListenableCanvasRenderer2 instead
`@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/android/graphics/Rect.html` `@https://developer.android.com/reference/androidx/annotation/UiThread
[getMainClockElementBounds](https://developer.android.com/reference/androidx/wear/watchface/Renderer#getMainClockElementBounds())()`

**This method is deprecated.** Use ListenableCanvasRenderer2 instead
`final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/wear/watchface/RenderParameters` `[getRenderParameters](https://developer.android.com/reference/androidx/wear/watchface/Renderer#getRenderParameters())()`

**This method is deprecated.** Use ListenableCanvasRenderer2 instead
`final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/android/graphics/Rect.html` `[getScreenBounds](https://developer.android.com/reference/androidx/wear/watchface/Renderer#getScreenBounds())()`

**This method is deprecated.** Use ListenableCanvasRenderer2 instead
`final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/android/view/SurfaceHolder.html` `[getSurfaceHolder](https://developer.android.com/reference/androidx/wear/watchface/Renderer#getSurfaceHolder())()`

**This method is deprecated.** Use ListenableCanvasRenderer2 instead
`final https://developer.android.com/reference/androidx/wear/watchface/WatchFaceColors` `@https://developer.android.com/reference/androidx/wear/watchface/WatchFaceExperimental
[getWatchfaceColors](https://developer.android.com/reference/androidx/wear/watchface/Renderer#getWatchfaceColors())()`

**This method is deprecated.** Use ListenableCanvasRenderer2 instead
`final void` `@https://developer.android.com/reference/androidx/annotation/UiThread
[invalidate](https://developer.android.com/reference/androidx/wear/watchface/Renderer#invalidate())()`

**This method is deprecated.** Use ListenableCanvasRenderer2 instead
`void` `@https://developer.android.com/reference/androidx/annotation/UiThread
[onDestroy](https://developer.android.com/reference/androidx/wear/watchface/Renderer#onDestroy())()`

**This method is deprecated.** Use ListenableCanvasRenderer2 instead
`void` `@https://developer.android.com/reference/androidx/annotation/UiThread
[onRenderParametersChanged](https://developer.android.com/reference/androidx/wear/watchface/Renderer#onRenderParametersChanged(androidx.wear.watchface.RenderParameters))(@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/wear/watchface/RenderParameters renderParameters)`

**This method is deprecated.** Use ListenableCanvasRenderer2 instead
`final void` `[postInvalidate](https://developer.android.com/reference/androidx/wear/watchface/Renderer#postInvalidate())()`

**This method is deprecated.** Use ListenableCanvasRenderer2 instead
`final void` `[sendPreviewImageNeedsUpdateRequest](https://developer.android.com/reference/androidx/wear/watchface/Renderer#sendPreviewImageNeedsUpdateRequest())()`

**This method is deprecated.** Use ListenableCanvasRenderer2 instead
`final void` `[setAdditionalContentDescriptionLabels](https://developer.android.com/reference/androidx/wear/watchface/Renderer#setAdditionalContentDescriptionLabels(kotlin.collections.Collection))(

@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/util/Collection.html<@https://developer.android.com/reference/androidx/annotation/NonNull https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-pair/index.html<@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/lang/Integer.html, @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/wear/watchface/ContentDescriptionLabel>> value

)`

**This method is deprecated.** Use ListenableCanvasRenderer2 instead
`final void` `[setInteractiveDrawModeUpdateDelayMillis](https://developer.android.com/reference/androidx/wear/watchface/Renderer#setInteractiveDrawModeUpdateDelayMillis(kotlin.Long))(long value)`

**This method is deprecated.** Use ListenableCanvasRenderer2 instead
`final void` `[setSurfaceHolder](https://developer.android.com/reference/androidx/wear/watchface/Renderer#setSurfaceHolder(android.view.SurfaceHolder))(@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/android/view/SurfaceHolder.html value)`

**This method is deprecated.** Use ListenableCanvasRenderer2 instead
`final void` `@https://developer.android.com/reference/androidx/wear/watchface/WatchFaceExperimental
[setWatchfaceColors](https://developer.android.com/reference/androidx/wear/watchface/Renderer#setWatchfaceColors(androidx.wear.watchface.WatchFaceColors))(https://developer.android.com/reference/androidx/wear/watchface/WatchFaceColors value)`

**This method is deprecated.** Use ListenableCanvasRenderer2 instead
`boolean` `@https://developer.android.com/reference/androidx/annotation/UiThread
[shouldAnimate](https://developer.android.com/reference/androidx/wear/watchface/Renderer#shouldAnimate())()`

**This method is deprecated.** Use ListenableCanvasRenderer2 instead
From [androidx.wear.watchface.Renderer.CanvasRenderer](https://developer.android.com/reference/androidx/wear/watchface/Renderer.CanvasRenderer) `final boolean` `[getClearWithBackgroundTintBeforeRenderingHighlightLayer](https://developer.android.com/reference/androidx/wear/watchface/Renderer.CanvasRenderer#getClearWithBackgroundTintBeforeRenderingHighlightLayer())()`

**This method is deprecated.** Use ListenableCanvasRenderer2 instead
`void` `[onDump](https://developer.android.com/reference/androidx/wear/watchface/Renderer.CanvasRenderer#onDump(java.io.PrintWriter))(@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/io/PrintWriter.html writer)`

**This method is deprecated.** Use ListenableCanvasRenderer2 instead
`abstract void` `@https://developer.android.com/reference/androidx/annotation/UiThread
[render](https://developer.android.com/reference/androidx/wear/watchface/Renderer.CanvasRenderer#render(android.graphics.Canvas,android.graphics.Rect,java.time.ZonedDateTime))(

@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/android/graphics/Canvas.html canvas,

@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/android/graphics/Rect.html bounds,

@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/time/ZonedDateTime.html zonedDateTime

)`

**This method is deprecated.** Use ListenableCanvasRenderer2 instead
`abstract void` `@https://developer.android.com/reference/androidx/annotation/UiThread
[renderHighlightLayer](https://developer.android.com/reference/androidx/wear/watchface/Renderer.CanvasRenderer#renderHighlightLayer(android.graphics.Canvas,android.graphics.Rect,java.time.ZonedDateTime))(

@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/android/graphics/Canvas.html canvas,

@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/android/graphics/Rect.html bounds,

@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/time/ZonedDateTime.html zonedDateTime

)`

**This method is deprecated.** Use ListenableCanvasRenderer2 instead

## Public constructors

### ListenableCanvasRenderer

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/wear-watchface#1.1.0) Deprecated in [1.1.0](https://developer.android.com/jetpack/androidx/releases/wear-watchface#1.1.0)

```
public [ListenableCanvasRenderer](https://developer.android.com/reference/androidx/wear/watchface/ListenableCanvasRenderer#ListenableCanvasRenderer(android.view.SurfaceHolder,androidx.wear.watchface.style.CurrentUserStyleRepository,androidx.wear.watchface.WatchState,kotlin.Int,kotlin.Long,kotlin.Boolean))(
    @NonNull SurfaceHolder surfaceHolder,
    @NonNull CurrentUserStyleRepository currentUserStyleRepository,
    @NonNull WatchState watchState,
    int canvasType,
    @IntRange(from = 0, to = 60000) long interactiveDrawModeUpdateDelayMillis,
    boolean clearWithBackgroundTintBeforeRenderingHighlightLayer
)
```

> [!CAUTION]
> **This method is deprecated.**   
> Use ListenableCanvasRenderer2 instead

## Public methods

### init

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/wear-watchface#1.0.0) Deprecated in [1.1.0](https://developer.android.com/jetpack/androidx/releases/wear-watchface#1.1.0)

```
public void [init](https://developer.android.com/reference/androidx/wear/watchface/ListenableCanvasRenderer#init())()
```

> [!CAUTION]
> **This method is deprecated.**   
> Use ListenableCanvasRenderer2 instead

Perform UiThread specific initialization. Will be called once during initialization before any subsequent calls to `https://developer.android.com/reference/androidx/wear/watchface/Renderer.CanvasRenderer#render(android.graphics.Canvas,android.graphics.Rect,java.time.ZonedDateTime)`. If you need to override this method in java, consider using `https://developer.android.com/reference/androidx/wear/watchface/ListenableCanvasRenderer` instead.

### initFuture

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/wear-watchface#1.0.0) Deprecated in [1.1.0](https://developer.android.com/jetpack/androidx/releases/wear-watchface#1.1.0)

```
@UiThread
public @NonNull ListenableFuture<Unit> [initFuture](https://developer.android.com/reference/androidx/wear/watchface/ListenableCanvasRenderer#initFuture())()
```

> [!CAUTION]
> **This method is deprecated.**   
> Use ListenableCanvasRenderer2 instead

Perform UiThread specific initialization. Will be called once during initialization before any subsequent calls to `https://developer.android.com/reference/androidx/wear/watchface/Renderer.CanvasRenderer#render(android.graphics.Canvas,android.graphics.Rect,java.time.ZonedDateTime)`. Note cancellation of the returned future is not supported.

| Returns |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://guava.dev/releases/snapshot-android/api/docs/com/google/common/util/concurrent/ListenableFuture.html<https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html>` | A ListenableFuture which is resolved when UiThread has completed. Rendering will be blocked until this has resolved. |