如何使用volley来获取自定义参数的位图

时间:2013-10-04 12:43:57

标签: android android-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));

有人能告诉我如何通过此次通话添加自定义参数吗?

1 个答案:

答案 0 :(得分: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

//初始化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);

NetworkImageView

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();

您可以顺利地在项目中使用它们。