Volley简介(二)

NetWorkImageView:

Volley提供的图像组件,其父类是ImageView,在里面可以通过url处理获取的图像及请求的生命周期。

添加到布局中:

<com.android.volley.toolbox.NetworkImageView
        android:id="@+id/netimg_ex"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >
    </com.android.volley.toolbox.NetworkImageView>

实例:

RequestQueue queue = null;
		queue = Volley.newRequestQueue(this);

		NetworkImageView img = (NetworkImageView) findViewById(R.id.netimg_ex);
		ImageLruCache imagecache = new ImageLruCache();

		ImageLoader loader = new ImageLoader(queue, imagecache);
		// 默认图片
		img.setDefaultImageResId(R.drawable.ic_launcher);
		// 错误图片
		img.setErrorImageResId(R.drawable.ic_launcher);
		img.setImageUrl("http://img10.3lian.com/c1/newpic/10/08/22.jpg", loader);

自定义的缓存类:

public class ImageLruCache implements ImageCache {
	private LruCache<String, Bitmap> mCache;

	public ImageLruCache() {
		int maxSize = 10 * 1024 * 1024;
		mCache = new LruCache<String, Bitmap>(maxSize) {
			@Override
			protected int sizeOf(String key, Bitmap value) {
				return value.getRowBytes() * value.getHeight();
			}
		};
	}

	@Override
	public Bitmap getBitmap(String arg0) {
		// TODO Auto-generated method stub
		return mCache.get(arg0);
	}

	@Override
	public void putBitmap(String arg0, Bitmap arg1) {
		// TODO Auto-generated method stub
		mCache.put(arg0, arg1);
	}

}

ViewHolder中使用NetWorkImageView:

public class ImageAdp extends BaseAdapter {
	private Context context;
	private List<String> urls;

	private ImageLoader loader;

	public ImageAdp(Context context, List<String> urls) {
		this.context = context;
		this.urls = urls;

		RequestQueue queue = Volley.newRequestQueue(context);
		loader = new ImageLoader(queue, new ImageLruCache());
	}

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

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

	@Override
	public long getItemId(int arg0) {
		// TODO Auto-generated method stub
		return arg0;
	}

	@Override
	public View getView(int posi, View conView, ViewGroup arg2) {
		// TODO Auto-generated method stub
		ViewHolder holder;
		if (null == conView) {
			holder = new ViewHolder();
			conView = LayoutInflater.from(context).inflate(R.layout.line_img,
					null);
			holder.img = (NetworkImageView) conView.findViewById(R.id.img_net);
			holder.img.setDefaultImageResId(R.drawable.ic_launcher);
			holder.img.setErrorImageResId(R.drawable.ic_launcher);
			conView.setTag(holder);
		} else {
			holder = (ViewHolder) conView.getTag();
		}
		
		holder.img.setImageUrl(urls.get(posi), loader);
		return conView;
	}

	private static class ViewHolder {
		private NetworkImageView img;
	}
}


2.ImageView:

其实跟上面的差不多。

RequestQueue queue = null;
		queue = Volley.newRequestQueue(this);
		ImageView img = (ImageView) findViewById(R.id.netimg_ex);
		ImageLruCache imagecache = new ImageLruCache();

		ImageLoader loader = new ImageLoader(queue, imagecache);
		ImageListener listener = ImageLoader.getImageListener(img,
				R.drawable.ic_launcher, R.drawable.ic_launcher);
		loader.get("http://img10.3lian.com/c1/newpic/10/08/22.jpg", listener);

ViewHolder中使ImageView:

public class ImageAdp extends BaseAdapter {
	private Context context;
	private List<String> urls;
	private ImageLoader loader;

	public ImageAdp(Context context, List<String> urls) {
		this.context = context;
		this.urls = urls;

		RequestQueue queue = Volley.newRequestQueue(context);
		loader = new ImageLoader(queue, new ImageLruCache());
	}

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

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

	@Override
	public long getItemId(int arg0) {
		// TODO Auto-generated method stub
		return arg0;
	}

	@Override
	public View getView(int posi, View conView, ViewGroup arg2) {
		// TODO Auto-generated method stub
		ViewHolder holder;
		if (null == conView) {
			holder = new ViewHolder();
			conView = LayoutInflater.from(context).inflate(R.layout.line_img,
					null);
			holder.img = (ImageView) conView.findViewById(R.id.img_net);
			conView.setTag(holder);
		} else {
			holder = (ViewHolder) conView.getTag();
		}

		ImageListener listener = ImageLoader.getImageListener(holder.img,
				R.drawable.ic_launcher, R.drawable.ic_launcher);
		loader.get(urls.get(posi), listener);

		return conView;
	}

	private static class ViewHolder {
		private ImageView img;
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值