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

GestureScope

public final class GestureScope


The receiver scope for injecting gestures on the SemanticsNode identified by the corresponding SemanticsNodeInteraction. Gestures can be injected by calling methods defined on GestureScope, such as click or swipe. The SemanticsNodeInteraction can be found by one of the finder methods such as onNode.

The functions in GestureScope can roughly be divided into two groups: full gestures and individual touch events. The individual touch events are: down, move and friends, up, cancel and advanceEventTime. Full gestures are all the other functions, like click, doubleClick, swipe, etc. See the documentation of down for more information about individual events. If you execute a full gesture while in the middle of another gesture, an IllegalStateException or IllegalArgumentException can be thrown when the pointerId is unintentionally used for both gestures. If you want to perform e.g. a click during a partially performed gesture, make sure they use different pointer ids.

Note that all events generated by the gesture methods are batched together and sent as a whole after performGesture has executed its code block.

Next to the functions, GestureScope also exposes several properties that allow you to get coordinates within a node, like the top left corner, its center, or some percentage of the size (percentOffset).

Example of performing a click:

import androidx.compose.ui.test.click
import androidx.compose.ui.test.onNodeWithTag
import androidx.compose.ui.test.performGesture

composeTestRule.onNodeWithTag("myComponent")
    .performGesture { click() }

Example of performing a swipe up:

import androidx.compose.ui.test.onNodeWithTag
import androidx.compose.ui.test.performGesture
import androidx.compose.ui.test.swipeUp

composeTestRule.onNodeWithTag("myComponent")
    .performGesture { swipeUp() }

Example of performing an L-shaped gesture:

import androidx.compose.ui.test.center
import androidx.compose.ui.test.centerLeft
import androidx.compose.ui.test.down
import androidx.compose.ui.test.moveTo
import androidx.compose.ui.test.onNodeWithTag
import androidx.compose.ui.test.percentOffset
import androidx.compose.ui.test.performGesture
import androidx.compose.ui.test.topLeft
import androidx.compose.ui.test.up

composeTestRule.onNodeWithTag("myComponent")
    .performGesture {
        down(topLeft)
        moveTo(topLeft + percentOffset(0f, .1f))
        moveTo(topLeft + percentOffset(0f, .2f))
        moveTo(topLeft + percentOffset(0f, .3f))
        moveTo(topLeft + percentOffset(0f, .4f))
        moveTo(centerLeft)
        moveTo(centerLeft + percentOffset(.1f, 0f))
        moveTo(centerLeft + percentOffset(.2f, 0f))
        moveTo(centerLeft + percentOffset(.3f, 0f))
        moveTo(centerLeft + percentOffset(.4f, 0f))
        moveTo(center)
        up()
    }

Summary

Public constructors

Public methods

final @NonNull IntSize

Returns the size of the visible part of the node we're interacting with.

Extension functions

final void
@ExperimentalTestApi
GestureScopeKt.advanceEventTime(
    @NonNull GestureScope receiver,
    long durationMillis
)

This method is deprecated. Replaced by TouchInjectionScope.

final void

This method is deprecated. Replaced by TouchInjectionScope.

final void
GestureScopeKt.click(
    @NonNull GestureScope receiver,
    @NonNull Offset position
)

This method is deprecated. Replaced by TouchInjectionScope.

final void
GestureScopeKt.doubleClick(
    @NonNull GestureScope receiver,
    @NonNull Offset position,
    long delayMillis
)

This method is deprecated. Replaced by TouchInjectionScope.

final void
GestureScopeKt.down(
    @NonNull GestureScope receiver,
    @NonNull Offset position
)

This method is deprecated. Replaced by TouchInjectionScope.

final void
GestureScopeKt.down(
    @NonNull GestureScope receiver,
    int pointerId,
    @NonNull Offset position
)

This method is deprecated. Replaced by TouchInjectionScope.

final float

Returns the y-coordinate for the bottom of the node we're interacting with, in the node's local coordinate system, where (0, 0) is the top left corner of the node.

final @NonNull Offset

Returns the center of the bottom edge of the node we're interacting with, in the node's local coordinate system, where (0, 0) is the top left corner of the node.

final @NonNull Offset

Returns the bottom left corner of the node we're interacting with, in the node's local coordinate system, where (0, 0) is the top left corner of the node.

final @NonNull Offset

Returns the bottom right corner of the node we're interacting with, in the node's local coordinate system, where (0, 0) is the top left corner of the node.

final @NonNull Offset

Returns the center of the node we're interacting with, in the node's local coordinate system, where (0, 0) is the top left corner of the node.

final @NonNull Offset

Returns the center of the left edge of the node we're interacting with, in the node's local coordinate system, where (0, 0) is the top left corner of the node.

final @NonNull Offset

Returns the center of the right edge of the node we're interacting with, in the node's local coordinate system, where (0, 0) is the top left corner of the node.

final float

Returns the x-coordinate for the center of the node we're interacting with, in the node's local coordinate system, where (0, 0) is the top left corner of the node.

final float

Returns the y-coordinate for the center of the node we're interacting with, in the node's local coordinate system, where (0, 0) is the top left corner of the node.

final int

Shorthand for size.height

final float

Returns the x-coordinate for the left edge of the node we're interacting with, in the node's local coordinate system, where (0, 0) is the top left corner of the node.

final float

Returns the x-coordinate for the right edge of the node we're interacting with, in the node's local coordinate system, where (0, 0) is the top left corner of the node.

final float

Returns the y-coordinate for the bottom of the node we're interacting with, in the node's local coordinate system, where (0, 0) is the top left corner of the node.

final @NonNull Offset

Returns the center of the top edge of the node we're interacting with, in the node's local coordinate system, where (0, 0) is the top left corner of the node.

final @NonNull Offset

Returns the top left corner of the node we're interacting with, in the node's local coordinate system, where (0, 0) is the top left corner of the node.

final @NonNull Offset

Returns the top right corner of the node we're interacting with, in the node's local coordinate system, where (0, 0) is the top left corner of the node.

final int

Shorthand for size.width

final void
GestureScopeKt.longClick(
    @NonNull GestureScope receiver,
    @NonNull Offset position,
    long durationMillis
)

This method is deprecated. Replaced by TouchInjectionScope.

final void

This method is deprecated. Replaced by TouchInjectionScope.

final void
GestureScopeKt.moveBy(
    @NonNull GestureScope receiver,
    @NonNull Offset delta
)

This method is deprecated. Replaced by TouchInjectionScope.

final void
GestureScopeKt.moveBy(
    @NonNull GestureScope receiver,
    int pointerId,
    @NonNull Offset delta
)

This method is deprecated. Replaced by TouchInjectionScope.

final void
GestureScopeKt.movePointerBy(
    @NonNull GestureScope receiver,
    int pointerId,
    @NonNull Offset delta
)

This method is deprecated. Replaced by TouchInjectionScope.

final void
GestureScopeKt.movePointerTo(
    @NonNull GestureScope receiver,
    int pointerId,
    @NonNull Offset position
)

This method is deprecated. Replaced by TouchInjectionScope.

final void
GestureScopeKt.moveTo(
    @NonNull GestureScope receiver,
    @NonNull Offset position
)

This method is deprecated. Replaced by TouchInjectionScope.

final void
GestureScopeKt.moveTo(
    @NonNull GestureScope receiver,
    int pointerId,
    @NonNull Offset position
)

This method is deprecated. Replaced by TouchInjectionScope.

final @NonNull Offset
GestureScopeKt.percentOffset(
    @NonNull GestureScope receiver,
    float x,
    float y
)

This method is deprecated. Replaced by TouchInjectionScope.

final void
GestureScopeKt.pinch(
    @NonNull GestureScope receiver,
    @NonNull Offset start0,
    @NonNull Offset end0,
    @NonNull Offset start1,
    @NonNull Offset end1,
    long durationMillis
)

This method is deprecated. Replaced by TouchInjectionScope.

final void
GestureScopeKt.swipe(
    @NonNull GestureScope receiver,
    @NonNull Offset start,
    @NonNull Offset end,
    long durationMillis
)

This method is deprecated. Replaced by TouchInjectionScope.

final void

This method is deprecated. Replaced by TouchInjectionScope.

final void
@ExperimentalTestApi
GestureScopeKt.swipeDown(
    @NonNull GestureScope receiver,
    float startY,
    float endY,
    long durationMillis
)

This method is deprecated. Replaced by TouchInjectionScope.

final void

This method is deprecated. Replaced by TouchInjectionScope.

final void
@ExperimentalTestApi
GestureScopeKt.swipeLeft(
    @NonNull GestureScope receiver,
    float startX,
    float endX,
    long durationMillis
)

This method is deprecated. Replaced by TouchInjectionScope.

final void

This method is deprecated. Replaced by TouchInjectionScope.

final void
@ExperimentalTestApi
GestureScopeKt.swipeRight(
    @NonNull GestureScope receiver,
    float startX,
    float endX,
    long durationMillis
)

This method is deprecated. Replaced by TouchInjectionScope.

final void

This method is deprecated. Replaced by TouchInjectionScope.

final void
@ExperimentalTestApi
GestureScopeKt.swipeUp(
    @NonNull GestureScope receiver,
    float startY,
    float endY,
    long durationMillis
)

This method is deprecated. Replaced by TouchInjectionScope.

final void
GestureScopeKt.swipeWithVelocity(
    @NonNull GestureScope receiver,
    @NonNull Offset start,
    @NonNull Offset end,
    float endVelocity,
    long durationMillis
)

This method is deprecated. Replaced by TouchInjectionScope.

final void
GestureScopeKt.up(@NonNull GestureScope receiver, int pointerId)

This method is deprecated. Replaced by TouchInjectionScope.

Public constructors

GestureScope

public GestureScope(@NonNull SemanticsNode node, @NonNull TestContext testContext)

Public methods

getVisibleSize

public final @NonNull IntSize getVisibleSize()

Returns the size of the visible part of the node we're interacting with. This is contrary to SemanticsNode.size, which returns the unclipped size of the node.

Extension functions

GestureScopeKt.advanceEventTime

@ExperimentalTestApi
public final void GestureScopeKt.advanceEventTime(
    @NonNull GestureScope receiver,
    long durationMillis
)

Adds the given durationMillis to the current event time, delaying the next event by that time. Only valid when a gesture has already been started, or when a finished gesture is resumed.

GestureScopeKt.cancel

public final void GestureScopeKt.cancel(@NonNull GestureScope receiver)

Sends a cancel event to cancel the current gesture. The cancel event contains the current position of all active pointers.

GestureScopeKt.click

public final void GestureScopeKt.click(
    @NonNull GestureScope receiver,
    @NonNull Offset position
)

Performs a click gesture at the given position on the associated node, or in the center if the position is omitted. The position is in the node's local coordinate system, where (0, 0) is the top left corner of the node. The default position is the center of the node.

Parameters
@NonNull Offset position

The position where to click, in the node's local coordinate system. If omitted, the center position will be used.

GestureScopeKt.doubleClick

public final void GestureScopeKt.doubleClick(
    @NonNull GestureScope receiver,
    @NonNull Offset position,
    long delayMillis
)

Performs a double click gesture at the given position on the associated node, or in the center if the position is omitted. By default, the delayMillis between the first and the second click is 145 milliseconds (empirically established). The position is in the node's local coordinate system, where (0, 0) is the top left corner of the node.

Parameters
@NonNull Offset position

The position of the double click, in the node's local coordinate system. If omitted, the center position will be used.

long delayMillis

The time between the up event of the first click and the down event of the second click

GestureScopeKt.down

public final void GestureScopeKt.down(
    @NonNull GestureScope receiver,
    @NonNull Offset position
)

Sends a down event for the default pointer at position on the associated node. The position is in the node's local coordinate system, where (0, 0) is the top left corner of the node. The default pointer has pointerId = 0.

If no pointers are down yet, this will start a new gesture. If a gesture is already in progress, this event is sent with at the same timestamp as the last event. If the default pointer is already down, an IllegalArgumentException will be thrown.

Parameters
@NonNull Offset position

The position of the down event, in the node's local coordinate system

GestureScopeKt.down

public final void GestureScopeKt.down(
    @NonNull GestureScope receiver,
    int pointerId,
    @NonNull Offset position
)

Sends a down event for the pointer with the given pointerId at position on the associated node. The position is in the node's local coordinate system, where (0, 0) is the top left corner of the node.

If no pointers are down yet, this will start a new gesture. If a gesture is already in progress, this event is sent with at the same timestamp as the last event. If the given pointer is already down, an IllegalArgumentException will be thrown.

Subsequent events for this or other gestures can be spread out over both this and future invocations of performGesture. An entire gesture starts with a down event, followed by several down, move or up events, and ends with an up or a cancel event. Movement can be expressed with moveTo and moveBy to move a single pointer at a time, or movePointerTo and movePointerBy to move multiple pointers at a time. The movePointer[To|By] methods do not send the move event directly, use move to send the move event. Some other methods can send a move event as well. All events, regardless the method used, will always contain the current position of all pointers.

Down and up events are sent at the same time as the previous event, but will send an extra move event just before the down or up event if movePointerTo or movePointerBy has been called and no move event has been sent yet. This does not happen for cancel events, but the cancel event will contain the up to date position of all pointers. Move and cancel events will advance the event time by 16 milliseconds.

Because gestures don't have to be defined all in the same performGesture block, keep in mind that while the gesture is not complete, all code you execute in between blocks that progress the gesture, will be executed while imaginary fingers are actively touching the screen.

In the context of testing, it is not necessary to complete a gesture with an up or cancel event, if the test ends before it expects the finger to be lifted from the screen.

Parameters
int pointerId

The id of the pointer, can be any number not yet in use by another pointer

@NonNull Offset position

The position of the down event, in the node's local coordinate system

GestureScopeKt.getBottom

public final float GestureScopeKt.getBottom(@NonNull GestureScope receiver)

Returns the y-coordinate for the bottom of the node we're interacting with, in the node's local coordinate system, where (0, 0) is the top left corner of the node. Note that, unless height == 0, bottom != height. In particular, bottom == height - 1f, because pixels are 0-based. If height == 0, bottom == 0 too.

GestureScopeKt.getBottomCenter

public final @NonNull Offset GestureScopeKt.getBottomCenter(@NonNull GestureScope receiver)

Returns the center of the bottom edge of the node we're interacting with, in the node's local coordinate system, where (0, 0) is the top left corner of the node. Note that bottomCenter.y != height, see bottom.

GestureScopeKt.getBottomLeft

public final @NonNull Offset GestureScopeKt.getBottomLeft(@NonNull GestureScope receiver)

Returns the bottom left corner of the node we're interacting with, in the node's local coordinate system, where (0, 0) is the top left corner of the node. Note that bottomLeft.y != height, see bottom.

GestureScopeKt.getBottomRight

public final @NonNull Offset GestureScopeKt.getBottomRight(@NonNull GestureScope receiver)

Returns the bottom right corner of the node we're interacting with, in the node's local coordinate system, where (0, 0) is the top left corner of the node. Note that bottomRight.x != width and bottomRight.y != height, see right and bottom.

GestureScopeKt.getCenter

public final @NonNull Offset GestureScopeKt.getCenter(@NonNull GestureScope receiver)

Returns the center of the node we're interacting with, in the node's local coordinate system, where (0, 0) is the top left corner of the node.

GestureScopeKt.getCenterLeft

public final @NonNull Offset GestureScopeKt.getCenterLeft(@NonNull GestureScope receiver)

Returns the center of the left edge of the node we're interacting with, in the node's local coordinate system, where (0, 0) is the top left corner of the node.

GestureScopeKt.getCenterRight

public final @NonNull Offset GestureScopeKt.getCenterRight(@NonNull GestureScope receiver)

Returns the center of the right edge of the node we're interacting with, in the node's local coordinate system, where (0, 0) is the top left corner of the node. Note that centerRight.x != width, see right.

GestureScopeKt.getCenterX

public final float GestureScopeKt.getCenterX(@NonNull GestureScope receiver)

Returns the x-coordinate for the center of the node we're interacting with, in the node's local coordinate system, where (0, 0) is the top left corner of the node.

GestureScopeKt.getCenterY

public final float GestureScopeKt.getCenterY(@NonNull GestureScope receiver)

Returns the y-coordinate for the center of the node we're interacting with, in the node's local coordinate system, where (0, 0) is the top left corner of the node.

GestureScopeKt.getHeight

public final int GestureScopeKt.getHeight(@NonNull GestureScope receiver)

Shorthand for size.height

GestureScopeKt.getLeft

public final float GestureScopeKt.getLeft(@NonNull GestureScope receiver)

Returns the x-coordinate for the left edge of the node we're interacting with, in the node's local coordinate system, where (0, 0) is the top left corner of the node.

GestureScopeKt.getRight

public final float GestureScopeKt.getRight(@NonNull GestureScope receiver)

Returns the x-coordinate for the right edge of the node we're interacting with, in the node's local coordinate system, where (0, 0) is the top left corner of the node. Note that, unless width == 0, right != width. In particular, right == width - 1f, because pixels are 0-based. If width == 0, right == 0 too.

GestureScopeKt.getTop

public final float GestureScopeKt.getTop(@NonNull GestureScope receiver)

Returns the y-coordinate for the bottom of the node we're interacting with, in the node's local coordinate system, where (0, 0) is the top left corner of the node.

GestureScopeKt.getTopCenter

public final @NonNull Offset GestureScopeKt.getTopCenter(@NonNull GestureScope receiver)

Returns the center of the top edge of the node we're interacting with, in the node's local coordinate system, where (0, 0) is the top left corner of the node.

GestureScopeKt.getTopLeft

public final @NonNull Offset GestureScopeKt.getTopLeft(@NonNull GestureScope receiver)

Returns the top left corner of the node we're interacting with, in the node's local coordinate system, where (0, 0) is the top left corner of the node.

GestureScopeKt.getTopRight

public final @NonNull Offset GestureScopeKt.getTopRight(@NonNull GestureScope receiver)

Returns the top right corner of the node we're interacting with, in the node's local coordinate system, where (0, 0) is the top left corner of the node. Note that topRight.x != width, see right.

GestureScopeKt.getWidth

public final int GestureScopeKt.getWidth(@NonNull GestureScope receiver)

Shorthand for size.width

GestureScopeKt.longClick

public final void GestureScopeKt.longClick(
    @NonNull GestureScope receiver,
    @NonNull Offset position,
    long durationMillis
)

Performs a long click gesture at the given position on the associated node, or in the center if the position is omitted. By default, the durationMillis of the press is LongPressTimeoutMillis + 100 milliseconds. The position is in the node's local coordinate system, where (0, 0) is the top left corner of the node.

Parameters
@NonNull Offset position

The position of the long click, in the node's local coordinate system. If omitted, the center position will be used.

long durationMillis

The time between the down and the up event

GestureScopeKt.move

public final void GestureScopeKt.move(@NonNull GestureScope receiver)

Sends a move event without updating any of the pointer positions. This can be useful when batching movement of multiple pointers together, which can be done with movePointerTo and movePointerBy.

GestureScopeKt.moveBy

public final void GestureScopeKt.moveBy(
    @NonNull GestureScope receiver,
    @NonNull Offset delta
)

Sends a move event on the associated node, with the position of the default pointer moved by the given delta. The default pointer has pointerId = 0.

If the pointer is not yet down, an IllegalArgumentException will be thrown.

Parameters
@NonNull Offset delta

The position for this move event, relative to the last sent position of the pointer. For example, `delta = Offset(10.px, -10.px) will add 10.px to the pointer's last x-position, and subtract 10.px from the pointer's last y-position.

GestureScopeKt.moveBy

public final void GestureScopeKt.moveBy(
    @NonNull GestureScope receiver,
    int pointerId,
    @NonNull Offset delta
)

Sends a move event on the associated node, with the position of the pointer with the given pointerId moved by the given delta.

If the pointer is not yet down, an IllegalArgumentException will be thrown.

Parameters
int pointerId

The id of the pointer to move, as supplied in down

@NonNull Offset delta

The position for this move event, relative to the last sent position of the pointer. For example, `delta = Offset(10.px, -10.px) will add 10.px to the pointer's last x-position, and subtract 10.px from the pointer's last y-position.

GestureScopeKt.movePointerBy

public final void GestureScopeKt.movePointerBy(
    @NonNull GestureScope receiver,
    int pointerId,
    @NonNull Offset delta
)

Moves the position of the pointer with the given pointerId by the given delta, but does not send a move event. The move event can be sent with move.

If the pointer is not yet down, an IllegalArgumentException will be thrown.

Parameters
int pointerId

The id of the pointer to move, as supplied in down

@NonNull Offset delta

The position for this move event, relative to the last sent position of the pointer. For example, `delta = Offset(10.px, -10.px) will add 10.px to the pointer's last x-position, and subtract 10.px from the pointer's last y-position.

GestureScopeKt.movePointerTo

public final void GestureScopeKt.movePointerTo(
    @NonNull GestureScope receiver,
    int pointerId,
    @NonNull Offset position
)

Updates the position of the pointer with the given pointerId to the given position, but does not send a move event. The move event can be sent with move. The position is in the node's local coordinate system, where (0.px, 0.px) is the top left corner of the node.

If the pointer is not yet down, an IllegalArgumentException will be thrown.

Parameters
int pointerId

The id of the pointer to move, as supplied in down

@NonNull Offset position

The new position of the pointer, in the node's local coordinate system

GestureScopeKt.moveTo

public final void GestureScopeKt.moveTo(
    @NonNull GestureScope receiver,
    @NonNull Offset position
)

Sends a move event on the associated node, with the position of the default pointer updated to position. The position is in the node's local coordinate system, where (0, 0) is the top left corner of the node. The default pointer has pointerId = 0.

If the default pointer is not yet down, an IllegalArgumentException will be thrown.

Parameters
@NonNull Offset position

The new position of the pointer, in the node's local coordinate system

GestureScopeKt.moveTo

public final void GestureScopeKt.moveTo(
    @NonNull GestureScope receiver,
    int pointerId,
    @NonNull Offset position
)

Sends a move event on the associated node, with the position of the pointer with the given pointerId updated to position. The position is in the node's local coordinate system, where (0, 0) is the top left corner of the node.

If the pointer is not yet down, an IllegalArgumentException will be thrown.

Parameters
int pointerId

The id of the pointer to move, as supplied in down

@NonNull Offset position

The new position of the pointer, in the node's local coordinate system

GestureScopeKt.percentOffset

public final @NonNull Offset GestureScopeKt.percentOffset(
    @NonNull GestureScope receiver,
    float x,
    float y
)

Creates an Offset relative to the size of the node we're interacting with. x and y are fractions of the width and height, between -1 and 1. Note that percentOffset(1f, 1f) != bottomRight, see right and bottom.

For example: percentOffset(.5f, .5f) is the same as the center; centerLeft + percentOffset(.1f, 0f) is a point 10% inward from the middle of the left edge; and bottomRight - percentOffset(.2f, .1f) is a point 20% to the left and 10% to the top of the bottom right corner.

GestureScopeKt.pinch

public final void GestureScopeKt.pinch(
    @NonNull GestureScope receiver,
    @NonNull Offset start0,
    @NonNull Offset end0,
    @NonNull Offset start1,
    @NonNull Offset end1,
    long durationMillis
)

Performs a pinch gesture on the associated node.

For each pair of start and end Offsets, the motion events are linearly interpolated. The coordinates are in the node's local coordinate system where (0, 0) is the top left corner of the node. The default duration is 400 milliseconds.

Parameters
@NonNull Offset start0

The start position of the first gesture in the node's local coordinate system

@NonNull Offset end0

The end position of the first gesture in the node's local coordinate system

@NonNull Offset start1

The start position of the second gesture in the node's local coordinate system

@NonNull Offset end1

The end position of the second gesture in the node's local coordinate system

long durationMillis

the duration of the gesture

GestureScopeKt.swipe

public final void GestureScopeKt.swipe(
    @NonNull GestureScope receiver,
    @NonNull Offset start,
    @NonNull Offset end,
    long durationMillis
)

Performs the swipe gesture on the associated node. The motion events are linearly interpolated between start and end. The coordinates are in the node's local coordinate system, where (0, 0) is the top left corner of the node. The default duration is 200 milliseconds.

Parameters
@NonNull Offset start

The start position of the gesture, in the node's local coordinate system

@NonNull Offset end

The end position of the gesture, in the node's local coordinate system

long durationMillis

The duration of the gesture

GestureScopeKt.swipeDown

public final void GestureScopeKt.swipeDown(@NonNull GestureScope receiver)

Performs a swipe down gesture along the centerX of the associated node. The gesture starts slightly below the top of the node and ends at the bottom.

GestureScopeKt.swipeDown

@ExperimentalTestApi
public final void GestureScopeKt.swipeDown(
    @NonNull GestureScope receiver,
    float startY,
    float endY,
    long durationMillis
)

Performs a swipe down gesture along the centerX of the associated node, from startY till endY, taking durationMillis milliseconds.

Parameters
float startY

The y-coordinate of the start of the swipe. Must be less than or equal to the endY. By default slightly below the top of the node.

float endY

The y-coordinate of the end of the swipe. Must be greater than or equal to the startY. By default the bottom of the node.

long durationMillis

The duration of the swipe. By default 200 milliseconds.

GestureScopeKt.swipeLeft

public final void GestureScopeKt.swipeLeft(@NonNull GestureScope receiver)

Performs a swipe left gesture along the centerY of the associated node. The gesture starts slightly left of the right side of the node and ends at the left side.

GestureScopeKt.swipeLeft

@ExperimentalTestApi
public final void GestureScopeKt.swipeLeft(
    @NonNull GestureScope receiver,
    float startX,
    float endX,
    long durationMillis
)

Performs a swipe left gesture along the centerY of the associated node, from startX till endX, taking durationMillis milliseconds.

Parameters
float startX

The x-coordinate of the start of the swipe. Must be greater than or equal to the endX. By default slightly left of the right of the node.

float endX

The x-coordinate of the end of the swipe. Must be less than or equal to the startX. By default the left of the node.

long durationMillis

The duration of the swipe. By default 200 milliseconds.

GestureScopeKt.swipeRight

public final void GestureScopeKt.swipeRight(@NonNull GestureScope receiver)

Performs a swipe right gesture along the centerY of the associated node. The gesture starts slightly right of the left side of the node and ends at the right side.

GestureScopeKt.swipeRight

@ExperimentalTestApi
public final void GestureScopeKt.swipeRight(
    @NonNull GestureScope receiver,
    float startX,
    float endX,
    long durationMillis
)

Performs a swipe right gesture along the centerY of the associated node, from startX till endX, taking durationMillis milliseconds.

Parameters
float startX

The x-coordinate of the start of the swipe. Must be less than or equal to the endX. By default slightly right of the left of the node.

float endX

The x-coordinate of the end of the swipe. Must be greater than or equal to the startX. By default the right of the node.

long durationMillis

The duration of the swipe. By default 200 milliseconds.

GestureScopeKt.swipeUp

public final void GestureScopeKt.swipeUp(@NonNull GestureScope receiver)

Performs a swipe up gesture along the centerX of the associated node. The gesture starts slightly above the bottom of the node and ends at the top.

GestureScopeKt.swipeUp

@ExperimentalTestApi
public final void GestureScopeKt.swipeUp(
    @NonNull GestureScope receiver,
    float startY,
    float endY,
    long durationMillis
)

Performs a swipe up gesture along the centerX of the associated node, from startY till endY, taking durationMillis milliseconds.

Parameters
float startY

The y-coordinate of the start of the swipe. Must be greater than or equal to the endY. By default slightly above the bottom of the node.

float endY

The y-coordinate of the end of the swipe. Must be less than or equal to the startY. By default the top of the node.

long durationMillis

The duration of the swipe. By default 200 milliseconds.

GestureScopeKt.swipeWithVelocity

public final void GestureScopeKt.swipeWithVelocity(
    @NonNull GestureScope receiver,
    @NonNull Offset start,
    @NonNull Offset end,
    float endVelocity,
    long durationMillis
)

Performs the swipe gesture on the associated node, such that the velocity when the gesture is finished is roughly equal to endVelocity. The MotionEvents are linearly interpolated between start and end. The coordinates are in the node's local coordinate system, where (0, 0) is the top left corner of the node. The default duration is 200 milliseconds.

Note that due to imprecisions, no guarantees can be made on the precision of the actual velocity at the end of the gesture, but generally it is within 0.1% of the desired velocity.

Parameters
@NonNull Offset start

The start position of the gesture, in the node's local coordinate system

@NonNull Offset end

The end position of the gesture, in the node's local coordinate system

float endVelocity

The velocity of the gesture at the moment it ends. Must be positive.

long durationMillis

The duration of the gesture in milliseconds. Must be long enough that at least 3 input events are generated, which happens with a duration of 25ms or more.

GestureScopeKt.up

public final void GestureScopeKt.up(@NonNull GestureScope receiver, int pointerId)

Sends an up event for the pointer with the given pointerId, or the default pointer if pointerId is omitted, on the associated node. If any pointers have been moved with movePointerTo or movePointerBy and no move event has been sent yet, a move event will be sent right before the up event.

Parameters
int pointerId

The id of the pointer to lift up, as supplied in down