A React Native component for displaying animated numbers, written in SwiftUI for seamless and super-smooth animations when changing numeric values.
animatednumber.mov
The animations are handled natively using SwiftUI, ensuring smooth transitions when changing numbers. Animations are built into the number transitions, requiring no additional setup.
- Super smooth animations for changing numbers.
- Support for integers and decimal numbers.
- Display units such as
%,kg, or any custom label. - Fully customizable styles for numbers and units.
- Easy integration with React Native projects.
You can install the package using either Bun or Yarn:
bun add @quanna/react-native-animated-numberyarn add @quanna/react-native-animated-numberHere's an example of how to use @quanna/react-native-animated-number in your React Native project:
import React, { useState } from 'react';
import { View, Button, StyleSheet } from 'react-native';
import ReactNativeAnimatedNumberView from '@quanna/react-native-animated-number';
export default function App() {
const [number, setNumber] = useState(42.5);
const [displayDecimal, setDisplayDecimal] = useState(false);
return (
<View style={styles.container}>
<ReactNativeAnimatedNumberView
number={number}
unit="%"
displayDecimal={displayDecimal} // Toggle decimals (true or false)
style={styles.animatedNumberContainer}
numberStyle={styles.numberText}
unitStyle={styles.unitText}
/>
<View style={{ marginVertical: 10 }} />
<Button
title="Change Number"
onPress={() => setNumber(Math.random() * 100)} // Update number dynamically
/>
<Button
title={displayDecimal ? 'Show Integers' : 'Show Decimals'}
onPress={() => setDisplayDecimal(!displayDecimal)} // Toggle decimals
/>
</View>
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#f7f7f7',
},
animatedNumberContainer: {
backgroundColor: 'green',
padding: 10,
borderRadius: 8,
},
numberText: {
fontSize: 24,
fontWeight: 'bold',
color: 'white',
},
unitText: {
fontSize: 16,
color: 'yellow',
},
});| Prop | Type | Default | Description |
|---|---|---|---|
number |
number |
0 |
The numeric value to be displayed. Can be positive or negative. |
displayDecimal |
boolean |
false |
Whether to display the number with decimals. |
unit |
string |
"" |
Unit to display next to the number (e.g., %, kg, lbs). |
style |
StyleProp<ViewStyle> |
null |
Custom styles for the container wrapping the number and unit. |
numberStyle |
StyleProp<TextStyle> |
null |
Custom styles for the number text. |
unitStyle |
StyleProp<TextStyle> |
null |
Custom styles for the unit text. |
You can style the component to match your design using the following props:
Use the style prop to customize the container view:
<ReactNativeAnimatedNumberView
style={{
backgroundColor: 'black',
borderRadius: 10,
padding: 10,
}}
/>Use numberStyle and unitStyle props to style the number and unit text:
<ReactNativeAnimatedNumberView
numberStyle={{
fontSize: 30,
fontWeight: 'bold',
color: 'white',
}}
unitStyle={{
fontSize: 18,
color: 'gray',
}}
/>This library is licensed under the MIT License. Feel free to use it in your projects.
Happy coding! 🚀