androidx.compose.material.ripple
Interfaces
RippleTheme |
This interface is deprecated. RippleTheme and LocalRippleTheme have been deprecated - they are not compatible with the new ripple implementation using the new Indication APIs that provide notable performance improvements. |
Cmn
|
Classes
RippleAlpha |
RippleAlpha defines the alpha of the ripple / state layer for different |
Cmn
|
Top-level functions summary
DelegatableNode |
createRippleModifierNode(Creates a Ripple node using the values provided. |
Cmn
|
Indication |
@ComposableThis function is deprecated. rememberRipple has been deprecated - it returns an old Indication implementation that is not compatible with the new Indication APIs that provide notable performance improvements. |
Cmn
|
Top-level properties summary
ProvidableCompositionLocal<RippleTheme> |
This property is deprecated. RippleTheme and LocalRippleTheme have been deprecated - they are not compatible with the new ripple implementation using the new Indication APIs that provide notable performance improvements. |
Cmn
|
Top-level functions
createRippleModifierNode
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 Interactions by drawing ripple animations and state layers.
A Ripple responds to PressInteraction.Press by starting a new RippleAnimation, and responds to other Interactions 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: InteractionSource |
the |
bounded: Boolean |
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: Dp |
the radius for the ripple. If |
color: ColorProducer |
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: () -> RippleAlpha |
the |
rememberRipple
@Composable
funrememberRipple(
bounded: Boolean = true,
radius: Dp = Dp.Unspecified,
color: Color = Color.Unspecified
): Indication
Creates and remembers a Ripple using values provided by RippleTheme.
A Ripple is a Material implementation of Indication that expresses different Interactions by drawing ripple animations and state layers.
A Ripple responds to PressInteraction.Press by starting a new RippleAnimation, and responds to other Interactions by showing a fixed StateLayer with varying alpha values depending on the Interaction.
If you are using MaterialTheme in your hierarchy, a Ripple will be used as the default Indication inside components such as androidx.compose.foundation.clickable and androidx.compose.foundation.indication. You can also manually provide Ripples through androidx.compose.foundation.LocalIndication for the same effect if you are not using MaterialTheme.
You can also explicitly create a Ripple and provide it to components in order to change the parameters from the default, such as to create an unbounded ripple with a fixed size.
| Parameters | |
|---|---|
bounded: Boolean = true |
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: Dp = Dp.Unspecified |
the radius for the ripple. If |
color: Color = Color.Unspecified |
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 |
Top-level properties
LocalRippleTheme
val LocalRippleTheme: ProvidableCompositionLocal<RippleTheme>
CompositionLocal used for providing RippleTheme down the tree.
See RippleTheme.defaultRippleColor and RippleTheme.defaultRippleAlpha functions for the default implementations for color and alpha.