FPSAnimator is very easy animation library for Android TextureView and SurfaceView.

Overview

FPSAnimator

License API Android Weekly Android Arsenal

A simple but powerful Tween / SpriteSheet / ParabolicMotion / animation library for Android TextureView and SurfaceView.

Features

  • The controls Fps possible to animation.
  • Possible for animation of Tween and SpriteSheet and ParabolicMotion in one of TextureView.
  • Possible to animate with low load on the terminal.
  • 28 types of Easing

Basic Usage

Gradle

    dependencies {
        // jCenter
        compile 'com.daasuu:FPSAnimator:0.2.4.0'
    }

Include the FPSTextureView widget in your layout. Set FPS by attribute. Default FPS is 30.
If you use SurfaceView , use FPSSurfaceVIew.

    <com.daasuu.library.FPSTextureView
        android:id="@+id/animation_texture_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:FPSAnimator_fps="24"
        />

In your onCreate method (or onCreateView for a fragment), bind the widget.

    private FPSTextureView mFPSTextureView;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_easing_sample);
        mFPSTextureView = (FPSTextureView) findViewById(R.id.animation_texture_view);
    }

Create an instance of the DisplayObject, please add it to the FPSTextureView.

    Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher);
    
    DisplayObject bitmapDisplay = new DisplayObject();
    bitmapDisplay
            .with(new BitmapDrawer(bitmap))
            .tween()
            .toX(1600, windowWidth - bitmap.getWidth(), Ease.BACK_IN_OUT)
            .waitTime(1000)
            .alpha(1000, 0f)
            .alpha(1000, 1f)
            .end();
            
    mFPSTextureView
                .addChild(bitmapDisplay)
                .tickStart();

The example above will create a new tween instance that:

  • tweens the target to an x value of rightSide over 1600ms
  • waits 1000 ms
  • tweens the target's alpha from 1 to 0 over 1s
  • tweens the target's alpha from 0 to 1 over 1s

Example

This is the implementation of the sample application.

SpriteSheet

    
    SpriteSheetDrawer spriteSheetDrawer = new SpriteSheetDrawer(
        spriteBitmapB, 
        frameWidth, 
        frameHeight, 
        frameNum)
        .spriteLoop(true);
    
    DisplayObject displayObject = new DisplayObject();
    displayObject
            .with(spriteSheetDrawer)
            .tween()
            .tweenLoop(true)
            .transform(-frameWidth, windowHeight / 2)
            .toX(3000, windowWidth)
            .end();

    mFPSTextureView
                .addChild(displayObject);

SpriteSheet wiki

TweenText

    Paint paint = new Paint();
    paint.setColor(ContextCompat.getColor(this, R.color.colorAccent));
    paint.setTextSize(Util.convertDpToPixel(16, this));

    String tweenTxt = "TweenText";
    float textWidth = paint.measureText(tweenTxt);
    
    TextDrawer textDrawer = new TextDrawer(tweenTxt, paint)
            .rotateRegistration(textWidth / 2, textWidth / 2);

    DisplayObject textDisplay = new DisplayObject();
    textDisplay.with(textDrawer)
            .tween()
            .tweenLoop(true)
            .transform(0, 800)
            .waitTime(300)
            .to(1000, windowWidth - textWidth, 800, 720f, Ease.SINE_OUT)
            .waitTime(300)
            .to(1000, 0, 800, 0f, Ease.SINE_IN)
            .end();

TweenBitmap

```JAVA BitmapDrawer bitmapDrawer = new BitmapDrawer(bitmap) .dpSize(this) .scaleRegistration(bitmap.getWidth() / 2, bitmap.getHeight() / 2);
    DisplayObject bitmapDisplay = new DisplayObject();
    bitmapDisplay.with(bitmapDrawer)
            .tween()
            .tweenLoop(true)
            .transform(300, 400)
            .to(500, 300, 400, 0, 6f, 6f, 0, Ease.SINE_IN_OUT)
            .waitTime(300)
            .transform(300, 400, Util.convertAlphaFloatToInt(1f), 1f, 1f, 0)
            .waitTime(300)
            .end();
[TweenAnimation wiki](https://github.com/MasayukiSuda/FPSAnimator/wiki/Tween-Animation)

#### ParabolicMotion
<img src="art/parabolicDemo.gif" width="50%">

```JAVA
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_easing_sample);
        mFPSTextureView = (FPSTextureView) findViewById(R.id.animation_texture_view);
        
        // ParabolicMotionText
        Paint paint = new Paint();
        paint.setColor(ContextCompat.getColor(context, R.color.colorPrimary));
        paint.setTextSize(Util.convertDpToPixel(20, context));
        
        TextDrawer textDrawer = new TextDrawer("Text", paint);
        
        DisplayObject textDisplay = new DisplayObject();
        textDisplay.with(textDrawer)
                .parabolic()
                .transform(800, 800)
                .initialVelocityY(-40)
                .end();

        mFPSTextureView.addChild(textDisplay);
    }

    private void createParabolicMotionBitmap() {
        final DisplayObject bitmapDisplay = new DisplayObject();

        bitmapDisplay.with(new BitmapDrawer(mBitmap).dpSize(context))
                .parabolic()
                .transform(0, mFPSTextureView.getHeight())
                .reboundBottom(false)
                .accelerationX((float) (15 + Math.random() * 7))
                .initialVelocityY((float) (-65 + Math.random() * 15))
                .bottomHitCallback(new AnimCallBack() {
                    @Override
                    public void call() {
                        mFPSTextureView.removeChild(bitmapDisplay);
                    }
                })
                .end();

        mFPSTextureView.addChild(bitmapDisplay);
    }

    @Override
    protected void onResume() {
        super.onResume();
        mFPSTextureView.tickStart();

        mTimer = new Timer();
        mTimer.schedule(new TimerTask() {
            @Override
            public void run() {
                for (int i = 0; i < 5; i++) {
                    createParabolicMotionBitmap();
                }
            }
        }, 0, 100);
    }

ParabolicMotion wiki

Container

A Container is a nestable display list that allows you to work with compound display elements.
For example you could group arm, leg, torso and head Bitmap instances together into a Person Container, and transform them as a group, while still being able to move the individual parts relative to each other. Children of containers have their transform and alpha properties concatenated with their parent Container.
Containers have some overhead, so you generally shouldn't create a Container to hold a single child.

Easing

Applications using FPSAnimator

Please send a pull request if you would like to be added here.

Icon Application
CChannel

Contributers

License

Copyright 2016 MasayukiSuda

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Comments
  • Getting Error while compiling

    Getting Error while compiling

    After adding repository and dependency, when I perform sync operation it is giving following error. I am using latest android studio. Error:(12, 0) Could not find method compile() for arguments [com.github.MasayukiSuda:FPSAnimator:v0.2.3.0] on object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.

    opened by ghost 0
  • add ability to set drawing priority to DisplayBase.

    add ability to set drawing priority to DisplayBase.

    Add priority field to DisplayBase which is used to sort DisplayBase when drawing. This is provide simple way to manage the z position of DisplayBases.

    opened by m1noon 0
  • Stop drawing if bmp has been recycled or DisplayBase is removed.

    Stop drawing if bmp has been recycled or DisplayBase is removed.

    I fixed 2 points. First fix point is to stop drawing when bitmap has been recycled. Second, stop drawing when DisplayBase is removed from FPSTextureView, SurfaceView or Container.

    opened by m1noon 0
  • Add container

    Add container

    A Container is a nestable display list that allows you to work with compound display elements. For example you could group arm, leg, torso and head Bitmap instances together into a Person Container, and transform them as a group, while still being able to move the individual parts relative to each other. Children of containers have their transform and alpha properties concatenated with their parent Container.

    opened by MasayukiSuda 0
  • Can you tell me how to combine multiple SpriteSheets of the same character?

    Can you tell me how to combine multiple SpriteSheets of the same character?

    On Example this scenario:

    1. walking animation (First SpriteSheet) and than
    2. sit animation (Second SpriteSheet) and than
    3. walking again (First SpriteSheet) and than
    4. jump animation (Third SpriteSheet)

    Thnx for great library!

    opened by simfonija 0
Releases(v0.2.4.0)
Owner
Masayuki Suda
Masayuki Suda
Android Animation Easing Functions. Let's make animation more real!

Android Easing Functions This project is originally from my another project, AndroidViewAnimation, which is an animation collection, to help you make

代码家 2.5k Jan 4, 2023
This library provides easy ways to add onboarding or pager screens with different animation and indicators.

WalkThroughAndroid Make amazing OnBoarding Screens easily for your app with different colorful animations, fonts, styles, and many more. Customize you

MindInventory 33 Sep 9, 2022
ActSwitchAnimTool make the Animation easy to implements, and it compat the version of Android 4.0 or above.

ActSwitchAnimTool As well as we know, Android 5.0 has been support more Animation(just like ViewAnimationUtils~). Maybe some developers can implements

Acropolis 573 Nov 23, 2022
Android ripple animation helper, easy to create Circular Reveal. | Android水波动画帮助类,轻松实现View show/hide/startActivity()特效。(0.4.6)

CircularAnim English | 中文 首先来看一个UI动效图。 效果图是是Dribbble上看到的,原作品在此。 我所实现的效果如下: Watch on YouTube Compile 最新可用版本 So,你可以如下compile该项目,也可以直接把这个类 CircularAnim 拷

ice 2k Nov 19, 2022
User onboarding library with smooth animation of objects and background colors

SlidingTutorial Cleveroad introduces Sliding Tutorial Library for Flutter Hey guys, hope you haven’t started developing a tutorial for your Flutter ap

Cleveroad 127 Dec 31, 2022
FadingToolbar is an animation library which fades out your footer view in a ScrollView/RecyclerView and fades in a toolbar title

FadingToolbar is an animation library which fades out your footer view in a ScrollView/RecyclerView and fades in a toolbar title (analogue of the LargeTitle animation in iOS)

Hanna 9 Nov 3, 2022
[] Android library for using the Honeycomb animation API on all versions of the platform back to 1.0!

DEPRECATED NineOldAndroids is deprecated. No new development will be taking place. Existing versions will (of course) continue to function. New applic

Jake Wharton 4.5k Jan 9, 2023
Android library to control Transition animates. A simple way to create a interactive animation.

TransitionPlayer Android library to control Transition animates. A simple way to create a interactive animation. Demo1 SimpleTransition Code: ....

林法鑫 1.2k Dec 17, 2022
Road Runner is a library for android which allow you to make your own loading animation using a SVG image

Road Runner Road Runner is a library for android which allow you to make your own loading animation using a SVG image Sample video View in Youtube Dem

Adrián Lomas 1.2k Nov 18, 2022
Android library to make notes drop animation for music players

VusikView Min SDK 11 Screnshots How to use If you want use this library, you can download project and import it into your workspace and add the projec

Chetan Kaushik 119 Nov 29, 2022
An simple & awesome animation library written in Kotlin for Android

An simple & awesome animation library written in Kotlin for Android

Romman Sabbir 53 Oct 17, 2022
Android library to control Transition animates. A simple way to create a interactive animation.

TransitionPlayer Android library to control Transition animates. A simple way to create a interactive animation. Demo1 SimpleTransition Code: ....

林法鑫 1.2k Dec 17, 2022
A fluent Android animation library

ViewAnimator A fluent Android animation library ! Usage Animate multiple view from one method ViewAnimator .animate(image) .transla

Florent CHAMPIGNY 2.7k Jan 3, 2023
Android Library to create Lottie animation view dialog easily with a lot of customization

LottieDialog Android Library to create Lottie animation view dialog easily with a lot of customization Why you should use Lottie Dialog You have no li

Amr Hesham 39 Oct 7, 2022
Android Library to create Lottie animation view dialog easily with a lot of customization

Android Library to create Lottie animation view dialog easily with a lot of customization

Amr Hesham 39 Oct 7, 2022
A library support circular imageview with rotation animation

Circular Imageview with Rotate Animation This is a fast and efficient open source custom imageview for Android that allow to easy implement disc anima

Nhien Nguyen 5 Jul 24, 2022
🪐 Jetpack Compose animation library that allows you to implement animations such as shared element transition.

Orbitary ?? Jetpack Compose animation library that allows you to implement animations such as shared element transition. Download Gradle Add the depen

Jaewoong Eum 503 Dec 30, 2022
🪐 Jetpack Compose animation library that allows you to implement animations such as shared element transition.

?? Jetpack Compose animation library that allows you to implement animations such as shared element transition.

Jaewoong Eum 504 Jan 2, 2023
A customised EditText view serving the purpose of taking numeric One Time Password from a user. With stunning animation, and high customizability.

PassCodeText A customised EditText view serving the purpose of taking numeric One Time Password from a user. With stunning animation, and high customi

Swapnil Tiwari 107 Nov 16, 2022