/**
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @flow strict-local
* @format
*/
'use strict';
import type {RNTesterModuleExample} from '../../types/RNTesterTypes';
import type AnimatedValue from 'react-native/Libraries/Animated/nodes/AnimatedValue';
const React = require('react');
const ReactNative = require('react-native');
const {Component} = React;
const {StyleSheet, Text, View, Animated, Easing, TouchableOpacity, Dimensions} =
ReactNative;
class ScrollViewAnimatedExample extends Component<{...}> {
_scrollViewPos: AnimatedValue = new Animated.Value(0);
startAnimation: () => void = () => {
this._scrollViewPos.setValue(0);
Animated.timing(this._scrollViewPos, {
toValue: 100,
duration: 10000,
easing: Easing.linear,
useNativeDriver: true,
}).start();
};
render(): React.Node {
const interpolated = this._scrollViewPos.interpolate({
inputRange: [0, 1],
outputRange: [0, 0.1],
});
const interpolated2 = this._scrollViewPos.interpolate({
inputRange: [0, 1],
outputRange: ['0deg', '1deg'],
});
return (
Scroll me horizontally
);
}
}
const {width, height} = Dimensions.get('window');
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#F5FCFF',
},
button: {
margin: 50,
width: width,
marginRight: width,
height: height / 2,
},
});
exports.title = 'ScrollViewAnimated';
exports.category = 'Basic';
exports.description = 'Component that is animated when ScrollView is offset.';
exports.examples = [
{
title: 'Animated by scroll view',
render(): React.MixedElement {
return ;
},
},
] as Array;