snapPoints={[{x: 0}, {x: -200}]}
A list of points the view will snap to after being dragged by the user. To implement a a drawer for example, provide 2 points - one for the open state and one for the closed state. Points are relative to the view's center (after initial layout). Every element in the array is an object with the following properties:
x
- The horizontal position (relative to the center). Optional if a single dimension is needed.y
- The vertical position (relative to the center). Optional if a single dimension is needed.damping
- Amount of damping on the spring connected to this point. Default is0.7
.tension
- Tension of the spring connected to this point. Default is300
.id
- An optional string name for the point to identify it in theonSnap
event.
Examples for chat heads, drawer and swipeable card.
springPoints={[{x: 0, tension: 6000, damping: 0.5, influenceArea: {left: 0}}]}
Connect the view's center to a group of constant springs. Every element in the array is an object with the following properties:
x
- The horizontal anchor position of the spring (relative to the center). Default is0.0
.y
- The vertical anchor position of the spring (relative to the center). Default is0.0
.tension
- Tension of the spring. Default is300
.damping
- Amount of damping on the spring. Default is0.0
.influenceArea
- Limit the spring influence to a specific area. Optional. An object with the following properties:left
- The minimum horizontal influence point (relative to the center). Optional.right
- The maximum horizontal influence point (relative to the center). Optional.top
- The minimum vertical influence point (relative to the center). Optional.bottom
- The maximum vertical influence point (relative to the center). Optional.
haptics
- Whether to enable haptic feedback on springs with influence area. Defaultfalse
.
Note: For the springs to affect the view while dragging, make sure dragging is performed via a spring using the dragWithSpring
prop.
gravityPoints={[{x: 0, y: 0, strength: 8000, falloff: 40, damping: 0.5}]}
Attract/repel the view's center with a group of constant gravity wells. Every element in the array is an object with the following properties:
x
- The horizontal position of the well (relative to the center). Default is0.0
.y
- The vertical position of the well (relative to the center). Default is0.0
.strength
- Strength of the field (positive attracts, negative repels). Default is400
.falloff
- Distance of decay for the field strength. Default is40
.damping
- Amount of damping on the field strength. Default is0.0
.influenceArea
- Limit the field influence to a specific area. Optional. An object with the following properties:left
- The minimum horizontal influence point (relative to the center). Optional.right
- The maximum horizontal influence point (relative to the center). Optional.top
- The minimum vertical influence point (relative to the center). Optional.bottom
- The maximum vertical influence point (relative to the center). Optional.
haptics
- Whether to enable haptic feedback on fields with influence area. Defaultfalse
.
Note: For the gravity to affect the view while dragging, make sure dragging is performed via a spring using the dragWithSpring
prop.
frictionAreas={[{damping: 0.5, influenceArea: {top: 0}}]}
Add friction to the view's movement with a group of friction regions. Every element in the array is an object with the following properties:
damping
- Amount of friction (0.0
-1.0
). Default is0.0
.influenceArea
- Limit the friction influence to a specific area. Optional. An object with the following properties:left
- The minimum horizontal influence point (relative to the center). Optional.right
- The maximum horizontal influence point (relative to the center). Optional.top
- The minimum vertical influence point (relative to the center). Optional.bottom
- The maximum vertical influence point (relative to the center). Optional.
haptics
- Whether to enable haptic feedback on regions with influence area. Defaultfalse
.
Note: For the friction to affect the view while dragging, make sure dragging is performed via a spring using the dragWithSpring
prop.
alertAreas={[{id: 'myArea', influenceArea: {top: 0}}]}
Send alert event when the view's center enters/leaves any region within the group. Every element in the array is an object with the following properties:
id
- A required string name for the area to identify it in theonAlert
event.influenceArea
- Limit the alert to a specific area. Optional. An object with the following properties:left
- The minimum horizontal alert point (relative to the center). Optional.right
- The maximum horizontal alert point (relative to the center). Optional.top
- The minimum vertical alert point (relative to the center). Optional.bottom
- The maximum vertical alert point (relative to the center). Optional.
horizontalOnly={true}
Optional, whether the view should be locked to horizontal movement only. Default false
.
startOnFront
Optional, whether the view should call view.bringToFront()
when the view is first loaded.
Usually using zIndex does the trick. Use this in cases it doesn't
verticalOnly={true}
Optional, whether the view should be locked to vertical movement only. Default false
.
boundaries={{left: -100, right: 100, bounce: 0.5}}
Optional, an object providing limits to movement relative to the view's center (after initial layout). Contains following properties:
left
- The minimum horizontal position (relative to the center). Optional.right
- The maximum horizontal position (relative to the center). Optional.top
- The minimum vertical position (relative to the center). Optional.bottom
- The maximum vertical position (relative to the center). Optional.bounce
- The amount of bounce when hitting the limit (0.0
-1.0
). Optional.haptics
- Whether to enable haptic feedback on bounce. Defaultfalse
.
onSnap={this.onDrawerSnap}
Optional, a function called whenever the view snaps to a snapPoints
point (after being dragged). Example for drawer. When the function is called, an event object is passed as argument, containing the following properties:
index
- The zero-based index of the point in thesnapPoints
array.id
- The stringid
of the point in thesnapPoints
array (assuming it was provided).
onStop={this.onStopInteraction}
Optional, a function called whenever the interaction stops (views freeze momentarily). When the function is called, an event object is passed as argument, containing the following properties:
x
- The horizontal position of the view (relative to the center).y
- The vertical position of the view (relative to the center).
onDrag={this.onDragEvent}
Optional, a function called whenever the user starts or stops dragging the view. When the function is called, an event object is passed as argument, containing the following properties:
state
-start
orend
, whether the user started or finished dragging.x
- The horizontal position of the view (relative to the center).y
- The vertical position of the view (relative to the center).targetSnapPointId
- Forend
state, the stringid
of the target point in thesnapPoints
array (assuming it was provided). Otherwise, empty string.
onAlert={this.onAlertEvent}
Optional, a function called whenever the view's center enters/leaves an alert area (see alertAreas
). When the function is called, an event object is passed as argument, containing the following properties:
- key:
id
- The string name of the area that was entered/left. - value:
enter
orleave
(depending if entering or leaving the area).
dragEnabled={true}
Optional, whether the user can drag the view or not. Default true
.
dragWithSpring={{tension: 2000, damping: 0.5}}
Optional, specify in order to make dragging behavior of the view occur using a spring. If not given, drag will be done using a pinned anchor point. Contains following properties:
tension
- Tension of the spring.damping
- Amount of damping on the spring used for dragging. Optional.
dragToss={0.1}
Time in seconds the view is allowed to be tossed before snapping to a point. Default is 0.1
.
animatedValueX={this._deltaX}
Animated.Value
that will contain the delta from the center as the view moves (x axis). See this for more details on how to animate other views according to the movement of this view.
animatedValueY={this._deltaY}
Animated.Value
that will contain the delta from the center as the view moves (y axis). See this for more details on how to animate other views according to the movement of this view.
animatedNativeDriver={false}
Whether integration with Animated should use native driver. Default false
since Animated native driver is still a bit experimental. Try it out as eventually the quirks will be resolved and then we'll have a 100% native driver end to end with 60 FPS on derived animations as well.
initialPosition={{x: -140, y: -280}}
Optional, used to initialize the view's position to a position different than it's original center. This is mostly useful when you want to provide snapPoints
points relative to the center calculated by React Native layout, but want the view itself to start from a different position. See chat heads example.