ImageView加載網絡圖片
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) { ... } });
更多的可以看源碼!