Comment créer une "view swipeable smooth/ fluide"

Par noobreact, il y a 2 ans


J'ai travaillé sur cette tâche simple mais je n'ai pas réussi à le faire. Je veux juste une vue contenant une image et deux actions balayables, une lorsque les utilisateurs glissent de gauche à droite et une de droite à gauche. Sans que l'image ne bouge, je veux juste que les rendus glissants se déplacent progressivement sur l'image à mesure que les utilisateurs glissent.

c'est le code que j'ai maintenant

import React, { useRef, useState, useEffect } from 'react'; import { SafeAreaView, FlatList, View, Image, Text, StyleSheet, ScrollView, TouchableOpacity, index, PanResponder, Animated, Dimensions } from 'react-native'; import Swipeable from 'react-native-gesture-handler/Swipeable'; const montage = require("../../assets/mount.jpg") const Swipeabletest = ({ navigation }) => { const renderLeftActions = (progress, dragX) => { const trans = dragX.interpolate({ inputRange: [0, 200], outputRange: [1, 0], extrapolate: 'clamp', }); console.log('Left action translation value:', trans); return ( <Animated.View style={{ transform: [{ translateX: trans }], backgroundColor: 'blue', width: '100%', height: 200, zIndex: 200, position: 'relative', // Ensure the left action is absolutely positioned top:0, left:0, zIndex:35, justifyContent:'center', alignItems:'center', borderRadius:400/2 }} > <Text>Left action</Text> </Animated.View> ); }; const renderRightActions = (progress, dragX) => { const trans = dragX.interpolate({ inputRange: [-200, 0], outputRange: [0, 1], extrapolate: 'clamp', }); console.log('Right action translation value:', trans); return ( <Animated.View style={{ transform: [{ translateX: trans }], backgroundColor: 'red', width: 200, height: 200, zIndex: 34, // position: 'absolute', // right: 0, top:0, right:0, justifyContent:'center', alignItems:'center' }} > <Text>Right action</Text> </Animated.View> ); }; return ( <SafeAreaView style={styles.container}> <View style={{ backgroundColor: 'white', zIndex: 500, width: 200, height: 200, position: 'relative' }}> <Swipeable renderLeftActions={renderLeftActions} renderRightActions={renderRightActions} > <View style={{ backgroundColor: 'transparent', width: 200, height: 200, position: 'relative',borderRadius:400/2 }}> <Image source={montage} style={styles.montagnephotoprofil} /> </View> </Swipeable> </View> </SafeAreaView> ); }; const styles = StyleSheet.create({ container: { flex: 1, }, montagnephotoprofil: { width: '100%', height: '100%', borderRadius:400/2, }, }); export default Swipeabletest; `

Je voudrais comme je l'ai dis juste les éléments à droite et à gauche de se deplacer au-dessus de l'image/view "principale" celle que l'utilisateur voit des le départ.
Merci de votre aide

Aucune réponse