Android Open Source - Android-Universal-Image-Loader-Wrapper Image List Activity






From Project

Back to project page Android-Universal-Image-Loader-Wrapper.

License

The source code is released under:

Apache License

If you think the Android project Android-Universal-Image-Loader-Wrapper listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/*******************************************************************************
 * Copyright 2011-2013 Sergey Tarasevich
 *//w  w  w . j a  v a  2s  .c o m
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *******************************************************************************/
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;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;

import com.nostra13.example.universalimageloader.Constants.Extra;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.assist.ImageLoadingListener;
import com.nostra13.universalimageloader.core.assist.SimpleImageLoadingListener;
import com.nostra13.universalimageloader.core.display.FadeInBitmapDisplayer;
import com.nostra13.universalimageloader.core.display.RoundedBitmapDisplayer;

/**
 * @author Sergey Tarasevich (nostra13[at]gmail[dot]com)
 */
public class ImageListActivity extends AbsListViewBaseActivity {

  DisplayImageOptions options;

  String[] imageUrls;

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.ac_image_list);

    Bundle bundle = getIntent().getExtras();
    imageUrls = bundle.getStringArray(Extra.IMAGES);

    options = new DisplayImageOptions.Builder()
      .showStubImage(R.drawable.ic_stub)
      .showImageForEmptyUri(R.drawable.ic_empty)
      .showImageOnFail(R.drawable.ic_error)
      .cacheInMemory(true)
      .cacheOnDisc(true)
      .displayer(new RoundedBitmapDisplayer(20))
      .build();

    listView = (ListView) findViewById(android.R.id.list);
    ((ListView) listView).setAdapter(new ItemAdapter());
    listView.setOnItemClickListener(new OnItemClickListener() {
      @Override
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        startImagePagerActivity(position);
      }
    });
  }

  @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);
    intent.putExtra(Extra.IMAGE_POSITION, position);
    startActivity(intent);
  }

  class ItemAdapter extends BaseAdapter {

    private ImageLoadingListener animateFirstListener = new AnimateFirstDisplayListener();

    private class ViewHolder {
      public TextView text;
      public ImageView image;
    }

    @Override
    public int getCount() {
      return imageUrls.length;
    }

    @Override
    public Object getItem(int position) {
      return position;
    }

    @Override
    public long getItemId(int position) {
      return position;
    }

    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
      View view = convertView;
      final ViewHolder holder;
      if (convertView == null) {
        view = getLayoutInflater().inflate(R.layout.item_list_image, parent, false);
        holder = new ViewHolder();
        holder.text = (TextView) view.findViewById(R.id.text);
        holder.image = (ImageView) view.findViewById(R.id.image);
        view.setTag(holder);
      } else {
        holder = (ViewHolder) view.getTag();
      }

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

      imageLoader.displayImage(imageUrls[position], holder.image, options, animateFirstListener);

      return view;
    }
  }

  private static class AnimateFirstDisplayListener extends SimpleImageLoadingListener {

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

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




Java Source Code List

com.nostra13.example.universalimageloader.AbsListViewBaseActivity.java
com.nostra13.example.universalimageloader.BaseActivity.java
com.nostra13.example.universalimageloader.Constants.java
com.nostra13.example.universalimageloader.HomeActivity.java
com.nostra13.example.universalimageloader.ImageGalleryActivity.java
com.nostra13.example.universalimageloader.ImageGridActivity.java
com.nostra13.example.universalimageloader.ImageListActivity.java
com.nostra13.example.universalimageloader.ImagePagerActivity.java
com.nostra13.example.universalimageloader.UILApplication.java
com.nostra13.example.universalimageloader.widget.UILWidgetProvider.java
mobi.sherif.example.universalimageloaderwrapper.ImageLoadingViewActivity.java
mobi.sherif.util.ui.ImageLoadingView.java