ImageView加載網絡圖片

f663x 9年前發布 | 2K 次閱讀 Java Android

       android網絡加載圖片框架Android-Universal-Image-Loader功能非常強大,其開源地址 https://github.com/nostra13/Android-Universal-Image-Loader,講解非常地詳細,今天我要貼 下工作中用到的利用這個框架加載網絡圖片并在ImageView控件中顯示出來。

       第一步當然是把相應的jar包導入到我們的項目中去,

       第二步就是配置ImageLoader參數,

       第三步就是直接使用。

   private ImageLoader imageLoader;
   private ImageLoadingListener animateFirstListener;//這個監聽主要是監聽加載過程中的各狀態

     private DisplayImageOptions options;//圖片展示配置

    獲取ImageLoader對象很簡單,就一句話:

    imageLoader = ImageLoader.getInstance();

然后配置options:

  options = new DisplayImageOptions.Builder()

                             .showImageOnLoading(R.drawable.icon_default_avater) //加載中的默認圖片

.showImageForEmptyUri(R.drawable.icon_default_avater) // 加載錯誤的默認圖片 .showImageOnFail(R.drawable.icon_default_avater) // 加載失敗時的默認圖片 .cacheInMemory(true)// 開啟內存緩存 .cacheOnDisk(true) // 開啟硬盤緩存 .resetViewBeforeLoading(false).build();</pre>

第一種加載方式(參數uri:圖片所在地址,imageView:顯示圖片的對應控件ImageVeiw,options:就是剛剛我們配置的參數):

ImageLoader.getInstance().displayImage(String uri, ImageView imageView, DisplayImageOptions options);

第二種方式:

我們設置animateFirstListener,利用animateFirstListener來加載圖片:

自定義圖片緩存:


class MyDisplayListener extends SimpleImageLoadingListener {
static final List<String> displayedImages = Collections.synchronizedList(new LinkedList<String>());

@Override public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) { if (loadedImage != null) { ImageView imageView = (ImageView) view; boolean firstDisplay = !displayedImages.contains(imageUri); if (firstDisplay) { FadeInBitmapDisplayer.animate(imageView, 500); displayedImages.add(imageUri); } } } }</pre>


然后取得:

animateFirstListener = new MyDisplayListener ();//

加載圖片(參數uri:圖片所在地址,imageView:顯示圖片的對應控件ImageVeiw):

imageLoader.displayImage(uri, imageView, animateFirstListener);

開源框架中的ImageLoader類中定義了多種加載網絡圖片的方式:

如github介紹中的:


imageLoader.displayImage(imageUri, imageView, options, new ImageLoadingListener() {
    @Override
    public void onLoadingStarted(String imageUri, View view) {
        ...
    }
    @Override
    public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
        ...
    }
    @Override
    public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
        ...
    }
    @Override
    public void onLoadingCancelled(String imageUri, View view) {
        ...
    }
}, new ImageLoadingProgressListener() {
    @Override
    public void onProgressUpdate(String imageUri, View view, int current, int total) {
        ...
    }
});


更多的可以看源碼!

 本文由用戶 f663x 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!