package com.bumptech.glide.request.transition; import com.bumptech.glide.load.DataSource; /** * A {@link TransitionFactory} that produces ViewPropertyAnimations. * * @param <R> The type of the resource that will be transitioned into a view. */ public class ViewPropertyAnimationFactory<R> implements TransitionFactory<R> { private final ViewPropertyTransition.Animator animator; private ViewPropertyTransition<R> animation; public ViewPropertyAnimationFactory(ViewPropertyTransition.Animator animator) { this.animator = animator; } /** * Returns a new {@link Transition} for the given arguments. If isMemoryCache is {@code true} or * isFirstImage is {@code false}, returns a {@link NoTransition} and otherwise returns a new * {@link ViewPropertyTransition} for the {@link ViewPropertyTransition.Animator} provided in the * constructor. */ @Override public Transition<R> build(DataSource dataSource, boolean isFirstResource) { if (dataSource == DataSource.MEMORY_CACHE || !isFirstResource) { return NoTransition.get(); } if (animation == null) { animation = new ViewPropertyTransition<>(animator); } return animation; } }