/** * 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;