Giter VIP home page Giter VIP logo

react-native-spruce's Introduction

PRs Welcome

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!

Example

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

Usage

import {
  Spruce,
  CorneredSort,
  DefaultAnimations
} from "react-native-spruce";


// TODO: What to do with the module?

render () {
  let sortWith = new CorneredSort(100);
  let animateWith = DefaultAnimations.shrinkAnimator(1000)

  <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 = new LinearSort(/*interObjectDelay=*/100L, /*reversed=*/false, LinearSort.Direction.TOP_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 = new DefaultSort(/*interObjectDelay=*/100L);
  • LinearSort
let sort = new LinearSort(/*interObjectDelay=*/100L, /*reversed=*/false, LinearSort.Direction.TOP_TO_BOTTOM);
  • CorneredSort
let sort = new CorneredSort(/*interObjectDelay=*/100L, /*reversed=*/false, CorneredSort.Corner.TOP_LEFT);
  • RadialSort
let sort = new RadialSort(/*interObjectDelay=*/100L, /*reversed=*/false, RadialSort.Position.TOP_LEFT);
  • RandomSort
let sort = new RandomSort(/*interObjectDelay=*/100L);
  • InlineSort
let sort = new InlineSort(/*interObjectDelay=*/100L, /*reversed=*/false, LinearSort.Direction.TOP_TO_BOTTOM);
  • ContinousSort
let sort = new ContinousSort(/*interObjectDelay=*/100L, /*reversed=*/false, ContinousSort.Position.TOP_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 @2017 Pranav Raj Singh Chauhan

The React Native Spruce is provided under the MIT License.

Other Contributions

awesome-react-native-native-modules
react-native-taptargetview & react-native-material-showcase-ios
react-native-bottom-action-sheet
react-native-popover-menu
react-native-tooltips
react-native-shine-button
react-native-iconic
react-native-download-button
react-native-siri-wave-view
react-native-material-shadows
react-native-gradient-blur-view
react-native-about-libraries
vs-essential-plugins
prettier-pack

react-native-spruce's People

Contributors

maggialejandro avatar prscx avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.