Renderer.CanvasRenderer
public abstract class Renderer.CanvasRenderer extends Renderer
| java.lang.Object | ||
| ↳ | androidx.wear.watchface.Renderer | |
| ↳ | androidx.wear.watchface.Renderer.CanvasRenderer |
ListenableCanvasRenderer |
This class is deprecated. Use ListenableCanvasRenderer2 instead |
Renderer.CanvasRenderer2 |
This class is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead. |
ListenableCanvasRenderer2 |
This class is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead. |
Watch faces that require Canvas rendering should extend their Renderer from this class or CanvasRenderer2 if they can take advantage of SharedAssets to save memory when editing (there can be more than once WatchFace instance when editing).
A CanvasRenderer is expected to be constructed on the background thread associated with WatchFaceService.getBackgroundThreadHandler inside a call to WatchFaceService.createWatchFace. All rendering is be done on the UiThread. There is a memory barrier between construction and rendering so no special threading primitives are required.
In Java it may be easier to extend androidx.wear.watchface.ListenableCanvasRenderer instead.
Summary
Public constructors |
|---|
@WorkerThreadThis method is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead. |
Public methods |
|
|---|---|
final boolean |
This method is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead. |
void |
This method is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead. |
void |
This method is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead. |
abstract void |
@UiThreadThis method is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead. |
abstract void |
@UiThreadThis method is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead. |
Inherited methods |
||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Public constructors
@WorkerThread
publicCanvasRenderer(
@NonNull SurfaceHolder surfaceHolder,
@NonNull CurrentUserStyleRepository currentUserStyleRepository,
@NonNull WatchState watchState,
int canvasType,
@IntRange(from = 0, to = 60000) long interactiveDrawModeUpdateDelayMillis,
boolean clearWithBackgroundTintBeforeRenderingHighlightLayer
)
| Parameters | |
|---|---|
@NonNull SurfaceHolder surfaceHolder |
The |
@NonNull CurrentUserStyleRepository currentUserStyleRepository |
The watch face's associated |
@NonNull WatchState watchState |
The watch face's associated |
int canvasType |
The |
@IntRange(from = 0, to = 60000) long interactiveDrawModeUpdateDelayMillis |
The interval in milliseconds between frames in interactive |
boolean clearWithBackgroundTintBeforeRenderingHighlightLayer |
Whether the |
Public methods
public final boolean getClearWithBackgroundTintBeforeRenderingHighlightLayer()Whether the Canvas is cleared with RenderParameters.HighlightLayer.backgroundTint before renderHighlightLayer is called. Defaults to false.
@UiThread
public voidinit()
Perform UiThread specific initialization. Will be called once during initialization before any subsequent calls to render. If you need to override this method in java, consider using androidx.wear.watchface.ListenableCanvasRenderer instead.
onDump
public voidonDump(@NonNull PrintWriter writer)
Called when adb shell dumpsys is invoked for the WatchFaceService, allowing the renderer to optionally record state for debugging purposes.
@UiThread
public abstract voidrender(
@NonNull Canvas canvas,
@NonNull Rect bounds,
@NonNull ZonedDateTime zonedDateTime
)
Sub-classes should override this to implement their watch face rendering logic which should respect the current renderParameters. Please note WatchState.isAmbient may not match the RenderParameters.drawMode and should not be used to decide what to render. E.g. when editing from the companion phone while the watch is ambient, renders may be requested with DrawMode.INTERACTIVE.
Any highlights due to RenderParameters.highlightLayer should be rendered by renderHighlightLayer instead where possible. For correct behavior this function must use the supplied ZonedDateTime in favor of any other ways of getting the time.
Before any calls to render, init will be called once.
| Parameters | |
|---|---|
@NonNull Canvas canvas |
The |
@NonNull Rect bounds |
A |
@NonNull ZonedDateTime zonedDateTime |
The |
@UiThread
public abstract voidrenderHighlightLayer(
@NonNull Canvas canvas,
@NonNull Rect bounds,
@NonNull ZonedDateTime zonedDateTime
)
Sub-classes should override this to implement their watch face highlight layer rendering logic for the RenderParameters.highlightLayer aspect of renderParameters. Typically the implementation will clear canvas to RenderParameters.HighlightLayer.backgroundTint before rendering a transparent highlight or a solid outline around the RenderParameters.HighlightLayer.highlightedElement. This will be composited as needed on top of the results of render. For correct behavior this function must use the supplied ZonedDateTime in favor of any other ways of getting the time.
Note if clearWithBackgroundTintBeforeRenderingHighlightLayer is true then canvas will cleared with RenderParameters.HighlightLayer.backgroundTint before renderHighlightLayer is called. Otherwise it is up to the overridden function to clear the Canvas if necessary.
| Parameters | |
|---|---|
@NonNull Canvas canvas |
The |
@NonNull Rect bounds |
A |
@NonNull ZonedDateTime zonedDateTime |
the |