Reputation: 1
I want make a view like this, or like this video
I used react-native-collapsible-tab-view but it is have bugs.
Can I make it with react-native-reanimated and react-native-gesture-handler?
Here is the page structure
<View>
<Animated.View>
<FastImage
style={{weidth: '100%', height: '200'}}
source={{
uri: 'some_image.jpg',
}}
/>
</Animated.View>
<Animated.View>
<TabsProvider defaultIndex={0}>
<Tabs>
<TabScreen label='Tab1'>
<ScrollView>
<Text>SomeViews</Text>
</ScrollView>
</TabScreen>
<TabScreen label='Tab2'>
<ScrollView>
<Text>SomeViews</Text>
</ScrollView>
</TabScreen>
</Tabs>
</TabsProvider>
</Animated.View>
</View>
Upvotes: 0
Views: 85
Reputation: 644
You can
Exapmple:
const animProgress = useSharedValue(0);
const handleScroll = ({ nativeEvent }) => {
animProgress.value = Math.min(1, nativeEvent.contentOffset.y / disapearLimit);
};
const animStyle = useAnimatedStyle(() => ({
transform: [ { scaleY: 1 + animProgress.value * (disapearLimit / coverHeight - 1) }, ],
opacity: 1 - animProgress.value,
}));
return (
<View>
<Animated.View style={[styles.coverViewWithAbsolutePosition, animStyle]} />
<View>
<ScrollView onScroll={handleScroll} scrollEventThrottle={16}>
{children}
</ScrollView>
</View>
</View>
);
Alternatively, props passed to useAnimatedStyle could be generated by useDerivedValue.
Upvotes: 1