Image请求和其他请求也基本类似,返回的结果为Bitmap,无需进行任何流操作,不过需要限定图片的大小、ScaleType和图片格式等。
ImageRequest
获取RequestQueue1
RequestQueue mQueue = Volley.newRequestQueue(mContext);
设置回调1
2
3private Response.Listener<Bitmap> mImgResultListener = response -> {
mImageView.setImageBitmap(response);
};
请求1
2ImageRequest imageRequest = new ImageRequest(URL_IMG, mImgResultListener, IMG_WIDTH, IMG_HEIGHT, ImageView.ScaleType.CENTER_CROP, Bitmap.Config.ARGB_8888, mErrorListener);
mQueue.add(imageRequest);
Request设置
Volley支持设置network和cache,通过BasicNetwork可以指定请求的方式,例如使用HttpURLConnection进行请求,还可以DiskBasedCache来限定换成存放目录以及大小。
不过进行Request进行请求的时候,不再使用Volley.newRequestQueue(Context context)
获取RequestQueue对象1
2
3
4
5// 方式一:
RequestQueue mQueue = Volley.newRequestQueue(Context context, BaseHttpStack stack);
// 方式二:
RequestQueue mQueue = new RequestQueue(Cache cache, Network network);
mQueue.start();
方式一比较简单,只需要一个HttpStack就可以了1
Volley.newRequestQueue(mContext, new HurlStack());
方式二需要同时设置network和cache1
2
3
4
5
6String cacheFilePath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/cache";
File cacheFile = new File(cacheFilePath);
Cache cache = new DiskBasedCache(cacheFile, 1024 * 1024);
Network network = new BasicNetwork(new HurlStack());
mQueue = new RequestQueue(cache, network);
mQueue.start();
设置完成后使用完全一样,只需要 RequestQueue.add(Request)
就可以了