使用Volley框架中的ImageLoader來異步的加載圖片

Volley框架在請求網絡圖片方面也作了不少工做,提供了好幾種方法.本文介紹使用ImageLoader來進行網絡圖片的加載.
ImageLoader的內部使用ImageRequest來實現,它的構造器能夠傳入一個ImageCache緩存形參,實現了圖片緩存的功能,同時還能夠過濾重複連接,避免重複發送請求。
下面是ImageLoader加載圖片的實現方法:
android

用一個類來編寫圖片加載和緩存的相關操做:例如:ImageWorkerManager web

初始化全局圖片緩存
緩存

private void init(Context context) {
        mQueue = Volley.newRequestQueue(context);
        ImageCache.ImageCacheParams cacheParams = new ImageCache.ImageCacheParams(context,
                FileManager.CACHE_IMAGE_PATH_NEW);
        cacheParams.setMemCacheSizePercent(context, 0.2f);
        imageCache = new ImageCache(cacheParams);
        mImageLoader = new ImageLoader(mQueue, imageCache);
    }

加載圖片網絡

    
    public void loadCommonImage(String coverUrl, ImageView imageView, int loadingDrawableId, int defaultDrawableId,
            int width, int height) {//能夠經過width,height來設置圖片的最大寬度和高度,超事後volley會自動壓縮。
        if (coverUrl == null) {
            coverUrl = "";
        }

        com.android.volley.plus.ImageCache cache = getImageCache();
        if (cache.getBitmapFromMemCache(coverUrl) != null) {
            imageView.setImageBitmap(cache.getBitmapFromMemCache(coverUrl));
        } else {
            ImageLoader.ImageContainer container = getImageLoader().get(coverUrl,
                    TransitionImageListener.obtain(imageView, loadingDrawableId, defaultDrawableId), width, height);
            imageView.setTag(container);
        }
    }


 在Activity中的應用:框架

 ImageWorkerManager.getInstance(getActivity()).loadCommonImage(Utils.getPhotoUrl(mUser.getAvatar()), mAvatar,
                R.drawable.img_vip, R.drawable.img_vip, mAvatar.getWidth(), mAvatar.getHeight());

 注意:volley只適合小數據,小圖片。用volley上傳圖像什麼的要注意。若是圖片過大最好要壓縮。spa

相關文章
相關標籤/搜索