赞
踩
********************************************************
volley框架总结,数据量小,适合小数据的传输下载,扩展性强,内部是基于大量的接口设计,可配置性强,而且开源,适合配置属于自己的volley框架,包括请求头处理,缓存机制的支持,安卓api9以下是用httpclient来实现,9以上使用。volley默认只有磁盘缓存,并且是默认开启。
1.网络请求。需要先实例化消息队列,一般是在application里实现的,
两种方式get和post,get请求网络数据需要三个参数,url,成功的接口回调还有失败的接口回调,post请求需要声明一下post的模式(相比get就在三个参数前面多加了这一个参数),并且在匿名内部类里重写一个getparams方法,在里面put相应的参数既可。
- StringRequest(Request.Method.POST,url,Listener,ErrorListener){
- public Map<String,String> getParams(){
- return map;
- }
- }
请求数据需要两个dispatcher分发的方法,一个是CacheDispatcher方法,另一个是NetworkDispatcher,两个都是线程,不过一个是走缓存一个是走网络。加载时,会先走缓存。如果未缓存,或者缓存失效以及缓存刷新就会走NetworkDispatcher。最后NetworkDispatcher将数据的结果返回给ResponseDelivery(结果分发接口),
2.图片加载ImageRequest
* 参数一:url地址
* 参数二:成功的回调监听
* 参数三四:图片的最大宽高,这个属性一般和ScaleType属性来连用,当设置为0是表示不缩放
* 参数五:缩放类型
* 参数六:图片的解码类型(ARGB8888,ARGB4444,RGB565,ALPHA8)
* 参数七:图片显示前的处理(显示为圆角的或者圆形图片)
* 参数八:错误或者失败的回调
- ImageRequest imageRequest = new ImageRequest(
- url,
- new Response.Listener<Bitmap>() {
- @Override
- public void onResponse(Bitmap bitmap) {
- imageView.setImageBitmap(bitmap);
- }
- },
- 0,0,
- ImageView.ScaleType.CENTER_CROP,
- Bitmap.Config.RGB_565,
- null,
- null
- );
如同get和post请求一样,把这个imageRequest请求添加到最开始实例化的消息队列中。
3.ImageLoader 相比ImageRequest更加高效,还可以对图片缓存
- //1.实例化ImageLoader
- ImageLoader imageLoader = new ImageLoader(requestQueue,imageCache);
- //2.加载显示图片
- ImageListener imageListener = imageLoader.getImageListener(imageView,R.default.icon,R.error.icon);
- //可以使用四个参数的方法,自动处理图片的宽高,能防止内存溢出。
- imageLoader.get(url,imageListener);
4.NetworkImageView
一个图片的控件com.android.volley.NetworkImageView。
在java代码中绑定该控件后,可以直接该控件点调用相关的属性。
NetworkImageView nImageView;
ImageLoader imLoader = new ImageLoader(mQueue, new BitmapLruCache());
nImageView.setDefaultImageResId(R.drawable.ic_launcher); //默认
nImageView.setErrorImageResId(R.drawable.ic_launcher); // 错误
nImageView.setImageUrl(url, imLoader);
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。