react-native-animated-splash-screen
Version:
Animated splash screen component for React Native project.
227 lines (183 loc) • 9.09 kB
Markdown
<h1 align="center">
React Native Animated Splash Screen
</h1>
<div align="center">
Animated splash screen for Android and iOS. It is based on [Implementing Twitter’s App Loading Animation in React Native](https://facebook.github.io/react-native/blog/2018/01/18/implementing-twitters-app-loading-animation-in-react-native) topic from RN. This use an Image instead of MaskedView to work on both platforms.
[]()
[](https://www.npmjs.com/package/react-native-animated-splash-screen)
[](https://www.npmjs.com/package/react-native-animated-splash-screen)

[](https://github.com/fabio-alss-freitas/react-native-animated-splash-screen/pulls)
[](https://expo.io/)


</div>
<p align="center" >
<kbd>
<img src="https://i.postimg.cc/wMqmK0Wz/ezgif-3-d649b8902f22.gif" title="Demo" float="left">
</kbd>
<kbd>
<img src="https://i.postimg.cc/8C4wzxZ6/ezgif-3-938850179141.gif" title="Demo" float="left">
</kbd>
<kbd>
<img src="https://i.postimg.cc/5yTkKY3w/ezgif-3-2b23776764cf.gif" title="Demo" float="left">
</kbd>
<br>
<em>SplashAnimated example app.</em>
</p>
- [x] Custom background color.
- [x] Custom background image.
- [x] Custom logo.
- [x] Custom logo size.
- [x] It works both: Expo and Pure React Native. (Thanks to [WrathChaos](https://github.com/WrathChaos)!)
`yarn add react-native-animated-splash-screen`
or
`npm install --save react-native-animated-splash-screen`
```javascript
import AnimatedSplash from "react-native-animated-splash-screen";
render() {
return (
<AnimatedSplash
translucent={true}
isLoaded={this.state.isLoaded}
logoImage={require("./assets/logo.png")}
backgroundColor={"#262626"}
logoHeight={150}
logoWidth={150}
>
<App />
</AnimatedSplash>
);
}
```
| Name | Description | Type | Required | Default Value |
| :--------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------- | :------: | :---------------------------------------------------------: |
| isLoaded | Condition to show children component and finish the animation. | Boolean | ✓ | false |
| backgroundColor | Splash screen background color. | String | | ! | Boolean | | false |
| customComponent | Add a logo component instead of a logo image. | React Component | | `null` |
```javascript
const AppNavigator = createStackNavigator(
{
home: {
screen: HomeScreen,
navigationOptions: {
header: null,
},
},
dashboard: {
screen: DashboardScreen,
navigationOptions: {
title: "Dashboard",
},
},
},
{
initialRouteName: "home",
}
)
const Container = createAppContainer(AppNavigator)
class App extends React.Component {
state = {
isLoaded: false,
}
async componentDidMount() {
await loadAsync()
this.setState({ isLoaded: true })
}
render() {
return (
<AnimatedSplash
translucent={true}
isLoaded={this.state.isLoaded}
logoImage={require("./assets/logo.png")}
backgroundColor={"#262626"}
logoHeight={150}
logoWidth={150}
>
<Container />
</AnimatedSplash>
)
}
}
export default App
```
```javascript
const AppNavigator = createSwitchNavigator(
{
home: {
screen: props => (
<HomeScreen {...props} setAppLoaded={props.screenProps.setAppLoaded} />
),
},
dashboard: { screen: DashboardScreen },
},
{
initialRouteName: "home",
}
)
const Container = createAppContainer(AppNavigator)
class App extends React.Component {
state = {
isLoaded: false,
}
setAppLoaded = () => {
this.setState({ isLoaded: true })
}
render() {
return (
<AnimatedSplash
translucent={true}
isLoaded={this.state.isLoaded}
logoImage={require("./assets/logo.png")}
backgroundColor={"#262626"}
logoHeight={150}
logoWidth={150}
>
<Container screenProps={{ setAppLoaded: this.setAppLoaded }} />
</AnimatedSplash>
)
}
}
export default App
```
```javascript
class HomeScreen extends React.Component {
...
async componentDidMount() {
await loadAsync();
this.props.setAppLoaded();
}
...
}
export default HomeScreen
```
<kbd>
<img src="https://i.postimg.cc/8C4wzxZ6/ezgif-3-938850179141.gif" title="Demo" float="left">
<br>
<em>translucent={true}</em>
</kbd>
<kbd>
<img src="https://i.postimg.cc/J4Bs7Jp3/ezgif-3-24968f8730b0.gif" title="Demo" float="left">
<br>
<em>translucent={false}</em>
</kbd>
[](https://github.com/fabio-alss-freitas)
MIT