Volley 简单使用(三) ImageRequest及Request设置

Image请求和其他请求也基本类似,返回的结果为Bitmap,无需进行任何流操作,不过需要限定图片的大小、ScaleType和图片格式等。

ImageRequest

获取RequestQueue

1
RequestQueue mQueue = Volley.newRequestQueue(mContext);

设置回调

1
2
3
private Response.Listener<Bitmap> mImgResultListener = response -> {
mImageView.setImageBitmap(response);
};

请求

1
2
ImageRequest 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和cache

1
2
3
4
5
6
String 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)就可以了