package com.example.android.xyztouristattractions.ui;
import android.animation.Animator;
import android.animation.ObjectAnimator;
import android.animation.PropertyValuesHolder;
import android.annotation.TargetApi;
import android.content.Context;
import android.os.Build;
import android.transition.TransitionValues;
import android.transition.Visibility;
import android.util.AttributeSet;
import android.view.View;
import android.view.ViewGroup;
/**
* A simple scale transition class to allow an element to scale in or out.
* This is used by the floating action button on the attraction detail screen
* when it appears and disappears during the Activity transitions.
*/
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public class ScaleTransition extends Visibility {
public ScaleTransition(Context context, AttributeSet attrs) {
super(context, attrs);
}
public Animator createAnimation(View view, float startScale, float endScale) {
view.setScaleX(startScale);
view.setScaleY(startScale);
PropertyValuesHolder holderX = PropertyValuesHolder.ofFloat("scaleX", startScale, endScale);
PropertyValuesHolder holderY = PropertyValuesHolder.ofFloat("scaleY", startScale, endScale);
return ObjectAnimator.ofPropertyValuesHolder(view, holderX, holderY);
}
@Override
public Animator onAppear(ViewGroup sceneRoot, View view, TransitionValues startValues,
TransitionValues endValues) {
return createAnimation(view, 0, 1);
}
@Override
public Animator onDisappear(ViewGroup sceneRoot, View view, TransitionValues startValues,
TransitionValues endValues) {
return createAnimation(view, 1, 0);
}
}