androidx.compose.ui.input.indirect

Interfaces

IndirectPointerEvent

An IndirectPointerEvent represents a pointer input event, where the pointer positions do not correspond to a position on the screen.

Cmn
IndirectPointerInputModifierNode

A androidx.compose.ui.Modifier.Node that receives IndirectPointerEvents.

Cmn

Classes

IndirectPointerEventPrimaryDirectionalMotionAxis

The primary axis for motion from an IndirectPointerEvent.

Cmn
IndirectPointerEventType

Indicates the reason that the IndirectPointerEvent was sent.

Cmn
IndirectPointerInputChange

Represents a single pointer input change for an indirect pointer event.

Cmn

Top-level functions summary

IndirectPointerEvent
@ExperimentalIndirectPointerApi
IndirectPointerEvent(
    motionEvent: MotionEvent,
    primaryDirectionalMotionAxis: IndirectPointerEventPrimaryDirectionalMotionAxis,
    previousMotionEvent: MotionEvent?
)

Allows creation of a IndirectPointerEvent from a MotionEvent for cross module testing.

android

Extension properties summary

MotionEvent

Returns the underlying MotionEvent for additional information and cross module testing.

android

Top-level functions

IndirectPointerEvent

@ExperimentalIndirectPointerApi
fun IndirectPointerEvent(
    motionEvent: MotionEvent,
    primaryDirectionalMotionAxis: IndirectPointerEventPrimaryDirectionalMotionAxis = IndirectPointerEventPrimaryDirectionalMotionAxis.None,
    previousMotionEvent: MotionEvent? = null
): IndirectPointerEvent

Allows creation of a IndirectPointerEvent from a MotionEvent for cross module testing. IMPORTANT NOTE 1: Primary axis is determined by properties of the InputDevice contained within the MotionEvent. However, when manually creating a MotionEvent, there is no way to set the InputDevice. Therefore, this function allows you to manually set the primary axis for testing. If you have a system created MotionEvent, you can call convertActionToIndirectPointerEventType() on your MotionEvent to get the primary axis. IMPORTANT NOTE 2: Since this is just a test function that doesn't maintain state for previous MotionEvents (like the Android Compose system does), you will need to pass a separate MotionEvent to populate IndirectPointerInputChange's "previous" parameters (time, position, and pressed).

Parameters
motionEvent: MotionEvent

The MotionEvent to convert to an IndirectPointerEvent.

primaryDirectionalMotionAxis: IndirectPointerEventPrimaryDirectionalMotionAxis = IndirectPointerEventPrimaryDirectionalMotionAxis.None

Primary directional motion axis for testing.

previousMotionEvent: MotionEvent? = null

The MotionEvent for previous values (time, position, and pressed).

Extension properties

nativeEvent

val IndirectPointerEvent.nativeEventMotionEvent

Returns the underlying MotionEvent for additional information and cross module testing.