StaggeredGridView+universal-image-loader加载网路图片实现瀑布流

原创 2015年07月09日 14:58:55

StaggeredGridView 开源lib  https://github.com/maurycyw/StaggeredGridView

文章demo下载地址  http://download.csdn.net/detail/u012303938/8883957

用imageloder去加载网络图片   用StaggeredGridView去显示实现瀑布流。

MainActivity

package com.origamilabs.library;

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;

import com.example.staggeredgridviewdemo.views.ScaleImageView;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.assist.ImageLoadingListener;
import com.nostra13.universalimageloader.core.assist.SimpleImageLoadingListener;
import com.nostra13.universalimageloader.core.display.FadeInBitmapDisplayer;
import com.origamilabs.library.views.StaggeredGridView;

import android.app.Activity;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.SimpleAdapter;
import android.widget.TextView;

public class MainActivity extends Activity{
	private StaggeredGridView gridView;
	private ArrayList<Map<String, Object>> list;
	private Map<String, Object> map;
	String[] imageUrls = new String[] {
			"http://file.bmob.cn/M00/D9/44/oYYBAFSGZlyAXZjwAAC5ynS9Zww4985471",
			"http://file.bmob.cn/M00/D8/8F/oYYBAFSFh_WAB_uIAAB4PTlS6rI0966668",
			"http://file.bmob.cn/M00/D7/56/oYYBAFSBhJSAIdIJAACoNxTDcM44444974",
			"http://file.bmob.cn/M00/D9/45/oYYBAFSGZvKAdpqWAACKHHYyClU0459660",
			"http://file.bmob.cn/M00/D9/45/oYYBAFSGZreAEyRSAADfcLFM62U5428980",
			"http://file.bmob.cn/M00/D9/44/oYYBAFSGZlyAXZjwAAC5ynS9Zww4985471",
			"http://file.bmob.cn/M00/D9/44/oYYBAFSGZYqAUYxAAADSNZMdbOs5036914",
			"http://file.bmob.cn/M00/D9/43/oYYBAFSGZRCATj2XAADDaZB1Nbo6433800",
			"http://file.bmob.cn/M00/D9/41/oYYBAFSGZJKAWXyDAADPOI8iH6Q3523485",
			"http://file.bmob.cn/M00/D8/8F/oYYBAFSFiE6AbAu2AACfguCRGHY3486277",
			"http://file.bmob.cn/M00/D8/8F/oYYBAFSFh_WAB_uIAAB4PTlS6rI0966668",
			"http://file.bmob.cn/M00/D7/57/oYYBAFSBhd-Aa1IiAAC86WAfmc89917549",
			"http://file.bmob.cn/M00/D7/56/oYYBAFSBhJSAIdIJAACoNxTDcM44444974",
			"http://file.bmob.cn/M00/D7/55/oYYBAFSBgiKAC2aGAAC4We1hZmk1405980",
			"http://file.bmob.cn/M00/D7/56/oYYBAFSBgrmAXQ8BAAD665llCTc5545260",
			"http://file.bmob.cn/M00/D7/56/oYYBAFSBg-CAePQKAAC38mflwMY8903422"
			};
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		gridView=(StaggeredGridView) findViewById(R.id.gridview);
gridView.setItemMargin(10); // set the GridView margin
		
		gridView.setPadding(10, 0, 10, 0);
		
		ImageAdapter adapter=new ImageAdapter();
		gridView.setAdapter(adapter);
		adapter.notifyDataSetChanged();
	}
	class ImageAdapter extends BaseAdapter {
	
		


		@Override
		public View getView(final int position, View convertView,
				ViewGroup parent) {
			View view = convertView;
			final ViewHolder holder;
			if (convertView == null) {
				LayoutInflater layoutInflator = LayoutInflater.from(MainActivity.this);
				view = layoutInflator.inflate(R.layout.item,
						null);
				holder = new ViewHolder();
				holder.image = (ScaleImageView) view.findViewById(R.id.imageView1);
				view.setTag(holder);
			} else {
				holder = (ViewHolder) view.getTag();
			}
			ImageLoader.getInstance().displayImage(imageUrls[position],
					holder.image );
			return view;
		}

		@Override
		public int getCount() {
			// TODO Auto-generated method stub
			return imageUrls.length;
		}

		@Override
		public Object getItem(int arg0) {
			// TODO Auto-generated method stub
			return imageUrls[arg0];
		}

		@Override
		public long getItemId(int arg0) {
			// TODO Auto-generated method stub
			return arg0;
		}
	}
	private static class ViewHolder {
		ScaleImageView image;
	}
}
通过Tappliacation注册imageloder
Tapplication

package com.origamilabs.library;

import java.io.File;

import com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiscCache;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import com.nostra13.universalimageloader.core.assist.QueueProcessingType;
import com.nostra13.universalimageloader.utils.StorageUtils;

import android.app.Application;

public class Tapplication extends Application{
@Override
public void onCreate() {
	// TODO Auto-generated method stub
	super.onCreate();
	File cacheDir = StorageUtils.getOwnCacheDirectory(getApplicationContext(), "imageloader/Cache");//sdk缓存文件
	DisplayImageOptions defaultOptions = new DisplayImageOptions
			.Builder()
	.showImageForEmptyUri(R.drawable.ic_launcher) 
	.showImageOnFail(R.drawable.ic_launcher) 
	.cacheInMemory(true)
	.cacheOnDisc(true)
	.build();
	ImageLoaderConfiguration config = new ImageLoaderConfiguration
			.Builder(getApplicationContext())
	.discCache(new  UnlimitedDiscCache(cacheDir))
	.defaultDisplayImageOptions(defaultOptions)
	.discCacheSize(50 * 1024 * 1024)//
	.discCacheFileCount(100)//
	.threadPriority(Thread.NORM_PRIORITY - 2)
	.denyCacheImageMultipleSizesInMemory()
	.tasksProcessingOrder(QueueProcessingType.LIFO)
	.writeDebugLogs()
	.build();
	ImageLoader.getInstance().init(config);
}
}
剩下的为StaggeredGridView 的lib代码就不粘了

效果图:



Android-Universal-Image-Loader 图片异步加载类库的使用(超详细配置)

这个图片异步加载并缓存的类已经被很多开发者所使用,是最常用的几个开源库之一,主流的应用,随便反编译几个火的项目,都可以见到它的身影。        可是有的人并不知道如何去使用这库如何进行配置,网上...
  • vipzjyno1
  • vipzjyno1
  • 2014年04月09日 19:38
  • 189844

Android-Universal-Image-Loader 学习笔记(二)加载图片原理

Android-Universal-Image-Loader 学习笔记(二) 1. 流程图        了解一下UIL加载图片的流程(可以通过查看ImageLoader.displayImage(...
  • wubo_fly
  • wubo_fly
  • 2015年11月11日 11:24
  • 2268

Android加载图片 Universal-Image-Loader图片缓存问题

开发中大部分情况下我们需要缓存图片,用imageLoader两步实现加载网络图片后,缓存到内存以及sd卡.再次读取该图片时先从内存找,有则直接加载,没有则从sd卡找,再没有则读网络,这样实现了三级缓存...
  • BigBoySunshine
  • BigBoySunshine
  • 2016年12月06日 15:49
  • 2022

Android_Volley+Image-Loader+RecyclerView实现网络下载图片瀑布流

要实现网络数据下载实现瀑布流效果; 实现思路很简单,主要是熟悉框架的运用。首先要写一个通用的MyRequest类,用于从网上获取json数据用Gson解析并返回bean对象 之后要设置recycler...
  • zcr317121966
  • zcr317121966
  • 2016年08月26日 16:36
  • 2694

Android--Universal-Image-Loader异步图片加载框架封装思路及实现

框架简介:名称:nostra13/Android-Universal-Image-Loader开源网址:https://github.com/nostra13/Android-Universal-Im...
  • qq_38325620
  • qq_38325620
  • 2017年07月23日 22:56
  • 248

使用Universal-Image-Loader加载系统图片并放大显示

  • 2015年09月19日 09:40
  • 4.14MB
  • 下载

android图片异步加载框架universal-image-loader-1.9.2-SNAPSHOT-with-sources.jar

  • 2014年09月22日 14:35
  • 251KB
  • 下载

Android-Universal-Image-Loader 图片异步加载类库的使用

  • 2016年05月11日 17:16
  • 4.14MB
  • 下载

利用Universal-Image-Loader加载网络图片。只有加载网络的

  • 2016年12月15日 16:01
  • 3.03MB
  • 下载

RecycleView+CardView实现瀑布流(2、加载网络图片)

  • 2016年01月03日 12:49
  • 8.96MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:StaggeredGridView+universal-image-loader加载网路图片实现瀑布流
举报原因:
原因补充:

(最多只允许输入30个字)