<p dir="auto">Why there's no default crossFade animation for fallback and error drawables? I want to toggle image (null &lt;-&gt; not null) and animate between image and fallback (or error if it occurs). Animation only shows in fallback -&gt; image direction but not the other way around.</p>
<p dir="auto">I'm loading my images like this:</p>
<div class="highlight highlight-source-java notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="private ImageView vPhoto;

private void setPhoto(File photoFile)
{
    Glide.with(this)
         .load(photoFile)
         .signature(new MediaStoreSignature(&quot;&quot;, photoFile != null ? photoFile.lastModified() : 0L, getResources().getConfiguration().orientation))
         .centerCrop()
         .error(R.drawable.ic_broken_image)
         .fallback(R.drawable.ic_photo)
         .into(vPhoto);
}"><pre class="notranslate"><span class="pl-k">private</span> <span class="pl-smi">ImageView</span> <span class="pl-s1">vPhoto</span>;

<span class="pl-k">private</span> <span class="pl-smi">void</span> <span class="pl-s1">setPhoto</span>(<span class="pl-smi">File</span> <span class="pl-s1">photoFile</span>)
{
    <span class="pl-smi">Glide</span>.<span class="pl-en">with</span>(<span class="pl-smi">this</span>)
         .<span class="pl-en">load</span>(<span class="pl-s1">photoFile</span>)
         .<span class="pl-en">signature</span>(<span class="pl-k">new</span> <span class="pl-smi">MediaStoreSignature</span>(<span class="pl-s">""</span>, <span class="pl-s1">photoFile</span> != <span class="pl-c1">null</span> ? <span class="pl-s1">photoFile</span>.<span class="pl-en">lastModified</span>() : <span class="pl-c1">0L</span>, <span class="pl-en">getResources</span>().<span class="pl-en">getConfiguration</span>().<span class="pl-s1">orientation</span>))
         .<span class="pl-en">centerCrop</span>()
         .<span class="pl-en">error</span>(<span class="pl-smi">R</span>.<span class="pl-s1">drawable</span>.<span class="pl-s1">ic_broken_image</span>)
         .<span class="pl-en">fallback</span>(<span class="pl-smi">R</span>.<span class="pl-s1">drawable</span>.<span class="pl-s1">ic_photo</span>)
         .<span class="pl-en">into</span>(<span class="pl-s1">vPhoto</span>);
}</pre></div>
<p dir="auto">It doesn't event work if I explicitly add crossFade() method.</p>
<p dir="auto">I would like to do two functions but hard to found source support on it with Glide.<br>
Since I have a dynamic size list view, I don't know the exactly height of it.<br>
I need to make a background ImageView behind it, and the background is a network image.<br>
****<strong>I have wait all of the listview item generate finished an get the exactly Width and Height.</strong></p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="if( bitmap.height &lt; imageView.height ){
     repeat bitmap
}else if( bitmap.height &gt; imageView.height){
     chop bottom
}"><pre class="notranslate"><code class="notranslate">if( bitmap.height &lt; imageView.height ){
     repeat bitmap
}else if( bitmap.height &gt; imageView.height){
     chop bottom
}
</code></pre></div>
<ol dir="auto">
<li>Image should align top, fill width, chop the bottom.</li>
<li>If there are too many items and the background is not long enough, it should repeat the image<br>
through some method like this:</li>
</ol>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="BitmapDrawable bitmapDrawable = new BitmapDrawable(context.getResources(), bitmap);
            bitmapDrawable.setTileModeXY(Shader.TileMode.CLAMP, Shader.TileMode.REPEAT);
            bitmap = bitmapDrawable.getBitmap();"><pre class="notranslate"><code class="notranslate">BitmapDrawable bitmapDrawable = new BitmapDrawable(context.getResources(), bitmap);
            bitmapDrawable.setTileModeXY(Shader.TileMode.CLAMP, Shader.TileMode.REPEAT);
            bitmap = bitmapDrawable.getBitmap();
</code></pre></div>
<p dir="auto">Thank you.</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="&lt;RelativeLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
    android:id=&quot;@+id/llBottom&quot;
    android:layout_width=&quot;match_parent&quot;
    android:layout_height=&quot;wrap_content&quot;&gt;

    &lt;ImageView
        android:id=&quot;@+id/imgBackground&quot;
        android:layout_width=&quot;match_parent&quot;
        android:layout_height=&quot;match_parent&quot;
        android:layout_alignBottom=&quot;@+id/llPoPit&quot;
        android:layout_alignLeft=&quot;@+id/llPoPit&quot;
        android:layout_alignRight=&quot;@+id/llPoPit&quot;
        android:layout_alignTop=&quot;@+id/llPoPit&quot;
        android:adjustViewBounds=&quot;true&quot; /&gt;

    &lt;LinearLayout
        android:id=&quot;@+id/llItem&quot;
        android:layout_width=&quot;match_parent&quot;
        android:layout_height=&quot;wrap_content&quot;
        android:orientation=&quot;vertical&quot;&gt;

        &lt;android.support.v7.widget.RecyclerView
            android:id=&quot;@+id/lstOnSalesItem&quot;
            android:layout_width=&quot;match_parent&quot;
            android:layout_height=&quot;wrap_content&quot;
            android:background=&quot;@android:color/transparent&quot;
            android:nestedScrollingEnabled=&quot;false&quot;
            android:paddingBottom=&quot;@dimen/margin_small&quot; /&gt;

        &lt;ImageView
            android:id=&quot;@+id/img2&quot;
            android:layout_width=&quot;match_parent&quot;
            android:layout_height=&quot;wrap_content&quot;
            android:adjustViewBounds=&quot;true&quot;
            android:background=&quot;@null&quot;
            android:scaleType=&quot;fitCenter&quot; /&gt;
    &lt;/LinearLayout&gt;
&lt;/RelativeLayout&gt;"><pre class="notranslate"><code class="notranslate">&lt;RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/llBottom"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"&gt;

    &lt;ImageView
        android:id="@+id/imgBackground"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignBottom="@+id/llPoPit"
        android:layout_alignLeft="@+id/llPoPit"
        android:layout_alignRight="@+id/llPoPit"
        android:layout_alignTop="@+id/llPoPit"
        android:adjustViewBounds="true" /&gt;

    &lt;LinearLayout
        android:id="@+id/llItem"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"&gt;

        &lt;android.support.v7.widget.RecyclerView
            android:id="@+id/lstOnSalesItem"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@android:color/transparent"
            android:nestedScrollingEnabled="false"
            android:paddingBottom="@dimen/margin_small" /&gt;

        &lt;ImageView
            android:id="@+id/img2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:adjustViewBounds="true"
            android:background="@null"
            android:scaleType="fitCenter" /&gt;
    &lt;/LinearLayout&gt;
&lt;/RelativeLayout&gt;
</code></pre></div>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="RequestOptions requestOptions = new RequestOptions()
                                .diskCacheStrategy(DiskCacheStrategy.ALL)
                                .dontAnimate();

final int dW = Long.valueOf(Math.round((double)llPoPit.getMeasuredWidth())).intValue();
 final int dH =  Long.valueOf(Math.round((double)llPoPit.getMeasuredHeight())).intValue();
 ChopOrRepeatTransformation transformation = new ChopOrRepeatTransformation(
          act, dW, dH, ChopOrRepeatTransformation.CropType.TOP
); // this is Copy from Chop Transformation
 requestOptions.transform(transformation);

 Glide.with(act).asBitmap().load(bgUrl)
        .apply(requestOptions)
        .into(imgBackground);"><pre class="notranslate"><code class="notranslate">RequestOptions requestOptions = new RequestOptions()
                                .diskCacheStrategy(DiskCacheStrategy.ALL)
                                .dontAnimate();

final int dW = Long.valueOf(Math.round((double)llPoPit.getMeasuredWidth())).intValue();
 final int dH =  Long.valueOf(Math.round((double)llPoPit.getMeasuredHeight())).intValue();
 ChopOrRepeatTransformation transformation = new ChopOrRepeatTransformation(
          act, dW, dH, ChopOrRepeatTransformation.CropType.TOP
); // this is Copy from Chop Transformation
 requestOptions.transform(transformation);

 Glide.with(act).asBitmap().load(bgUrl)
        .apply(requestOptions)
        .into(imgBackground);
</code></pre></div>