Home | History | Annotate | Download | only in animation
      1 package com.bumptech.glide.request.animation;
      2 
      3 import android.graphics.drawable.Drawable;
      4 import android.view.View;
      5 
      6 /**
      7  * An interface that allows a transformation to be applied to {@link android.view.View}s in
      8  * {@link com.bumptech.glide.request.target.Target}s in across resource types. Targets that wrap views will be able to
      9  * provide all of the necessary arguments and start the animation. Those that do not will be unable to provide the
     10  * necessary arguments and will therefore be forced to ignore the animation. This interface is a compromise that
     11  * allows view animations in Glide's complex world of arbitrary resource types and arbitrary target types.
     12  *
     13  * @param <R> The type of the resource that should be animated to.
     14  */
     15 public interface GlideAnimation<R> {
     16 
     17     /**
     18      * An interface wrapping a view that exposes the necessary methods to run the various types of android animations
     19      * ({@link com.bumptech.glide.request.animation.ViewAnimation},
     20      * {@link com.bumptech.glide.request.animation.ViewPropertyAnimation} and animated
     21      * {@link android.graphics.drawable.Drawable}s).
     22      */
     23     interface ViewAdapter {
     24         /**
     25          * Returns the wrapped {@link android.view.View}.
     26          */
     27         View getView();
     28 
     29         /**
     30          * Returns the current drawable being displayed in the view, or null if no such drawable exists (or one cannot
     31          * be retrieved).
     32          */
     33         Drawable getCurrentDrawable();
     34 
     35         /**
     36          * Sets the current drawable (usually an animated drawable) to display in the wrapped view.
     37          *
     38          * @param drawable The drawable to display in the wrapped view.
     39          */
     40         void setDrawable(Drawable drawable);
     41     }
     42 
     43     /**
     44      * Animates from the previous {@link android.graphics.drawable.Drawable} that is currently being displayed in the
     45      * given view, if not null, to the new resource that should be displayed in the view.
     46      *
     47      * @param current The new resource that will be displayed in the view.
     48      * @param adapter The {@link com.bumptech.glide.request.animation.GlideAnimation.ViewAdapter} wrapping a view that
     49      *                can at least return an {@link android.view.View} from
     50      *                {@link com.bumptech.glide.request.animation.GlideAnimation.ViewAdapter#getView()}.
     51      * @return True if int he process of running the animation the new resource was set on the view, false if the caller
     52      * needs to manually set the current resource on the view.
     53      */
     54     boolean animate(R current, ViewAdapter adapter);
     55 }
     56