createRippleModifierNode
public fun createRippleModifierNode(
interactionSource: InteractionSource,
bounded: Boolean,
radius: Dp,
color: ColorProducer,
rippleAlpha: () -> RippleAlpha,
): DelegatableNode
Creates a Ripple node using the values provided.
A Ripple is a Material implementation of Indication
that expresses different Interaction
s by
drawing ripple animations and state layers.
A Ripple responds to PressInteraction.Press
by starting a new RippleAnimation
, and responds
to other Interaction
s by showing a fixed StateLayer
with varying alpha values depending on
the Interaction
.
This Ripple node is a low level building block for building IndicationNodeFactory implementations
that use a Ripple - higher level design system libraries such as material and material3 provide
Indication
implementations using this node internally. In most cases you should use those
factories directly: this node exists for design system libraries to delegate their Ripple
implementation to, after querying any required theme values for customizing the Ripple.
NOTE: when using this factory with DelegatingNode.delegate
, ensure that the node is created
once or DelegatingNode.undelegate
is called in Modifier.Node.onDetach
. Repeatedly delegating
to a new node returned by this method in Modifier.Node.onAttach
without removing the old one
will result in multiple ripple nodes being attached to the node.
Parameters
interactionSource | the InteractionSource used to determine the state of the ripple. |
bounded | if true, ripples are clipped by the bounds of the target layout. Unbounded ripples always animate from the target layout center, bounded ripples animate from the touch position. |
radius | the radius for the ripple. If Dp.Unspecified is provided then the size will be calculated based on the target layout size. |
color | the color of the ripple. This color is usually the same color used by the text or iconography in the component. This color will then have rippleAlpha applied to calculate the final color used to draw the ripple. |
rippleAlpha | the RippleAlpha that will be applied to the color depending on the state of the ripple. |