blob: 6b42e81f4841d81cb7c8f732f57a3928ddd73580 [file] [log] [blame]
package com.bumptech.glide.request.animation;
import android.view.View;
/**
* A {@link com.bumptech.glide.request.animation.GlideAnimation GlideAnimation} that accepts an interface
* that can apply an animation like a {@link android.view.ViewPropertyAnimator}
* or a {@link android.animation.ObjectAnimator} to an {@link View}.
*
* @param <R> The type of the resource displayed in the view that is animated
*/
public class ViewPropertyAnimation<R> implements GlideAnimation<R> {
private final Animator animator;
/**
* Constructor for a view property animation that takes an
* {@link com.bumptech.glide.request.animation.ViewPropertyAnimation.Animator} interface that can apply an animation
* to a view.
*
* @param animator The animator to use.
*/
public ViewPropertyAnimation(Animator animator) {
this.animator = animator;
}
/**
* Always applies the {@link com.bumptech.glide.request.animation.ViewPropertyAnimation.Animator} given in the
* constructor to the given view and returns {@code false} because the animator cannot set the new resource on
* the view.
*
* @param current {@inheritDoc}
* @param adapter {@inheritDoc}
* @return {@inheritDoc}
*/
@Override
public boolean animate(R current, ViewAdapter adapter) {
final View view = adapter.getView();
if (view != null) {
animator.animate(adapter.getView());
}
return false;
}
/**
* An interface that allows an animation to be applied on or started from an {@link android.view.View}.
*/
public interface Animator {
/**
* Starts an animation on the given {@link android.view.View}.
*
* @param view The view to animate.
*/
void animate(View view);
}
}