package com.android.smap.ui.views; import com.android.volley.toolbox.ImageLoader; import com.android.volley.toolbox.NetworkImageView; import android.content.Context; import android.graphics.Bitmap; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.Drawable; import android.graphics.drawable.TransitionDrawable; import android.util.AttributeSet; import android.webkit.URLUtil; public class AnimatedNetworkImageView extends NetworkImageView { private static final int FADE_IN_TIME_MS = 250; private long loadTime; public AnimatedNetworkImageView(Context context) { super(context); } public AnimatedNetworkImageView(Context context, AttributeSet attrs) { super(context, attrs); } public AnimatedNetworkImageView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } @Override public void setImageBitmap(Bitmap bm) { long now = System.currentTimeMillis(); if (now - loadTime > 50) { TransitionDrawable td = new TransitionDrawable(new Drawable[] { new ColorDrawable(android.R.color.transparent), new BitmapDrawable(getResources(), bm) }); setImageDrawable(td); td.startTransition(FADE_IN_TIME_MS); } else { setImageDrawable(new BitmapDrawable(getResources(), bm)); } } @Override public void setImageUrl(String urlString, ImageLoader imageLoader) { loadTime = System.currentTimeMillis(); if (URLUtil.isValidUrl(urlString)) { super.setImageUrl(urlString, imageLoader); } } }