diff --git a/example/src/pages/ResponsiveLayouts.tsx b/example/src/pages/ResponsiveLayouts.tsx index e1372e7d..0cdcde83 100644 --- a/example/src/pages/ResponsiveLayouts.tsx +++ b/example/src/pages/ResponsiveLayouts.tsx @@ -1,5 +1,18 @@ -import { View, Text, StyleSheet, ActivityIndicator } from 'react-native'; -import { Fit, RiveView, useRiveFile } from '@rive-app/react-native'; +import { useState, useRef, useEffect } from 'react'; +import { + View, + Text, + StyleSheet, + Button, + ActivityIndicator, + useWindowDimensions, +} from 'react-native'; +import { + Fit, + RiveView, + useRiveFile, + type RiveViewRef, +} from '@rive-app/react-native'; import { type Metadata } from '../helpers/metadata'; /** @@ -11,6 +24,22 @@ export default function ResponsiveLayoutsExample() { const { riveFile, isLoading, error } = useRiveFile( require('../../assets/rive/layouts_demo.riv') ); + const [scaleFactor, setScaleFactor] = useState(4.0); + const riveRef = useRef(null); + const { width, height } = useWindowDimensions(); + + useEffect(() => { + riveRef.current?.playIfNeeded(); + }, [width, height]); + + const increaseScale = () => { + setScaleFactor((prev) => prev + 0.5); + riveRef.current?.playIfNeeded(); + }; + const decreaseScale = () => { + setScaleFactor((prev) => Math.max(0.5, prev - 0.5)); + riveRef.current?.playIfNeeded(); + }; return ( @@ -20,36 +49,64 @@ export default function ResponsiveLayoutsExample() { {error} ) : riveFile ? ( (riveRef.current = ref) }} file={riveFile} fit={Fit.Layout} - layoutScaleFactor={1} // adjust the layout scale factor to control the layout scale + layoutScaleFactor={scaleFactor} style={styles.rive} + autoPlay={true} /> ) : null} + + Layout Scale Factor + +