- New API:
ImageLoader.displayImage(..., ImageSize targetImageSize, ...)
- CircleBitmapDisplayer
- Better rendering of scaled images.
- Fixed bugs:
- New API:
ImageLoader.setDefaultLoadingListener(ImageLoadingListener)
- "Disc -> Disk" migration (deleted DiscCacheAware, MemoryCacheAware)
- Video thumbnails support (
file://...) - Fixed 0-length files problem
- Introduced
ImageScaleType.NONE_SAFE - Video thumbnails support (
content://...) - Animated drawables support (for
.showImageOnLoading(),.showImageOnFail(),.showImageForEmptyUri()) - Fixed bugs:
loadImageSync(...)bug (#636)- NPE if no free space while init disk cache
- "Bitmap too large ..." for all ImageScaleTypes
- contacts photo considering
- New Disk cache API (preparing renaming
disc->disk) - ImageLoader can be called out of the Main thread. Callback will be delivered on separate thread.
- Prevented broken image files (#511)
- Interrupt non-actual tasks
LruDiscCacheis default limited cache- Renaming:
ImageNonViewAware->NonViewAware. ExtractedViewAwarefromImageViewAware. - Introduced
DiskCacheandMemoryCacheinterfaces instead of deprecatedDiscCacheAwareandMemoryCacheAware. - Removed
LimitedDiscCache,TotalSizeLimitedDiscCache,FileCountLimitedDiscCache. UseLruDisckCacheinstead.
- Changed API:
BitmapDisplayer.display(...) : Bitmap->BitmapDisplayer.display(...) : void
- New API:
- Added possibility to listen image loading progress by listener -
ImageLoadingProgressListener
- Added possibility to listen image loading progress by listener -
- Non-actual downloads are interrupted (if loaded less than 75%)
- Re-designed
RoundedBitmapDisplayer. AddedRoundedVignetteBitmapDisplayer. NOTE: NewRoundedBitmapDisplayer's behaviour can vary from old one. Also consider "RoundedImageView" project for usage if newRoundedBitmapDisplayerdoesn't work for you. - Maximum GL texture size is considered while decode images (#281)
loadImage(...)call cancels previous task for the same image URI (#475)- Fixed StrictMode warning
Explicit termination method 'close' not called(#482) LruMemoryCacheis default memory cache for Android < 2.3 too.
- Changed API:
BitmapDisplayer.display(..., ImageView, ...)->BitmapDisplayer.display(..., ImageAware, ...)
- New API:
ImageAwareImageLoader.displayImage(..., ImageAware, ...)ImageLoader.loadImageSync(...) : Bitmapfor synchronous loading of imageDisplayImageOptions.considerExifParams(boolean)DisplayImageOptions.showImageOnLoading(...)(instead of.showStubImage(...))
ImageLoadercan process any view (or any other object) which implementsImageAwareinterface. E.g.ImageViewAwareis adapter ofImageViewforImageAware- EXIF parameters of image are not considered by default anymore. Use new API to enable it.
- Optimized image loading (prevented double-request on image loading, reuse existing stream)
- Fixed bugs:
- Changed API:
ImageLoaderConfiguration.enableLogging()->ImageLoaderConfiguration.writeDebugLogs() - Fixed memory leak (#263)
- Added the bug of
loadImage(...)method (onLoadingCancelled()is fired always) :)
- Changed API:
ImageLoaderConfiguration.discCacheExtraOptions(...)->ImageLoaderConfiguration.discCacheExtraOptions(..., BitmapProcessor)(#314) - New API:
- Added
LoadedFromflag toBitmapDisplayer.display(..., LoadedFrom)about image source (#149, #239) - Added
L.disableLogging()andL.enableLogging()to off/on logs completely (#270) - Prevent image decoding if image is reused (#247)
- Not set cache dir on SD card if no appropriate permission (#311)
- Increased buffer size for image downloads (8 KB -> 32 KB) (#249)
- Fixed bugs:
- Prevent recycling of cached in memory images (#259)
- ConcurrentModificationException in
LruMemoryCache(#265) - File counting if cached files disappeared
LimitedDiscCache(#316) - NPE for ImageView without LayoutParams (#272)
- NPE in
LoadAndDisplayImageTask(#271) - NPE in ImageLoaderEngine (#301)
- RoundedBitmapDisplayer doesn't display round corner correctly for CENTER_CROP (#315)
- Travis CI, added Unit tests (#189)
- New API:
DisplayImageOptions.handler(Handler)(#231) - Fixed bugs:
- Improved work with Strings on UI thread (#244)
- Android 2.0+ support
- Added EXIF orientation support (#172)
- New API:
ImageLoaderConfiguration.imageDecoder(ImageDecoder)DisplayImageOptions.decodingOptions(BitmapFactory.Options)
- Handled disc cache non-availability
- Use
LruMemoryCacheas default memory cache for API >= 9,LRULimitedMemoryCache- for API < 9. Default memory cache size - 1/8 of available app memory. - Improved
LimitedDiscCacheandFuzzyKeyMemoryCacheperformance - Fixed bugs:
.denyCacheImageMultipleSizesInMemorydoesn't work if own memory cache is setjava.lang.NoSuchMethodErrorin sample app (#206)
- Changed API:
ImageDownloader.getStream***(URI, ...)->ImageDownloader.getStream***(String, ...)- Made
FailReasonas a class instead of enum. Can be used in switches:FailReason.getType() - Removed
ImageLoader.offOutOfMemoryHandling(). ImageLoader doesn't handle OutOfMemoryError by default anymore (but still catches it for callbacks).
- New API:
ImageLoader.taskExecutor(Executor)andImageLoader.taskExecutorForCachedImages(Executor)(#187)ImageLoader.destroy()
- Handled SD card unmount (#170)
- Added
Schemeclass - Fixed bugs:
- Changed API:
ImageLoader.denyNetworkDownloads()->ImageLoader.denyNetworkDownloads(true)ImageLoader.allowNetworkDownloads()->ImageLoader.denyNetworkDownloads(false)
- New API:
ImageLoader.denyNetworkDownloads(boolean)ImageLoader.handleSlowNetwork(boolean).FlushedInsputStreamisn't used for downloads by default.
- Handled HTTP(S) redirects
- Added
LruMemoryCache(based on Android's LruCache), uses only strong references. - Fixed
DisplayImageOptions.cloneFrom(...)(#173) - Fixed ConcurrentModification issue in
MemoryCacheUtil. findCacheKeysForImageUri(...)(#174) - Fixed issue "Disc Cache can't find image by URI with special/local UTF-8 characters"
- Improved calculation of target image size to scale (consider measured View width and height)
- Changed API:
- Signatures:
ImageLoader.loadImage(Context, ...)->ImageLoader.loadImage(...)ImageDownloader.getStream(URI)->ImageDownloader.getStream(URI, Object)(#150)ImageLoadingListener.onLoading***(...)->ImageLoadingListener.onLoading***(String, View, ...)(#130)- Constructor
PauseOnScrollListener(...)->PauseOnScrollListener(ImageLoader, ...)
ImageDownloaderbecame interface,URLConnectionImageDownloader+ExtendedImageDownloader->BaseImageDownloader- Renaming:
FileUtil->IoUtil - Removed deprecated
ImageScaleType.POWER_OF_2andImageScaleType.EXACT
- Signatures:
- Support of "content://", "assets://", "drawable://" URI schemes out of the box (#162)
- New API:
DisplayImageOptions.showImageOnFail(int)DisplayImageOptions.preProcessor(BitmapProcessor)andDisplayImageOptions.postProcessor(BitmapProcessor)(#151)DisplayImageOptions.extraForDownloader(Object), allows to pass auxiliary object which will be passed toImageDownloader.getStream(URI, Object)(#150)ImageLoader.denyNetworkDownloads()andImageLoader.allowNetworkDownloads()(#148)FailReason.UNSUPPORTED_URI_SCHEMEandFailReason.NETWORK_DENIEDImageScaleType.NONE
- Added
DiscCacheUtil - Prepared ImageLoader to be extandable for creation of multiple instances (#158)
- Fixed bug "Images aren't loaded after "Clear Cache" in app info" (#168)
- Switched to Apache 2.0 license
- Avoid I/O operations on the main thread, prevented ANR (#129, #154)
- Correctly handled every ImageView's scale type in
RoundedBitmapDisplayer(#70) - Prevented slow precaching modified date in LimitedAgeDiscCache constructor (for large number of images in cache) (#141)
- New API:
ImageLoader.isInited()method. Throw IllegalStateException ondisplayImage(...),loadImage(...),getMemoryCache(),clearMemoryCache(),getDiscCache(),clearDiscCache()calls if ImageLoader isn't inited with config. - Closed OutputStream after Bitmap compressing (#115)
- Sample: Refactored resources
- Maven support
- New API:
- Prevented consuming of lot of memory by cacheKeysForImageViews (#108)
- New API:
- Added
FadeInBitmapDisplayer - Prevented recycling of using Bitmap (#101)
- New API:
ImageLoaderConfiguration.tasksProcessingOrder(QueueProcessingType)(#89) - Added
MemoryCacheUtilfor work with memory cache - Fixed calculation of size the original image is needed scale to (#93)
- Allowed to create multiple
ImageLoaderinstances (#92)
- Prevented showing wrong bitmap in reused view (#85)
- Fixed bug "double displaying" if image is cached in memory
- Prevented "MissingFormatWidthException" (#88)
- Changed API: Renaming:
ImageScaleType.POWER_OF_2->IN_SAMPLE_POWER_OF_2ImageScaleType.EXACT->IN_SAMPLE_INT
- New API:
ImageScaleType.EXACTLYandImageScaleType.EXACTLY_STRETCHED - Prevented
ImageLoadingListenercallbacks firing and displaying image in view after ImageLoader was stopped - Fixed bug of calculation of original image scale for decoding
- New API:
ImageLoader.loadImage(...)which loads image, decodes it to Bitmap and returns Bitmap in callback (#51) - Avoided unnecessary image downloads (#44)
- Changed API: Changed
FileNameGeneratorto interface (instead of abstract class) - New API:
BitmapDisplayerandDisplayImageOptions.displayer(...) - Multithread displaying of cached images (instead of single-thread)
- Correctly handle UTF-8 symbols and spaces in image URL (#31)
- Changed API:
- Removed
DisplayImageOptions.transform() - Changed
FileNameGeneratorto abstract class (instead of interface)
- Removed
- Fire
ImageLoadingListenercallbacks if image URI is null