
Product
Rust Support Now in Beta
Socket's Rust support is moving to Beta: all users can scan Cargo projects and generate SBOMs, including Cargo.toml-only crates, with Rust-aware supply chain checks.
@nithinpp69/react-native-animated-button
Advanced tools
A simple and customizable React Native animated button component.
⚠️ Peer Dependencies
This component has a peer dependency on react-native-reanimated-v2. react-native-reanimated-v2 has to be installed and linked into your project. Follow react-native-reanimated-v2 to install the dependency.
Supported version: react-native >= 0.59.0
npm install @nithinpp69/react-native-animated-button
or
yarn add @nithinpp69/react-native-animated-button
import React from 'react';
import { Image, StyleSheet, Text, View } from 'react-native';
import AnimatedButton from '@nithinpp69/react-native-animated-button';
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: '#171517',
alignItems: 'center',
},
title: {
color: 'white',
fontWeight: 'bold',
fontSize: 18,
marginBottom: 15,
textAlign: 'left',
width: '90%',
},
image: { width: '90%', height: 250, borderRadius: 15 },
row: {
width: '90%',
flexDirection: 'row',
alignItems: 'center',
justifyContent: 'space-between',
paddingTop: 15,
},
courtesy: { color: 'white', fontSize: 15 },
icon: { width: 35, height: 35 },
});
const App = () => {
return (
<View style={styles.container}>
<Text style={styles.title}>Without Custom Popup</Text>
<Image
source={{
uri: 'https://images.unsplash.com/photo-1634938971687-1082b4cb018c?ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=1170&q=80',
}}
style={styles.image}
/>
<View style={styles.row}>
<Text style={styles.courtesy}>
Image courtesy : Unsplash and FlatIcon
</Text>
<AnimatedButton>
<Image
source={{
uri: 'https://cdn-icons-png.flaticon.com/512/6685/6685820.png',
}}
style={styles.icon}
/>
</AnimatedButton>
</View>
</View>
);
};
export default App;
import React from 'react';
import { Image, StyleSheet, Text, View } from 'react-native';
import AnimatedButton from '@nithinpp69/react-native-animated-button';
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: '#171517',
alignItems: 'center',
},
title: {
color: 'white',
fontWeight: 'bold',
fontSize: 18,
marginBottom: 15,
textAlign: 'left',
width: '90%',
},
image: { width: '90%', height: 250, borderRadius: 15 },
row: {
width: '90%',
flexDirection: 'row',
alignItems: 'center',
justifyContent: 'space-between',
paddingTop: 15,
},
courtesy: { color: 'white', fontSize: 15 },
flyingContainer: { color: 'white', fontSize: 18, fontWeight: 'bold' },
icon: { width: 35, height: 35 },
});
const App = () => {
return (
<View style={styles.container}>
<Text style={styles.title}>With Custom Popup</Text>
<Image
source={{
uri: 'https://images.unsplash.com/photo-1634938971687-1082b4cb018c?ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=1170&q=80',
}}
style={styles.image}
/>
<View style={styles.row}>
<Text style={styles.courtesy}>
Image courtesy : Unsplash and FlatIcon
</Text>
<AnimatedButton
renderFlyingContainer={() => (
<Text style={styles.flyingContainer}>+1</Text>
)}
>
<Image
source={{
uri: 'https://cdn-icons-png.flaticon.com/512/6685/6685820.png',
}}
style={styles.icon}
/>
</AnimatedButton>
</View>
</View>
);
};
export default App;
import React, { useState } from 'react';
import { Image, ImageBackground, StyleSheet, Text, View } from 'react-native';
import AnimatedButton from '@nithinpp69/react-native-animated-button';
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: '#171517',
alignItems: 'center',
},
title: {
color: 'white',
fontWeight: 'bold',
fontSize: 18,
marginBottom: 15,
textAlign: 'left',
width: '90%',
},
image: { width: '90%', height: 250, borderRadius: 15 },
row: {
width: '90%',
flexDirection: 'row',
alignItems: 'center',
justifyContent: 'space-between',
paddingTop: 15,
},
courtesy: { color: 'white', fontSize: 15 },
flyingContainer: { color: 'white', fontSize: 18, fontWeight: 'bold' },
icon: {
width: 35,
height: 35,
alignItems: 'center',
justifyContent: 'center',
},
likesCount: {
color: 'black',
fontSize: 18,
fontWeight: 'bold',
},
});
const App = () => {
const [likeCount, setLikeCount] = useState(0);
return (
<View style={styles.container}>
<Text style={styles.title}>With Likes Count</Text>
<Image
source={{
uri: 'https://images.unsplash.com/photo-1634938971687-1082b4cb018c?ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=1170&q=80',
}}
style={styles.image}
/>
<View style={styles.row}>
<Text style={styles.courtesy}>
Image courtesy : Unsplash and FlatIcon
</Text>
<AnimatedButton
renderFlyingContainer={() => (
<Text style={styles.flyingContainer}>+1</Text>
)}
onPress={() => {
setLikeCount(count => count + 1);
}}
>
<ImageBackground
source={{
uri: 'https://cdn-icons-png.flaticon.com/512/6685/6685820.png',
}}
style={styles.icon}
>
<Text style={styles.likesCount}>{likeCount}</Text>
</ImageBackground>
</AnimatedButton>
</View>
</View>
);
};
export default App;
Prop | Description | Type | Default Value | Required |
---|---|---|---|---|
onPress | button onPress callback | Function | () => {} | false |
duration | animation duration | Number | 500 | false |
style | button container style | ViewStyle | {} | false |
disabled | enable or disable button. If disabled, onPress callback won't be executed | Boolean | false | false |
disabledStyle | extra styling when the button is disabled. For eg, decreased opacity, different color etc. | ViewStyle | {} | false |
direction | flying direction | 'up' or 'down' | 'up' | false |
children | children component | React.ReactNode | null | false |
renderFlyingContainer | function to render the flying container. If not given, will be replaced by children element | Function | () => null | false |
enableScaleAnimation | enable or disable button scale animation | Boolean | true | false |
position | flying container position based on the button element | 'left' or 'center' or 'right' | 'center' | false |
animationEnabled | enable or disable button animation | Boolean | true | false |
Build: 🏠 2.1.0
- @nithinpp69/react-native-animated-button
FAQs
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Product
Socket's Rust support is moving to Beta: all users can scan Cargo projects and generate SBOMs, including Cargo.toml-only crates, with Rust-aware supply chain checks.
Product
Socket Fix 2.0 brings targeted CVE remediation, smarter upgrade planning, and broader ecosystem support to help developers get to zero alerts.
Security News
Socket CEO Feross Aboukhadijeh joins Risky Business Weekly to unpack recent npm phishing attacks, their limited impact, and the risks if attackers get smarter.