Start native apps faster with the Composables CLI ->
Class

PaneExpansionState

This class manages the pane expansion state for pane scaffolds.

Source set: Common
class PaneExpansionState internal constructor(
    // TODO(conradchen): Handle state change during dragging and settling
    data: PaneExpansionStateData = PaneExpansionStateData(),
    @get:VisibleForTesting internal val consumeDragDelta: ((Float) -> Float) = noOpConsumeDragDelta,
)

This class manages the pane expansion state for pane scaffolds. By providing and modifying an instance of this class, you can specify the expanded panes' expansion width or proportion when pane scaffold is displaying a dual-pane layout.

This class also serves as the DraggableState of pane expansion handle. When a handle implementation is provided to the associated pane scaffold, the scaffold will use PaneExpansionState to store and manage dragging and anchoring of the handle, and thus the pane expansion state.

Properties

currentAnchor

Source set: Common
var currentAnchor

The current anchor that pane expansion has been settled or is settling to. Note that this field might be null if:

  1. No anchors have been set to the state.
  2. Pane expansion is set directly via setFirstPaneWidth or set setFirstPaneProportion.
  3. Pane expansion is in its initial state without an initial anchor provided.

Functions

isUnspecified

Source set: Common
fun isUnspecified(): Boolean

Returns true if none of firstPaneWidth or firstPaneProportion has been set.

setFirstPaneWidth

Source set: Common
fun setFirstPaneWidth(firstPaneWidth: Int)

Set the width of the first expanded pane in the layout. When the set value gets applied, it will be coerced within the range of `0, the full displayable width of the layout`.

Note that setting this value will reset the first pane proportion previously set via setFirstPaneProportion or the current dragging result if there's any. Also if user drags the pane after setting the first pane width, the user dragging result will take the priority over this set value when rendering panes, but the set value will be saved.

setFirstPaneProportion

Source set: Common
fun setFirstPaneProportion(@FloatRange(0.0, 1.0) firstPaneProportion: Float)

Set the proportion of the first expanded pane in the layout. The set value needs to be within the range of `0f, 1f`, otherwise the setter throws.

Note that setting this value will reset the first pane width previously set via setFirstPaneWidth or the current dragging result if there's any. Also if user drags the pane after setting the first pane proportion, the user dragging result will take the priority over this set value when rendering panes, but the set value will be saved.

animateTo

Source set: Common
suspend fun animateTo(anchor: PaneExpansionAnchor, initialVelocity: Float = 0F)

Animate the pane expansion to the given PaneExpansionAnchor. Note that the given anchor must be one of the provided anchor when creating the state with rememberPaneExpansionState; otherwise the function throws.

Parameters

anchor the anchor to animate to
initialVelocity the initial velocity of the animation

clear

Source set: Common
fun clear()

Clears any previously set firstPaneWidth or firstPaneProportion, as well as the user dragging result.

Members

Companion

Source set: Common
companion object

Properties

Unspecified

Source set: Common
const val Unspecified = -1

The constant value used to denote the pane expansion is not specified.