react-native-gallery-preview
v1.3.2
Published
test
Downloads
1,789
Maintainers
Readme
react-native-gallery-preview
GalleryPreview is a flexible modal component for easy gallery previews with full gesture support. Using Reanimated
and React Native Gesture Handler
, it gives a smooth and simple user experience for both iOS and Android.
Features
- ⚡ Smooth Gesture Interactions and Animations: Experience fluid and responsive animations and gestures for a delightful user interface.
- 🔍 Double Tap and Pinch to zoom: Users can effortlessly zoom in and out of images with simple double-tap and pinch gestures
- 👆 Pull down to close: Intuitive pull-down gesture to close the gallery preview, making navigation seamless.
- ↔️ RTL Support
- 📱 Supports both
iOS
andAndroid
: Fully compatible with both iOS and Android devices, ensuring a consistent experience across platforms. - 📱 Compatible with
Expo
Get started
Before you can use GalleryPreview, you need to set up react-native-reanimated and react-native-gesture-handler. Follow the links below for detailed installation guides:
Once the dependencies are installed, you can add react-native-gallery-preview to your project:
npm install react-native-gallery-preview
# or
yarn add react-native-gallery-preview
Example
import React, { useState } from 'react';
import { Button, View } from 'react-native';
import GalleryPreview from 'react-native-gallery-preview';
export const App = () => {
const [isVisible, setIsVisible] = useState(false);
const images = [
{ uri: 'https://example.com/image1.jpg' },
{ uri: 'https://example.com/image2.jpg' },
// Add more images here
];
return (
<View>
<Button title="Open Gallery Preview" onPress={() => setIsVisible(true)} />
<GalleryPreview
isVisible={isVisible}
onRequestClose={() => setIsVisible(false)}
images={images}
/>
</View>
);
};
Props
| Prop Name | Type | Description | Default |
|----------------------------|-------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------|
| isVisible
| boolean
| Controls the visibility of the image viewer modal. | - |
| onRequestClose
| () => void
| Function to close the image viewer modal. | - |
| images
| ImageItemURI[]
| Array of image URIs to be displayed. | - |
| initialIndex?
| number
| The initial index of the image to be displayed when the viewer is opened. | 0
|
| gap?
| number
| The gap between images in the viewer. | 24
|
| simultaneousRenderedImages?
| number
| The number of images rendered simultaneously for optimization. | 6
| |
| OverlayComponent?
| (props: GalleryOverlayProps) => React.ReactNode
| Optional component to be rendered above the image viewer. | - |
| ImageComponent?
| (props: GalleryImageComponentProps) => React.JSX.Element
| Optional custom component to render each image. | - |
| springConfig?
| SpringConfig
| Spring configuration for animations. | { damping: 1000, mass: 1, stiffness: 250, restDisplacementThreshold: 0.02, restSpeedThreshold: 4 }
|
| doubleTabEnabled?
| boolean
| Enable or disable double-tap to zoom functionality. | true
|
| pinchEnabled?
| boolean
| Enable or disable pinch to zoom functionality. | true
|
| swipeToCloseEnabled?
| boolean
| Enable or disable swipe to close functionality. | true
|
| backgroundColor?
| string
| The background color of the modal, DefaultHeader, and StatusBar. | #000
| headerTextColor?
| string
| Color of text in the header. | #fff