android開發ImageLoader網路圖片載入簡單使用
阿新 • • 發佈:2019-02-16
Android上最讓人頭疼的莫過於從網路獲取圖片、顯示、回收,任何一個環節有問題都可能直接OOM,這個專案或許能幫到你。Universal Image Loader for Android的目的是為了實現非同步的網路圖片載入、快取及顯示,支援多執行緒非同步載入。它最初來源於Fedor Vlasov的專案,且自此之後,經過大規模的重構和改進。
imageloader 載入圖片的一般流程是先判斷記憶體中是否有對應的Bitmap,再判斷磁碟(disk)中是否有,如果沒有就從網路中載入。最後根據原先在UIL中的配置判斷是否需要快取Bitmap到記憶體或磁碟中。Bitmap載入完後,就對它進行解析,然後顯示到特定的ImageView中。
使用imageLoader可以實現:
- 多執行緒下載圖片,圖片可以來源於網路,檔案系統,專案資料夾assets中以及drawable中等
- 支援隨意的配置ImageLoader,例如執行緒池,圖片下載器,記憶體快取策略,硬碟快取策略,圖片顯示選項以及其他的一些配置
- 支援圖片的記憶體快取,檔案系統快取或者SD卡快取
- 支援圖片下載過程的監聽
- 根據控制元件(ImageView)的大小對Bitmap進行裁剪,減少Bitmap佔用過多的記憶體
- 較好的控制圖片的載入過程,例如暫停圖片載入,重新開始載入圖片,一般使用在ListView,GridView中,滑動過程中暫停載入圖片,停止滑動的時候去載入圖片
- 提供在較慢的網路下對圖片進行載入
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);
}
}
這樣就可以加載出網路圖片,並且載入的圖片會存到快取中第二次就會直接取快取圖片。
關注訂閱號: