React Native Spruce - iOS & Android
Spruce is a lightweight animation library that helps choreograph the animations on the screen. With so many different animation libraries out there, developers need to make sure that each view is animating at the appropriate time. Spruce can help designers request complex multi-view animations and not have the developers cringe at the prototype.
It provides a React Native Bridge around native spruce library. Here is a quick example of how you can Spruce up your screens!
Before we dive into on how to use this library. We would like to thank all the contributor of willowtreeapps/spruce-android & willowtreeapps/spruce-ios for providing such a awesome nice, cool library
Note: Currently on iOS it is not supported due to unavailable of Spruce Objective-C wrappers, please refer issue: 101
Getting started
$ npm install react-native-spruce --save
$ react-native link react-native-spruce
-
Android
- Please copy below snippet in your app
build.gradle
file:
- Please copy below snippet in your app
buildscript {
repositories {
jcenter()
google()
...
}
}
allprojects {
repositories {
mavenLocal()
jcenter()
google()
...
}
}
Note: Android SDK 27 > is supported
Usage
; // TODO: What to do with the module? { let sortWith = 100; let animateWith = DefaultAnimations <Spruce sortWith=sortWith animateWith=animateWith animator= propertyName: "translationX" values: 5000 0 duration: 800 > <View /> </Spruce>}
Using a SortFunction
Luckily, RNSpruce comes with 8 SortFunction
implementations with a wide open possibility to make more! Use the SortFunction
to change the order in which views animate. Consider the following example:
let sort = /*interObjectDelay=*/100L /*reversed=*/false LinearSortDirectionTOP_TO_BOTTOM;
To make sure that developers can use RNSpruce out of the box, we included about 8 stock SortFunction
implementations. These are some of the main functions we use at WillowTree and are so excited to see what others come up with!
DefaultSort
let sort = /*interObjectDelay=*/100L;
LinearSort
let sort = /*interObjectDelay=*/100L /*reversed=*/false LinearSortDirectionTOP_TO_BOTTOM;
CorneredSort
let sort = /*interObjectDelay=*/100L /*reversed=*/false CorneredSortCornerTOP_LEFT;
RadialSort
let sort = /*interObjectDelay=*/100L /*reversed=*/false RadialSortPositionTOP_LEFT;
RandomSort
let sort = /*interObjectDelay=*/100L;
InlineSort
let sort = /*interObjectDelay=*/100L /*reversed=*/false LinearSortDirectionTOP_TO_BOTTOM;
ContinousSort
let sort = /*interObjectDelay=*/100L /*reversed=*/false ContinousSortPositionTOP_LEFT;
Stock Animators
To make everybody's lives easier, the stock animators perform basic View animations that a lot of apps use today. Mix and match these animators to get the core motion you are looking for.
DefaultAnimations.growAnimator(duration:number)
DefaultAnimations.shrinkAnimator(duration:number)
DefaultAnimations.fadeAwayAnimator(duration:number)
DefaultAnimations.fadeInAnimator(duration:number)
DefaultAnimations.spinAnimator(duration:number)
Experiment which ones work for you! If you think of anymore feel free to add them to the library yourself!
Contributions
Any type of contribution will be very much appreciated
License
Copyright @ Pranav Raj Singh Chauhan
RNSpruce is provided under the Apache License.