react-native-interactable-with-android-link
Version:
Upgrade for react-native-interactable
96 lines (93 loc) • 2.5 kB
JavaScript
import React, { Component } from 'react';
import { StyleSheet, View, TouchableOpacity, Text } from 'react-native';
import Interactable from 'react-native-interactable-reanimated';
export default class ChangePosition extends Component {
constructor(props) {
super(props);
this.state = {};
}
render() {
const snapPoints = [
{ x: -140, y: -250 },
{ x: 140, y: -250 },
{ x: -140, y: -120 },
{ x: 140, y: -120 },
{ x: -140, y: 0 },
{ x: 140, y: 0 },
{ x: -140, y: 120 },
{ x: 140, y: 120 },
{ x: -140, y: 250 },
{ x: 140, y: 250 },
];
const blueDestination = snapPoints[3];
return (
<View style={styles.container}>
<Interactable.View
style={{ zIndex: 2 }}
ref="blue"
snapPoints={snapPoints}
initialPosition={{ x: -140, y: 0 }}
>
<View
style={{
width: 70,
height: 70,
backgroundColor: 'blue',
borderRadius: 35,
}}
/>
</Interactable.View>
<Interactable.View
style={{ zIndex: 2 }}
ref="green"
snapPoints={snapPoints}
initialPosition={{ x: -140, y: 0 }}
>
<View
style={{
width: 70,
height: 70,
backgroundColor: 'green',
borderRadius: 35,
}}
/>
</Interactable.View>
<View
style={{
position: 'absolute',
left: 140,
zIndex: 1,
}}
>
<TouchableOpacity
onPress={() => {
this.refs.blue.changePosition(blueDestination);
}}
>
<Text style={{ color: 'blue', fontSize: 12 }}>
{'ChangePosition to ' + JSON.stringify(blueDestination)}
</Text>
</TouchableOpacity>
<TouchableOpacity
onPress={() => {
this.refs.green.changePosition({
x: (Math.random() - 0.5) * 280,
y: (Math.random() - 0.5) * 500,
});
}}
>
<Text style={{ color: 'green' }}>ChangePosition to random</Text>
</TouchableOpacity>
</View>
</View>
);
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: 'white',
},
});