{% setvar book_path %}/reference/androidx/_book.yaml{% endsetvar %} {% include "_shared/_reference-head-tags.html" %}

DrawModifierNode

public interface DrawModifierNode extends DelegatableNode

Known direct subclasses
CacheDrawModifierNode

Expands on the androidx.compose.ui.node.DrawModifierNode by adding the ability to invalidate the draw cache for changes in things like shapes and bitmaps (see Modifier.border for a usage examples).


A Modifier.Node that draws into the space of the layout.

This is the androidx.compose.ui.Modifier.Node equivalent of androidx.compose.ui.draw.DrawModifier

import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.drawscope.ContentDrawScope
import androidx.compose.ui.node.DrawModifierNode
import androidx.compose.ui.node.ModifierNodeElement
import androidx.compose.ui.platform.InspectorInfo

class CircleNode(var color: Color) : DrawModifierNode, Modifier.Node() {
    override fun ContentDrawScope.draw() {
        drawCircle(color)
    }
}
data class CircleElement(val color: Color) : ModifierNodeElement<CircleNode>() {
    override fun create() = CircleNode(color)
    override fun update(node: CircleNode) {
        node.color = color
    }
    override fun InspectorInfo.inspectableProperties() {
        name = "color"
        properties["color"] = color
    }
}
fun Modifier.circle(color: Color) = this then CircleElement(color)
Box(Modifier.fillMaxSize().circle(Color.Blue))

Summary

Public methods

abstract void
default void

Extension functions

default final void

Invalidates this modifier's draw layer, ensuring that a draw pass will be run on the next frame.

Inherited methods

From androidx.compose.ui.node.DelegatableNode
abstract @NonNull Modifier.Node

A reference of the Modifier.Node that holds this node's position in the node hierarchy.

Public methods

draw

abstract void draw(@NonNull ContentDrawScope receiver)

onMeasureResultChanged

default void onMeasureResultChanged()

Extension functions

DrawModifierNodeKt.invalidateDraw

default final void DrawModifierNodeKt.invalidateDraw(@NonNull DrawModifierNode receiver)

Invalidates this modifier's draw layer, ensuring that a draw pass will be run on the next frame.