/* * Copyright (C) 2015 UFreedom * * 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. */ package com.ufreedom.floatingview.effect; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.animation.ObjectAnimator; import android.animation.ValueAnimator; import com.ufreedom.floatingview.transition.YumFloating; import com.ufreedom.floatingview.transition.FloatingTransition; import com.ufreedom.floatingview.spring.SimpleReboundListener; import com.ufreedom.floatingview.spring.SpringHelper; /** * Author UFreedom * Date : 2016 十月 19 */ public class TranslateFloatingTransition implements FloatingTransition { private float mTranslateY; private long mDuration; public TranslateFloatingTransition() { mTranslateY = -200f; mDuration = 1500; } public TranslateFloatingTransition(float translateY, long duration) { this.mTranslateY = translateY; this.mDuration = duration; } @Override public void applyFloating(final YumFloating yumFloating) { ValueAnimator translateAnimator = ObjectAnimator.ofFloat(0, mTranslateY); translateAnimator.setDuration(mDuration); translateAnimator.setStartDelay(50); translateAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator valueAnimator) { yumFloating.setTranslationY((Float) valueAnimator.getAnimatedValue()); } }); translateAnimator.addListener(new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animation) { super.onAnimationEnd(animation); yumFloating.setTranslationY(0); yumFloating.setAlpha(0f); } }); ValueAnimator alphaAnimator = ObjectAnimator.ofFloat(1.0f, 0.0f); alphaAnimator.setDuration(mDuration); alphaAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator valueAnimator) { yumFloating.setAlpha((Float) valueAnimator.getAnimatedValue()); } }); SpringHelper.createWithBouncinessAndSpeed(0.0f, 1.0f,10, 15) .reboundListener(new SimpleReboundListener(){ @Override public void onReboundUpdate(double currentValue) { yumFloating.setScaleX((float) currentValue); yumFloating.setScaleY((float) currentValue); } }).start(yumFloating); alphaAnimator.start(); translateAnimator.start(); } }