Skip to content

Commit

Permalink
Sample: Fade in images only on first display
Browse files Browse the repository at this point in the history
  • Loading branch information
nostra13 committed Feb 7, 2013
1 parent eadb4b7 commit 3945afc
Showing 1 changed file with 42 additions and 1 deletion.
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
package com.nostra13.example.universalimageloader;

import java.util.Collections;
import java.util.LinkedList;
import java.util.List;

import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
Expand All @@ -14,6 +19,8 @@
import com.nostra13.example.universalimageloader.Constants.Extra;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.assist.PauseOnScrollListener;
import com.nostra13.universalimageloader.core.assist.SimpleImageLoadingListener;
import com.nostra13.universalimageloader.core.display.FadeInBitmapDisplayer;
import com.nostra13.universalimageloader.core.display.RoundedBitmapDisplayer;

/**
Expand Down Expand Up @@ -53,6 +60,12 @@ public void onItemClick(AdapterView<?> parent, View view, int position, long id)
listView.setOnScrollListener(new PauseOnScrollListener(imageLoader, false, true));
}

@Override
public void onBackPressed() {
AnimateFirstDisplayListener.displayedImages.clear();
super.onBackPressed();
}

private void startImagePagerActivity(int position) {
Intent intent = new Intent(this, ImagePagerActivity.class);
intent.putExtra(Extra.IMAGES, imageUrls);
Expand Down Expand Up @@ -98,9 +111,37 @@ public View getView(final int position, View convertView, ViewGroup parent) {

holder.text.setText("Item " + (position + 1));

imageLoader.displayImage(imageUrls[position], holder.image, options);
final String imageUri = imageUrls[position];
final ImageView imageView = holder.image;
imageLoader.displayImage(imageUri, imageView, options, new AnimateFirstDisplayListener(imageUri, imageView));

return view;
}
}

private static class AnimateFirstDisplayListener extends SimpleImageLoadingListener {

static final List<String> displayedImages = Collections.synchronizedList(new LinkedList<String>());

private final String imageUri;
private final ImageView imageView;

AnimateFirstDisplayListener(String imageUri, ImageView imageView) {
this.imageUri = imageUri;
this.imageView = imageView;
}

@Override
public void onLoadingComplete(Bitmap loadedImage) {
if (loadedImage != null) {
boolean firstDisplay = !displayedImages.contains(imageUri);
if (firstDisplay) {
FadeInBitmapDisplayer.animate(imageView, 500);
} else {
imageView.setImageBitmap(loadedImage);
}
displayedImages.add(imageUri);
}
}
}
}

0 comments on commit 3945afc

Please sign in to comment.