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); } }