基本上 Volley 提供了两种请求图像的方式
例子 :
ImageRequest imgRequest = new ImageRequest(<URL>, new Response.Listener<Bitmap>() {
@Override
public void onResponse(Bitmap response) {
mImageView.setImageBitmap(response);
}
}, 0, 0, Bitmap.Config.ARGB_8888, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
mImageView.setImageResource(R.drawable.error);
}
});
mVolleyQueue.add(imgRequest);
图像下载器
//初始化ImageDownloader
int max_cache_size = 1000000;
mImageLoader = new ImageLoader(mVolleyQueue, new DiskBitmapCache(getCacheDir(),max_cache_size));
( 或 ) Memorycache 总是比 DiskCache 快。我们自己检查一下。mImageLoader = new ImageLoader(mVolleyQueue, new BitmapCache(max_cache_size));
mImageLoader.get(<URL>,
ImageLoader.getImageListener(mImageView,
R.drawable.flickr,
android.R.drawable.ic_dialog_alert),
//You can optional specify width & height of the bitmap to be scaled down when the image is downloaded.
50,50);
网络图像视图
mNetworkImageView.setImageUrl(testUrlToDownloadImage1, mImageLoader);
如果您想要更多控制和选项,可以尝试 UniversalImagerLoader
在此处查看更多信息:https ://github.com/nostra13/Android-Universal-Image-Loader
配置
配置生成器中的所有选项都是可选的。仅使用您真正想要自定义的那些。请参阅 Java 文档中每个选项的配置选项的默认值。
// DON'T COPY THIS CODE TO YOUR PROJECT! This is just example of ALL options using.
// See the sample project how to use ImageLoader correctly.
File cacheDir = StorageUtils.getCacheDirectory(context);
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context)
.memoryCacheExtraOptions(480, 800) // default = device screen dimensions
.diskCacheExtraOptions(480, 800, null)
.taskExecutor(...)
.taskExecutorForCachedImages(...)
.threadPoolSize(3) // default
.threadPriority(Thread.NORM_PRIORITY - 1) // default
.tasksProcessingOrder(QueueProcessingType.FIFO) // default
.denyCacheImageMultipleSizesInMemory()
.memoryCache(new LruMemoryCache(2 * 1024 * 1024))
.memoryCacheSize(2 * 1024 * 1024)
.memoryCacheSizePercentage(13) // default
.diskCache(new UnlimitedDiscCache(cacheDir)) // default
.diskCacheSize(50 * 1024 * 1024)
.diskCacheFileCount(100)
.diskCacheFileNameGenerator(new HashCodeFileNameGenerator()) // default
.imageDownloader(new BaseImageDownloader(context)) // default
.imageDecoder(new BaseImageDecoder()) // default
.defaultDisplayImageOptions(DisplayImageOptions.createSimple()) // default
.writeDebugLogs()
.build();
显示选项
显示选项可以应用于每个显示任务(ImageLoader.displayImage(...) 调用)。
注意:如果显示选项未传递给 ImageLoader.displayImage(...) 方法,则将使用配置中的默认显示选项 (ImageLoaderConfiguration.defaultDisplayImageOptions(...))。
// DON'T COPY THIS CODE TO YOUR PROJECT! This is just example of ALL options using.
// See the sample project how to use ImageLoader correctly.
DisplayImageOptions options = new DisplayImageOptions.Builder()
.showImageOnLoading(R.drawable.ic_stub) // resource or drawable
.showImageForEmptyUri(R.drawable.ic_empty) // resource or drawable
.showImageOnFail(R.drawable.ic_error) // resource or drawable
.resetViewBeforeLoading(false) // default
.delayBeforeLoading(1000)
.cacheInMemory(false) // default
.cacheOnDisk(false) // default
.preProcessor(...)
.postProcessor(...)
.extraForDownloader(...)
.considerExifParams(false) // default
.imageScaleType(ImageScaleType.IN_SAMPLE_POWER_OF_2) // default
.bitmapConfig(Bitmap.Config.ARGB_8888) // default
.decodingOptions(...)
.displayer(new SimpleBitmapDisplayer()) // default
.handler(new Handler()) // default
.build();
您可以在项目中顺利使用两者。