1. 程式人生 > >android開發ImageLoader網路圖片載入簡單使用

android開發ImageLoader網路圖片載入簡單使用

     Android上最讓人頭疼的莫過於從網路獲取圖片、顯示、回收,任何一個環節有問題都可能直接OOM,這個專案或許能幫到你。Universal Image Loader for Android的目的是為了實現非同步的網路圖片載入、快取及顯示,支援多執行緒非同步載入。它最初來源於Fedor Vlasov的專案,且自此之後,經過大規模的重構和改進。

imageloader 載入圖片的一般流程是先判斷記憶體中是否有對應的Bitmap,再判斷磁碟(disk)中是否有,如果沒有就從網路中載入。最後根據原先在UIL中的配置判斷是否需要快取Bitmap到記憶體或磁碟中。Bitmap載入完後,就對它進行解析,然後顯示到特定的ImageView中。

使用imageLoader可以實現:

  1. 多執行緒下載圖片,圖片可以來源於網路,檔案系統,專案資料夾assets中以及drawable中等
  2. 支援隨意的配置ImageLoader,例如執行緒池,圖片下載器,記憶體快取策略,硬碟快取策略,圖片顯示選項以及其他的一些配置
  3. 支援圖片的記憶體快取,檔案系統快取或者SD卡快取
  4. 支援圖片下載過程的監聽
  5. 根據控制元件(ImageView)的大小對Bitmap進行裁剪,減少Bitmap佔用過多的記憶體
  6. 較好的控制圖片的載入過程,例如暫停圖片載入,重新開始載入圖片,一般使用在ListView,GridView中,滑動過程中暫停載入圖片,停止滑動的時候去載入圖片
  7. 提供在較慢的網路下對圖片進行載入

1.下面介紹ImageLoader的使用首先下載jar包:點選開啟連結

2.在application中配置ImageLoader:

ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context).threadPriority(Thread.NORM_PRIORITY - 2)
                .denyCacheImageMultipleSizesInMemory().diskCacheFileNameGenerator(new Md5FileNameGenerator()).diskCacheSize(50 * 1024 * 1024) // 50 Mb
                .tasksProcessingOrder(QueueProcessingType.LIFO).writeDebugLogs() // Remove for release app
                .build();
        ImageLoader.getInstance().init(config);

3.使用ImageLoader載入圖片:

public class ImageLoaderManager {

    public static void loadImage(String url,ImageView imageView){
        DisplayImageOptions options = new DisplayImageOptions.Builder()
                .cacheInMemory(true)//讓圖片進行記憶體快取
                .cacheOnDisk(true)//讓圖片進行sdcard快取
                .showImageForEmptyUri(R.mipmap.pic_default)//圖片地址有誤
                .showImageOnFail(R.mipmap.pic_default)//當圖片加載出現錯誤的時候顯示的圖片
                .showImageOnLoading(R.mipmap.pic_default)//圖片正在載入的時候顯示的圖片
                .build();
        ImageLoader.getInstance().displayImage(url,imageView,options);
    }
}

這樣就可以加載出網路圖片,並且載入的圖片會存到快取中第二次就會直接取快取圖片。

關注訂閱號: