slideInImage.tsx 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. import React, { useRef, useEffect } from 'react';
  2. import { Animated, StyleSheet, Image, ImageSourcePropType } from 'react-native';
  3. import {
  4. widthPercentageToDP as wp,
  5. heightPercentageToDP as hp
  6. } from 'react-native-responsive-screen';
  7. interface SlideInImageProps {
  8. source: ImageSourcePropType;
  9. }
  10. // This component creates a "slide-in" effect for Images. Images slide from left to view.
  11. const SlideInImage: React.FC<SlideInImageProps> = ({ source }) => {
  12. const slideAnim = useRef(new Animated.Value(-400)).current;
  13. useEffect(() => {
  14. Animated.timing(slideAnim, {
  15. toValue: 0,
  16. duration: 1000,
  17. useNativeDriver: true
  18. }).start();
  19. }, [slideAnim]);
  20. return (
  21. <Animated.View
  22. style={[
  23. styles.imageContainer,
  24. {
  25. transform: [{ translateX: slideAnim }]
  26. }
  27. ]}
  28. >
  29. <Image source={source} style={styles.image} resizeMode="stretch" />
  30. </Animated.View>
  31. );
  32. };
  33. const styles = StyleSheet.create({
  34. imageContainer: {
  35. flex: 1
  36. },
  37. image: {
  38. height: wp('60%'),
  39. width: wp('100%')
  40. }
  41. });
  42. export default SlideInImage;