zoukankan      html  css  js  c++  java
  • StaggeredGridView+universal-image-loader载入网路图片实现瀑布流

    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代码就不粘了

    效果图:



  • 相关阅读:
    JAVA线程池原理详解一
    并发工具类:CountDownLatch、CyclicBarrier、Semaphore
    JAVA并行框架:Fork/Join
    Mock Server实践
    MockWebServer使用指南
    mybatis学习笔记 spring与mybatis整合
    怎样使用Mock Server
    基于unittest测试框架的扩展
    运营商劫持
    单元测试实战手册
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/5238983.html
Copyright © 2011-2022 走看看