- package com.example.listviewdemo;
- import java.util.ArrayList;
- import java.util.Collections;
- import java.util.LinkedList;
- import java.util.List;
- import android.database.Cursor;
- import android.graphics.Bitmap;
- import android.os.Bundle;
- import android.provider.MediaStore;
- import android.view.View;
- import android.view.ViewGroup;
- import android.widget.BaseAdapter;
- import android.widget.ImageView;
- import android.widget.ListView;
- import android.widget.TextView;
- 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;
- import com.smalt.smaltmap.utils.GlobalConstant;
- /**
- *
- * @Title:
- * @Description:ListView显示大量图片
- * @Copyright: Copyright (c) 2014
- * @Company:
- * @author: Administrator
- * @version: 1.0.0.0
- * @Date: 2014-2-14
- */
- public class MainActivity01 extends AbsListViewBaseActivity {
- DisplayImageOptions options; // 配置图片加载及显示选项
- ListView lvShow;
- /**
- * 存储图片地址
- */
- ArrayList<String> listImgPath;
- String[] imageUriArray;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- lvShow = (ListView) findViewById(R.id.lv_show);
- // 扫描内存中图片并存入list
- listImgPath = getImgPathList();
- if (listImgPath.size() < 1) {
- GlobalConstant.i("sd卡中无图片");
- } else {
- // list转成数组
- imageUriArray = (String[]) listImgPath
- .toArray(new String[listImgPath.size()]);
- // 配置图片加载及显示选项(还有一些其他的配置,查阅doc文档吧)
- options = new DisplayImageOptions.Builder()
- .showStubImage(R.drawable.ic_launcher) // 在ImageView加载过程中显示图片
- .showImageForEmptyUri(R.drawable.ic_launcher) // image连接地址为空时
- .showImageOnFail(R.drawable.ic_launcher) // image加载失败
- .cacheInMemory(true) // 加载图片时会在内存中加载缓存
- .cacheOnDisc(true) // 加载图片时会在磁盘中加载缓存
- .displayer(new RoundedBitmapDisplayer(20)) // 设置用户加载图片task(这里是圆角图片显示)
- .build();
- // 加载适配器
- lvShow.setAdapter(new AdapterList());
- }
- }
- @Override
- public void onBackPressed() {
- AnimateFirstDisplayListener.displayedImages.clear();
- super.onBackPressed();
- }
- /**
- *
- * 获取图片地址列表
- *
- * @return list
- */
- private ArrayList<String> getImgPathList() {
- ArrayList<String> list = new ArrayList<String>();
- Cursor cursor = getContentResolver().query(
- MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
- new String[] { "_id", "_data" }, null, null, null);
- while (cursor.moveToNext()) {
- list.add(cursor.getString(1));// 将图片路径添加到list中
- }
- cursor.close();
- return list;
- }
- /** 图片加载监听事件 **/
- 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); // 设置image隐藏动画500ms
- displayedImages.add(imageUri); // 将图片uri添加到集合中
- }
- }
- }
- }
- /**
- *
- * @Title:
- * @Description:listview适配器
- * @Copyright: Copyright (c) 2014
- * @Company:
- * @author: Administrator
- * @version: 1.0.0.0
- * @Date: 2014-2-14
- */
- class AdapterList extends BaseAdapter {
- private ImageLoadingListener animateFirstListener = new AnimateFirstDisplayListener();
- @Override
- public int getCount() {
- // TODO Auto-generated method stub
- return imageUriArray.length;
- }
- /**
- * 构造方法
- */
- public AdapterList() {
- // TODO Auto-generated constructor stub
- }
- @Override
- public Object getItem(int arg0) {
- // TODO Auto-generated method stub
- return arg0;
- }
- /*
- * (non-Javadoc)
- *
- * @see android.widget.Adapter#getItemId(int)
- */
- @Override
- public long getItemId(int arg0) {
- // TODO Auto-generated method stub
- return arg0;
- }
- /*
- * (non-Javadoc)
- *
- * @see android.widget.Adapter#getView(int, android.view.View,
- * android.view.ViewGroup)
- */
- @Override
- public View getView(int position, View convertView, ViewGroup parent) {
- ViewHolder holder;
- if (convertView == null) {
- holder = new ViewHolder();
- // 初始化绑定控件
- convertView = getLayoutInflater().inflate(R.layout.layout_item, null);
- holder.imgShow = (ImageView) findViewById(R.id.img_show);
- holder.tvShow = (TextView) findViewById(R.id.tv_show);
- // add to convertView
- convertView.setTag(holder);
- } else {
- holder = (ViewHolder) convertView.getTag();
- }
- // 设置img,text具体显示的内容
- holder.tvShow.setText("fuck" + (position));
- imageLoader.displayImage(imageUriArray[position], holder.imgShow,
- options, animateFirstListener);
- return convertView;
- }
- }
- static class ViewHolder {
- ImageView imgShow;
- TextView tvShow;
- }
- }
下载地址:http://pan.baidu.com/s/1pJyjlxh