All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.bumptech.glide.request.transition.DrawableCrossFadeFactory Maven / Gradle / Ivy

Go to download

A fast and efficient image loading library for Android focused on smooth scrolling.

There is a newer version: 5.0.0-rc01
Show newest version
package com.bumptech.glide.request.transition;

import android.graphics.drawable.Drawable;
import com.bumptech.glide.load.DataSource;

/**
 * A factory class that produces a new {@link Transition} that varies depending on whether or not
 * the drawable was loaded from the memory cache and whether or not the drawable is the first image
 * to be put on the target.
 *
 * 

Resources are usually loaded from the memory cache just before the user can see the view, for * example when the user changes screens or scrolls back and forth in a list. In those cases the * user typically does not expect to see a transition. As a result, when the resource is loaded from * the memory cache this factory produces an {@link NoTransition}. */ // Public API. @SuppressWarnings("WeakerAccess") public class DrawableCrossFadeFactory implements TransitionFactory { private final int duration; private final boolean isCrossFadeEnabled; private DrawableCrossFadeTransition resourceTransition; protected DrawableCrossFadeFactory(int duration, boolean isCrossFadeEnabled) { this.duration = duration; this.isCrossFadeEnabled = isCrossFadeEnabled; } @Override public Transition build(DataSource dataSource, boolean isFirstResource) { return dataSource == DataSource.MEMORY_CACHE ? NoTransition.get() : getResourceTransition(); } private Transition getResourceTransition() { if (resourceTransition == null) { resourceTransition = new DrawableCrossFadeTransition(duration, isCrossFadeEnabled); } return resourceTransition; } /** A Builder for {@link DrawableCrossFadeFactory}. */ @SuppressWarnings("unused") public static class Builder { private static final int DEFAULT_DURATION_MS = 300; private final int durationMillis; private boolean isCrossFadeEnabled; public Builder() { this(DEFAULT_DURATION_MS); } /** * @param durationMillis The duration of the cross fade animation in milliseconds. */ public Builder(int durationMillis) { this.durationMillis = durationMillis; } /** * Enables or disables animating the alpha of the {@link Drawable} the cross fade will animate * from. * *

Defaults to {@code false}. * * @param isCrossFadeEnabled If {@code true} the previous {@link Drawable}'s alpha will be * animated from 100 to 0 while the new {@link Drawable}'s alpha is animated from 0 to 100. * Otherwise the previous {@link Drawable}'s alpha will remain at 100 throughout the * animation. See {@link * android.graphics.drawable.TransitionDrawable#setCrossFadeEnabled(boolean)} */ public Builder setCrossFadeEnabled(boolean isCrossFadeEnabled) { this.isCrossFadeEnabled = isCrossFadeEnabled; return this; } public DrawableCrossFadeFactory build() { return new DrawableCrossFadeFactory(durationMillis, isCrossFadeEnabled); } } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy