0

有人用过 Volley 库吗?我正在尝试通过 volley 获取位图,但我不知道如何将自定义参数添加到请求中。

这是我的代码:

 RequestQueue mRequestQueue = Volley.newRequestQueue(this);
 ImageLoader imageLoader = new ImageLoader(mRequestQueue, new BitmapLruCache(       BitmapLruCache.getDefaultLruCacheSize()));
 imageLoader.get(IMAGE_URL,ImageLoader.getImageListener(imageView, R.drawable.ic_launcher, R.drawable.ic_error));

谁能告诉我如何通过此调用添加自定义参数?

4

1 回答 1

0

基本上 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();

您可以在项目中顺利使用两者。

于 2014-07-16T10:41:29.570 回答