Detecting zoom event in ScrollView for React Native - react-native

I would like to implement pinch zoom functionality for the image view in React Native.
I'm starting by wrapping an element in a element. I would like to detect the zoom event and then scale the image accordingly.
How do I get the zoom event?

If an Image is wrapped by ScrollView, when ScrollView zooms, the Image will zoom too.
And the 'onScroll' function of the ScrollView will detect the zoom event too.

Related

onmouseenter event in react native

Is there a equivalent event in react native for 'onmouseenter'.
I have already tried pan responder and swipe-able
I want to detect if the user while swiping around a screen enters a component and leaves it.
I implemented the behavior of onMouseEnter with many code, in short, implemented a circle View as an indicator of the position where your finger touch the screen, and implemented the collision detection between the indicator circle and the component which you want onMouseEnter.
To compute pickerX and pickerY of the indicator circle, you can ref to what PanResponder did in https://github.com/flyskywhy/react-native-bitmap-color-picker/blob/master/index.js
To compute collision detection, you can ref to areOverlapping = distanceBetweenCenters < circleDiameter in https://dev.to/hrastnik/implementing-gravity-and-collision-detection-in-react-native-2hk5

Getting visible area of Image in React Native ScrollView

I have a scrollView with a single Image in it. Initially the Image has the same width & heigth as the ScrollView.
I am trying to crop this image based on how the user have zoomed and moved the image. Basically, I want to know what part of the image is visible, so that I can crop it accordingly.
Im using expo's ImageManipulator to crop it, so I have that part covered. But to get the dimensions of what part of the Image is visible after zoom/drag is whats bugging me.
Much appreciated!
The logic here is to first fill the Image component inside the size of the ScrollView. This way, the size of the image will be equal to the size of the ScrollView.
First, you need to set directionalLockEnabled prop to false and horizontal prop to true to make the ScrollView scroll horizontally.
Then, set maximumZoomScale and minimumZoomScale props to make your ScrollView zoomable. Now, every time you zoom and scroll in your ScrollView it will fire onMomentumScrollEnd and onScrollEndDrag with the event parameter from which you can get the visible part of your ScrollView which is usually,
event.nativeEvent.contentOffset
event.nativeEvent.contentSize
event.nativeEvent.layoutMeasurement
Since your Image Component size is same as that of the ScrollView Component, it will give you the exact visible area of the image in the ScrollView.
For Detailed implementation example, you can refer to this file of the react-native-community/react-native-image-editor repository

React Native: How to make ScrollView scroll for just one item in it?

I have an image rendered inside a scrollview component and the dimensions of the image are fixed as (height: 200, and width from device dimension).
Also the style of the scrollview is set as (flex: 1 not contentContainerStyle).
But the image doesn't scroll properly and snaps back when I scroll.
I understand that this is because there is only one item in the scrollView.
How to force scroll the content inside the scrollView even if there is only one item in it?
Try wrapping your ScrollView within a an enclosing

Is it possible to control the scroll position of an Animated.Scrollview in react-native with the Animated API?

I'm trying to manually control the deceleration of an Animated.ScrollView after the user releases their finger. I have found plenty of resources on setting an animated value to the position of a scrollview but nothing about tying the position of the scrollview to an animated value. Is it possible to control the scrollview in the way I'm describing?

To enable zoom button in react-native-maps

I am using react-native-maps in my native projectI need the default zoom control button to zoom in and out
How to enable zoom button/control in react-native-maps
If you rotate the screen once, with enableZoomControl=true, It will show.
My problem is that it needs that rotation of the screen(device) to show the first time.