-
-
Notifications
You must be signed in to change notification settings - Fork 1k
[docs] Gesture detectors #3894
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
[docs] Gesture detectors #3894
Changes from 61 commits
Commits
Show all changes
77 commits
Select commit
Hold shift + click to select a range
4e3e30f
Pan gesture
m-bert 7ac164d
Merge branch 'next' into @mbert/docs-v3
m-bert 203131e
Finish (?) Pan
m-bert db99336
Tap
m-bert f01bd66
Long press
m-bert 5490439
Rotation
m-bert ded8083
Pinch
m-bert e38591c
Fling
m-bert f338fa7
Hover
m-bert 11c91a7
Native
m-bert 37d7438
Manual
m-bert a93970a
Fix path
m-bert d23e66b
Remove cache from workflow
m-bert 5c0b717
composition
m-bert f293949
Remove PanHandlerData
m-bert 34a93a5
Use correct HandlerData
m-bert f4847dc
Merge branch 'next' into @mbert/docs-v3
m-bert 87a1130
Merge branch 'next' into @mbert/docs-v3
m-bert b96d788
Bye bye API 2
m-bert cf3f810
Fix hover
m-bert 944d689
Fix old links
m-bert d2958e0
Another links
m-bert d8eaaeb
remove useless prop
m-bert b2a373e
Add warning to requireToFail
m-bert d3c7893
One composition
m-bert e96349e
Remove outdated info
m-bert cd7c0d6
Remove SharedValue notes
m-bert ca2d46a
rephrase exclusive
m-bert 1811c9c
Other composition updates
m-bert 4fa234f
Change reference to example
m-bert fb8e2ef
Change reference to example yet again (manual)
m-bert 47da2df
Tapp
m-bert c8a4a76
Native on web
m-bert 5c3d918
Add missing pan properties
m-bert a8c6ccc
Simplify pinch example
m-bert 421d247
scaleChange
m-bert b14eadf
Add pan headers
m-bert b769862
Rotation gesture changes
m-bert 49b1d3e
Test id correct prop name
m-bert 41f7a4f
Add SharedValue info
m-bert 1fb9b51
Add missing shared value info to long press
m-bert 6d2da5a
Remove secondary headers
m-bert f90b378
Change order
m-bert b4cd005
Merge branch 'next' into @mbert/docs-detector
m-bert 5255e4a
Detecor page
m-bert 205c0a8
Gesture detector
m-bert 4c53b94
Change ordering
m-bert 42b04b1
Update links
m-bert 03501dc
Other links
m-bert e1fae87
Merge branch 'next' into @mbert/docs-detector
m-bert 59fd8df
Merge branch 'next' into @mbert/docs-detector
m-bert 68103e4
Update packages/docs-gesture-handler/docs/fundamentals/gesture-detect…
m-bert e58292d
Update packages/docs-gesture-handler/docs/fundamentals/gesture-detect…
m-bert ef9235b
Update packages/docs-gesture-handler/docs/fundamentals/gesture-detect…
m-bert a58babb
Review suggestions #1
m-bert 9939cfd
Review suggestions 2
m-bert d7e38d4
Improve CollapsibleCode component
m-bert af2b3bf
Interaction with Reanimated
m-bert 65c4bf5
Add Animated
m-bert 79a2ff3
Merge branch 'next' into @mbert/docs-detector
m-bert bc735eb
Add use cases
m-bert d157b24
Move reusing gestures to redbox
m-bert f70bf74
Update packages/docs-gesture-handler/docs/fundamentals/animated-inter…
m-bert 37e99bf
Update packages/docs-gesture-handler/docs/fundamentals/animated-inter…
m-bert bf6061a
Update packages/docs-gesture-handler/docs/fundamentals/gesture-detect…
m-bert 72f7eb4
Update packages/docs-gesture-handler/docs/fundamentals/gesture-detect…
m-bert 51be282
Update packages/docs-gesture-handler/docs/fundamentals/gesture-detect…
m-bert f69643e
Update packages/docs-gesture-handler/docs/fundamentals/gesture-detect…
m-bert dc19675
Update packages/docs-gesture-handler/docs/fundamentals/reanimated-int…
m-bert 4ec4ebb
Update packages/docs-gesture-handler/docs/fundamentals/gesture-detect…
m-bert dbaae0e
Turning off reanimated
m-bert 7157558
Merge branch '@mbert/docs-detector' of github.com:software-mansion/re…
m-bert 4f8e6dc
Mention all detectors
m-bert 16eb6cb
Merge branch 'next' into @mbert/docs-detector
m-bert d39af79
Update packages/docs-gesture-handler/docs/fundamentals/reanimated-int…
m-bert 2df4f82
Update packages/docs-gesture-handler/docs/fundamentals/reanimated-int…
m-bert 6fed3c3
Add useAnimated flag
m-bert File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
151 changes: 151 additions & 0 deletions
151
packages/docs-gesture-handler/docs/fundamentals/animated-interactions.mdx
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,151 @@ | ||
| --- | ||
| id: animated-interactions | ||
| title: Integration with Animated | ||
| sidebar_label: Integration with Animated | ||
| sidebar_position: 5 | ||
| --- | ||
|
|
||
| import CollapsibleCode from '@site/src/components/CollapsibleCode'; | ||
|
|
||
| Using hook API allows for smooth integration with the [Animated API](https://reactnative.dev/docs/animated). `Animated.event` mapping depends on `useNativeDriver` property. `Animated.event` can only be used in `onUpdate` callbacks. | ||
|
|
||
| :::danger Mixing Reanimated and Animated | ||
| It is not possible to mix `Reanimated` and `Animated` in the same `GestureDetector`. | ||
|
j-piasecki marked this conversation as resolved.
Outdated
|
||
| ::: | ||
|
|
||
| <CollapsibleCode | ||
| label="Show full example" | ||
| expandedLabel="Hide full example" | ||
| lineBounds={[8, 31]} | ||
| src={` | ||
| import * as React from 'react'; | ||
| import { Animated, StyleSheet, useAnimatedValue } from 'react-native'; | ||
| import { | ||
| GestureHandlerRootView, | ||
| GestureDetector, | ||
| usePanGesture, | ||
| } from 'react-native-gesture-handler'; | ||
|
|
||
| export default function App() { | ||
| const value = useAnimatedValue(0); | ||
|
|
||
| const event = Animated.event( | ||
| [{ nativeEvent: { handlerData: { translationX: value } } }], | ||
| { | ||
| useNativeDriver: true, | ||
| } | ||
| ); | ||
|
|
||
| const gesture = usePanGesture({ | ||
| // highlight-next-line | ||
| onUpdate: event, | ||
| }); | ||
|
|
||
| return ( | ||
| <GestureHandlerRootView> | ||
| <GestureDetector gesture={gesture}> | ||
| <Animated.View | ||
| style={[styles.box, { transform: [{ translateX: value }] }]} | ||
| /> | ||
| </GestureDetector> | ||
| </GestureHandlerRootView> | ||
| ); | ||
| } | ||
|
|
||
| const styles = StyleSheet.create({ | ||
| box: { | ||
| width: 150, | ||
| height: 150, | ||
| backgroundColor: '#b58df1', | ||
| }, | ||
| }); | ||
| `}/> | ||
|
|
||
| ## useNativeDriver | ||
|
|
||
| When using `Animated.event` with `useNativeDriver` set to `false`, it is important to set [`disableReanimated`](/docs/fundamentals/reanimated-interactions#disablereanimated) to `true` in the gesture configuration. | ||
|
m-bert marked this conversation as resolved.
Outdated
|
||
|
|
||
| Mapping of `Animated.event` depends on the value of `useNativeDriver` property. When set to `true`, event data can be accessed through `nativeEvent.handlerData` property: | ||
|
|
||
| ```jsx | ||
| const value = useAnimatedValue(0); | ||
|
|
||
| const event = Animated.event( | ||
| [{ nativeEvent: { handlerData: { /* translationX: value, ... */ } } }], | ||
| { useNativeDriver: true } | ||
| ); | ||
| ``` | ||
|
|
||
| In case of `useNativeDriver` set to `false`, event data is accessed directly: | ||
|
|
||
| ```jsx | ||
| const value = useAnimatedValue(0); | ||
|
|
||
| const event = Animated.event( | ||
| [ { /* translationX: value, ... */ } ], | ||
| { useNativeDriver: false } | ||
| ); | ||
| ``` | ||
|
|
||
| ## Usage with VirtualGestureDetector | ||
|
|
||
| Using `Animated.event` with [`VirtualGestureDetector`](/docs/fundamentals/gesture-detectors#virtualgesturedetector) is possible only when `useNativeDriver` is set to `false`. | ||
|
|
||
| <CollapsibleCode | ||
| label="Show full example" | ||
| expandedLabel="Hide full example" | ||
| lineBounds={[8, 33]} | ||
| src={` | ||
| import React from 'react'; | ||
| import { View, StyleSheet, Animated, useAnimatedValue } from 'react-native'; | ||
| import { | ||
| GestureHandlerRootView, | ||
| InterceptingGestureDetector, | ||
| usePanGesture, | ||
| VirtualGestureDetector, | ||
| } from 'react-native-gesture-handler'; | ||
|
|
||
| export default function App() { | ||
| const value = useAnimatedValue(0); | ||
| const event = Animated.event([{ translationX: value }], { | ||
| useNativeDriver: false, | ||
| }); | ||
|
|
||
| const panGesture = usePanGesture({ | ||
| onUpdate: event, | ||
| disableReanimated: true, | ||
| }); | ||
|
|
||
| return ( | ||
| <GestureHandlerRootView style={styles.container}> | ||
| <InterceptingGestureDetector> | ||
| <View style={styles.outerBox}> | ||
| <VirtualGestureDetector gesture={panGesture}> | ||
| <Animated.View | ||
| style={[styles.innerBox, { transform: [{ translateX: value }] }]} | ||
| /> | ||
| </VirtualGestureDetector> | ||
| </View> | ||
| </InterceptingGestureDetector> | ||
| </GestureHandlerRootView> | ||
| ); | ||
| } | ||
|
|
||
| const styles = StyleSheet.create({ | ||
| container: { | ||
| flex: 1, | ||
| alignItems: 'center', | ||
| justifyContent: 'center', | ||
| }, | ||
| outerBox: { | ||
| backgroundColor: '#b58df1', | ||
| width: 150, | ||
| height: 150, | ||
| }, | ||
| innerBox: { | ||
| width: 100, | ||
| height: 100, | ||
| backgroundColor: 'blue', | ||
| }, | ||
| }); | ||
| `}/> | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.