Android Open Source - vocabulary-list Floating Action Button Animator Impl






From Project

Back to project page vocabulary-list.

License

The source code is released under:

Apache License

If you think the Android project vocabulary-list listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.rulych.vocabularylist.util.impl;
//from w  w w .  j a va2s  .co m
import com.rulych.vocabularylist.R;
import com.rulych.vocabularylist.util.FloatingActionButtonAnimator;

import android.animation.AnimatorSet;
import android.animation.ObjectAnimator;
import android.content.Context;
import android.view.MotionEvent;
import android.view.View;
import android.view.animation.AccelerateInterpolator;

public class FloatingActionButtonAnimatorImpl implements FloatingActionButtonAnimator {

    private static final float SCALE_BASE = 1f;
    private static final float SCALE_TOUCHING = 1.10f;
    private static final float SCALE_FINAL = 1.25f;

    private Context mContext;
    private View mView;

    private long mDurationUp;
    private long mDurationDown;

    private float mElevationUp;
    private float mElevationDown;

    public FloatingActionButtonAnimatorImpl(Context context, View button) {
        mContext = context;
        mView = button;
    }

    public void setup() {
        initialize();
        mView.setOnTouchListener(new TouchListener());
    }

    private void initialize() {
        long duration = mContext.getResources().getInteger(android.R.integer.config_shortAnimTime);

        float liftingDurationFraction = 2 * SCALE_FINAL / SCALE_TOUCHING;
        mDurationUp = Float.valueOf(duration / liftingDurationFraction).longValue();
        mDurationDown = duration - mDurationUp;

        mElevationUp = mContext.getResources().getDimension(R.dimen.fab_pressed_elevation);
        mElevationDown = mContext.getResources().getDimension(R.dimen.fab_elevation);
    }

    private void animateUp() {
        mView.animate()
                .scaleX(SCALE_TOUCHING)
                .scaleY(SCALE_TOUCHING)
                .setDuration(mDurationUp)
                .z(mElevationUp)
                .start();
    }

    private void animateDown() {
        AnimatorSet animatorSet = new AnimatorSet();

        AnimatorSet animatorSetUp = new AnimatorSet();
        animatorSetUp.play(ObjectAnimator.ofFloat(mView, "scaleX", SCALE_FINAL))
                .with(ObjectAnimator.ofFloat(mView, "scaleY", SCALE_FINAL));

        AnimatorSet animatorSetDown = new AnimatorSet();
        animatorSetDown.play(ObjectAnimator.ofFloat(mView, "scaleX", SCALE_BASE))
                .with(ObjectAnimator.ofFloat(mView, "scaleY", SCALE_BASE))
                .with(ObjectAnimator.ofFloat(mView, "z", mElevationDown));

        animatorSet.play(animatorSetUp)
                .before(animatorSetDown);

        animatorSet.setDuration(mDurationDown);
        animatorSet.setInterpolator(new AccelerateInterpolator());
        animatorSet.start();
    }

    private class TouchListener implements View.OnTouchListener {
        @Override public boolean onTouch(View view, MotionEvent motionEvent) {
            switch (motionEvent.getAction()) {
                case MotionEvent.ACTION_DOWN:
                    animateUp();
                    break;
                case MotionEvent.ACTION_UP:
                    animateDown();
                    break;
            }
            return false;
        }
    }

}




Java Source Code List

com.rulych.vocabularylist.AppModule.java
com.rulych.vocabularylist.VocabularyListApplication.java
com.rulych.vocabularylist.activities.VocabularyListActivity.java
com.rulych.vocabularylist.adapters.CardAdapter.java
com.rulych.vocabularylist.fragments.BaseCardFragment.java
com.rulych.vocabularylist.fragments.CardFragment.java
com.rulych.vocabularylist.fragments.DriveApiFragment.java
com.rulych.vocabularylist.fragments.NewCardFragment.java
com.rulych.vocabularylist.fragments.VocabularyListFragment.java
com.rulych.vocabularylist.model.Card.java
com.rulych.vocabularylist.model.comparation.CardComparator.java
com.rulych.vocabularylist.model.persistence.CardDAO.java
com.rulych.vocabularylist.model.persistence.PersistenceModule.java
com.rulych.vocabularylist.model.persistence.impl.CardDAOImpl.java
com.rulych.vocabularylist.model.persistence.impl.CardListReaderImpl.java
com.rulych.vocabularylist.model.persistence.impl.CardListReader.java
com.rulych.vocabularylist.model.persistence.impl.CardListWriterImpl.java
com.rulych.vocabularylist.model.persistence.impl.CardListWriter.java
com.rulych.vocabularylist.model.persistence.impl.FileGetterImpl.java
com.rulych.vocabularylist.model.persistence.impl.FileGetter.java
com.rulych.vocabularylist.model.persistence.impl.exception.CardNotFoundException.java
com.rulych.vocabularylist.model.persistence.impl.exception.CouldNotGetFileException.java
com.rulych.vocabularylist.model.persistence.impl.exception.CouldNotReadFileException.java
com.rulych.vocabularylist.model.persistence.impl.exception.CouldNotWriteFileException.java
com.rulych.vocabularylist.util.BaseRuntimeException.java
com.rulych.vocabularylist.util.FloatingActionButtonAnimator.java
com.rulych.vocabularylist.util.ThreadLoggingTree.java
com.rulych.vocabularylist.util.UtilModule.java
com.rulych.vocabularylist.util.impl.FloatingActionButtonAnimatorImpl.java