Flubber


Source link: https://github.com/Appolica/Flubber

Flubber

Flubber is an elegant solution for making animations in Android. The library is inspired by the Spring library for iOS. It supports all of the animations, curves and properties that are present in Spring. The library provides an interpolator called Spring which is similar to the iOS CASpringAnimation.

The library is developed and maintained by Appolica.

Download

Gradle

compile 'com.appolica:flubber:$LATEST_LIB_VERSION'

Maven

<dependency>
<groupId>com.appolica</groupId>
<artifactId>flubber</artifactId>
<version>$LATEST_LIB_VERSION</version>
<type>pom</type> </dependency>

Example

  1. Add the library to your build file. If you're using gradle it would look like this:
dependencies {
  compile 'com.appolica:flubber:$LATEST_LIB_VERSION' 
}
  1. Add a view which you want to be animated:
 <TextView

android:id="@+id/text"

android:layout_centerInParent="true"

android:text="Hello World!"

android:gravity="center"/> 
  1. Get the view
View view = findViewById(R.id.text);
  1. Apply the flubber animation where you want it to happen(in this example, when the view is clicked):
view.setOnClickListener(new View.OnClickListener() {

  @Override
  public void onClick(View v) {
  Flubber.with()
.animation(Flubber.AnimationPreset.SLIDE_UP) // Slide up animation
.repeatCount(1)

// Repeat once
.duration(1000)

// Last for 1000 milliseconds(1 second)
.createFor(view)

  // Apply it to the view
.start();

// Start it now
  
}
 
}
);

API

class Flubber

This is the main class you will use to create your animations.

public static AnimationBody.Builder with()

Used to get a new AnimationBody.Builder instance. With it you can create an AnimationBody which holds all the data for an animation. Example:

Flubber.with()
  .animation(Flubber.AnimationPreset.MORPH)
  .interpolator(Flubber.Curve.BZR_EASE_IN)
  .duration(100)
  .autoStart(true)
  .createFor(viewToBeAnimated);

This will create an animation from the preset animation MORPH with an interpolator from the preset interpolator BZR_EASE_IN. It will have a duration of 100 milliseconds and it will start automatically. The view which will be animated is viewToBeAnimated. More about the properties of the AnimationBody.

enum AnimationPreset

An enum containing all of the preset animations. Available options are:

  • SLIDE_LEFT
  • SLIDE_RIGHT
  • SLIDE_DOWN
  • SLIDE_UP
  • SQUEEZE_LEFT
  • SQUEEZE_RIGHT
  • SQUEEZE_DOWN
  • SQUEEZE_UP
  • FADE_IN
  • FADE_OUT
  • FADE_OUT_IN
  • FADE_IN_LEFT
  • FADE_IN_RIGHT
  • FADE_IN_DOWN
  • FADE_IN_UP
  • ZOOM_IN
  • ZOOM_OUT
  • FALL
  • SHAKE
  • POP
  • FLIP_X
  • FLIP_Y
  • MORPH
  • SQUEEZE
  • FLASH
  • WOBBLE
  • SWING
  • ALPHA
  • ROTATION
  • TRANSLATION_X
  • TRANSLATION_Y
  • SCALE_X
  • SCALE_Y

enum Curve

An enum containing all of the preset curves. Available options are:

  • BZR_EASE_IN
  • BZR_EASE_OUT
  • BZR_EASE_IN_OUT
  • BZR_LINEAR
  • BZR_SPRING
  • BZR_EASE_IN_SINE
  • BZR_EASE_OUT_SINE
  • BZR_EASE_IN_OUT_SINE
  • BZR_EASE_IN_QUAD
  • BZR_EASE_OUT_QUAD
  • BZR_EASE_IN_OUT_QUAD
  • BZR_EASE_IN_CUBIC
  • BZR_EASE_OUT_CUBIC
  • BZR_EASE_IN_OUT_CUBIC
  • BZR_EASE_IN_QUART
  • BZR_EASE_OUT_QUART
  • BZR_EASE_IN_OUT_QUART
  • BZR_EASE_IN_QUINT
  • BZR_EASE_OUT_QUINT
  • BZR_EASE_IN_OUT_QUINT
  • BZR_EASE_IN_EXPO
  • BZR_EASE_OUT_EXPO
  • BZR_EASE_IN_OUT_EXPO
  • BZR_EASE_IN_CIRC
  • BZR_EASE_OUT_CIRC
  • BZR_EASE_IN_OUT_CIRC
  • BZR_EASE_IN_BACK
  • BZR_EASE_OUT_BACK
  • BZR_EASE_IN_OUT_BACK
  • SPRING
  • LINEAR

class AnimationBody

This class contains all of the properties of a given animation. All of them are accessible from the AnimationProvider.

  • autoStart - Determines if the animation will start before returning it from createFor().
  • force - The force of the animation. Used by most of the presets to determine how much to express the animation (rotate the view more, wobble harder, etc...).
  • damping - Used only by the spring interpolator to determine the stiffness of the spring.
  • velocity - Used only be the spring interpolator to determine the initial velocity of the spring.
  • startX/Y - Used only by the translation animation presets to determine where the translation starts.
  • endX/Y - Used only by the translation animation presets to determine where the translation ends.
  • startScaleX/Y - Used only by the scaling animation presets to determine the initial scale.
  • endScaleX/Y - Used only by the scaling animation presets to determine the finishing scale.
  • repeatCount - Used by the BaseProvider class to set how many times the animation is repeated.
  • repeatMode - Used by the BaseProvider class to set how the animation is repeated(restart or reverse).
  • delay - Sets the delay of the animation.
  • duration - Sets the duration of the animation.
  • animation - Sets the AnimationProvider for the animation.
  • iterpolatorProvider - Sets the InterpolatorProvider for the animation.
  • animatorListener - Sets an animator listener for the animation

public Animator createFor(View view)

Uses all of the properties to create an animation for the given view. If the autoStart property is enabled the animation will be started from this method otherwise the animation must be started after it is returned.

interface AnimationProvider

public Animator createAnimationFor(final AnimationBody animationBody, View view)

Must create an Animator instance for the given view from the animationBody. If you want you can use this interface to create new animations but it is recomended to use the BaseProvider class because it implements animation repetition and applies the interpolator. Example:

 public Animator createAnimationFor(AnimationBody animationBody, View view) {

 final ObjectAnimator alphaAnimation = ObjectAnimator.ofFloat(view, View.ALPHA, 0f, 1f);

 return alphaAnimation;
  
}
 

abstract class BaseProvider

public abstract Animator getAnimationFor(AnimationBody animationBody, View view)

Should create the animation for the given view from the animationBody the same as createAnimationFor() but it is not necessary to set the animation's repeating and interpolation info because it is handled by the BaseProvider class.

interface InterpolatorProvider

public Interpolator createInterpolatorFor(final AnimationBody animationBody)

Should provide an anumation interpolator based on the given animationBody. Example:

public Interpolator createInterpolatorFor(AnimationBody animationBody) {

  final float force = animationBody.getForce();

  return PathInterpolatorCompat.create(0.5f, 1.1f + force / 3, 1f, 1f);
 
}

class SimpleAnimatorListener

This is a helper class you can use if you don't want to override all of the AnimatorListener methods. It provides four methods with callbacks for the for events in an AnimatorListener.

static Animator.AnimatorListener forStart(final OnAnimationStartListener startListener);
static Animator.AnimatorListener forEnd(final OnAnimationEndListener endListener);
static Animator.AnimatorListener forCancel(final OnAnimationCancelListener cancelListener);
static Animator.AnimatorListener forRepeat(final OnAnimationRepeatListener repeatListener);

License

The library is under the Apache license. Check the LICENSE file for more info.

Resources

A perfect pixel button.

CustomFontLib is an Android Library to help adding custom fonts to Android Views.

CircleCheckBox is an Android custom view, that simply animates the check.

ExpandingPager is a card peek/pop controller.

Actor is a platform for instant messaging.

Android ViewPager with bottom dots.

Topics


2D Engines   3D Engines   9-Patch   Action Bars   Activities   ADB   Advertisements   Analytics   Animations   ANR   AOP   API   APK   APT   Architecture   Audio   Autocomplete   Background Processing   Backward Compatibility   Badges   Bar Codes   Benchmarking   Bitmaps   Bluetooth   Blur Effects   Bread Crumbs   BRMS   Browser Extensions   Build Systems   Bundles   Buttons   Caching   Camera   Canvas   Cards   Carousels   Changelog   Checkboxes   Cloud Storages   Color Analysis   Color Pickers   Colors   Comet/Push   Compass Sensors   Conferences   Content Providers   Continuous Integration   Crash Reports   Credit Cards   Credits   CSV   Curl/Flip   Data Binding   Data Generators   Data Structures   Database   Database Browsers   Date &   Debugging   Decompilers   Deep Links   Dependency Injections   Design   Design Patterns   Dex   Dialogs   Distributed Computing   Distribution Platforms   Download Managers   Drawables   Emoji   Emulators   EPUB   Equalizers &   Event Buses   Exception Handling   Face Recognition   Feedback &   File System   File/Directory   Fingerprint   Floating Action   Fonts   Forms   Fragments   FRP   FSM   Functional Programming   Gamepads   Games   Geocaching   Gestures   GIF   Glow Pad   Gradle Plugins   Graphics   Grid Views   Highlighting   HTML   HTTP Mocking   Icons   IDE   IDE Plugins   Image Croppers   Image Loaders   Image Pickers   Image Processing   Image Views   Instrumentation   Intents   Job Schedulers   JSON   Keyboard   Kotlin   Layouts   Library Demos   List View   List Views   Localization   Location   Lock Patterns   Logcat   Logging   Mails   Maps   Markdown   Mathematics   Maven Plugins   MBaaS   Media   Menus   Messaging   MIME   Mobile Web   Native Image   Navigation   NDK   Networking   NFC   NoSQL   Number Pickers   OAuth   Object Mocking   OCR Engines   OpenGL   ORM   Other Pickers   Parallax List   Parcelables   Particle Systems   Password Inputs   PDF   Permissions   Physics Engines   Platforms   Plugin Frameworks   Preferences   Progress Indicators   ProGuard   Properties   Protocol Buffer   Pull To   Purchases   Push/Pull   QR Codes   Quick Return   Radio Buttons   Range Bars   Ratings   Recycler Views   Resources   REST   Ripple Effects   RSS   Screenshots   Scripting   Scroll Views   SDK   Search Inputs   Security   Sensors   Services   Showcase Views   Signatures   Sliding Panels   Snackbars   SOAP   Social Networks   Spannable   Spinners   Splash Screens   SSH   Static Analysis   Status Bars   Styling   SVG   System   Tags   Task Managers   TDD &   Template Engines   Testing   Testing Tools   Text Formatting   Text Views   Text Watchers   Text-to   Toasts   Toolkits For   Tools   Tooltips   Trainings   TV   Twitter   Updaters   USB   User Stories   Utils   Validation   Video   View Adapters   View Pagers   Views   Watch Face   Wearable Data   Wearables   Weather   Web Tools   Web Views   WebRTC   WebSockets   Wheel Widgets   Wi-Fi   Widgets   Windows   Wizards   XML   XMPP   YAML   ZIP Codes