Basic Example
Putting it all together
Basic Example
This example demonstrates how to fetch geometry data, display metrics, and render a cutout overlay.
import React from 'react';
import { View, Text, StyleSheet } from 'react-native';
import { useDeviceGeometry } from 'react-native-device-geometry';
import { Svg, Path } from 'react-native-svg';
export default function App() {
const geometry = useDeviceGeometry();
if (!geometry) {
return (
<View style={styles.center}>
<Text>Loading geometry...</Text>
</View>
);
}
const { metrics, cutouts } = geometry.mainDisplay;
return (
<View style={styles.container}>
{/* Metrics Display */}
<View style={styles.content}>
<Text style={styles.title}>Device Geometry</Text>
<Text>Width: {metrics.width}px</Text>
<Text>Height: {metrics.height}px</Text>
<Text>Scale: {metrics.scale}x</Text>
<Text>Orientation: {metrics.orientation}</Text>
</View>
{/* Cutout Overlay */}
<View style={StyleSheet.absoluteFill} pointerEvents="none">
<Svg style={StyleSheet.absoluteFill}>
{cutouts.cutouts.map((cutout, i) => (
<Path
key={i}
d={cutout.svgPath}
fill="rgba(255, 0, 0, 0.3)" // Semi-transparent red
/>
))}
</Svg>
</View>
</View>
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: '#f5f5f5',
},
center: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
},
content: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
gap: 10,
},
title: {
fontSize: 24,
fontWeight: 'bold',
marginBottom: 20,
},
});