Skip to content

Instantly share code, notes, and snippets.

@talkol
Created June 18, 2016 19:44
Show Gist options
  • Select an option

  • Save talkol/e194cd7f61523103aa9bd17a5c149502 to your computer and use it in GitHub Desktop.

Select an option

Save talkol/e194cd7f61523103aa9bd17a5c149502 to your computer and use it in GitHub Desktop.
import React, { Component } from 'react';
import { PanResponder, Animated, View, Dimensions } from 'react-native';
const dragOffsetForTransparency = 0.8 * Dimensions.get('window').width;
export default class Swipeable extends Component {
constructor(props) {
super(props);
this.state = {
containerTranslateX: new Animated.Value(0)
};
this.panResponder = PanResponder.create({
onStartShouldSetPanResponder: (evt, gestureState) => true,
onPanResponderMove: Animated.event([null, {
dx: this.state.containerTranslateX
}]),
onPanResponderRelease: (evt, gestureState) => {
Animated.spring(this.state.containerTranslateX, {toValue:0}).start();
}
});
}
render() {
return (
<Animated.View {...this.panResponder.panHandlers}
style={{
opacity: this.state.containerTranslateX.interpolate({
inputRange: [-dragOffsetForTransparency, 0, dragOffsetForTransparency],
outputRange: [0, 1, 0],
}),
transform: [{translateX: this.state.containerTranslateX}]
}}>
{this.props.children}
</Animated.View>
);
}
}
@LeoNatan

LeoNatan commented Aug 22, 2016

Copy link
Copy Markdown

I have to say, that for a noob, RNSwipeable.m is a bit more readable. 😄

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment