Releases: luberda-molinet/FFImageLoading
FFImageLoading 1.1.7
Samples
If you start the Xamarin Forms demo project you can see a lot of samples for the different features.
Changes
Transformations
We have now cross platform image transformations. These are available on nuget
- BlurredTransformation
- CircleTransformation
- ColorSpaceTransformation
- GrayscaleTransformation
- RoundedTransformation
- SepiaTransformation
Please note that you can still define yours: implement ITransformation and you are ready.
Xamarin Forms
Xamarin Forms nuget package is much more advanced. Daniel Luberda fixed a couple of issues and binded features offered by the lib.
- Transformations: they are now available on Xamarin Forms too. Just call Transform() method to specify one or more transformations
Fading
Fading is now available and enabled by default on iOS. You can still globally disable fading using:
ImageService.Initialize(fadeAnimationEnabled: false)
HttpClient
ModernHttpClient
The dependency on ModernHttpClient has been removed due to bugs 184 and 185. Instead we now rely on native Mono HttpClientHandler. Therefore if you want to continue using ModernHttpClient it still possible and very easy to do so! When you start the app you should then call:
ImageService.Initialize(httpClient: yourModernHttpClientInstance)
Timeouts
It is now possible to specify two kind of web timeouts:
- headers timeout: this is the max time to connect to the server and get the headers. The default is 15s.
- read timeout: this is the max time to get the image (connect to server, get headers, get data). The default is 30s.
FFImageLoading 1.1.6
Changes
- iOS and Android use the same implementation to cancel tasks scheduled against the same native control d9866fd, 74a336a
- Always rely on Streams, no more byte arrays (at least on Android) 5c4de0d
- Downloading and saving/retrieving from disk is now cancellable 5c4de0d
- Images bundled as AndroidResource can be used now (thanks @petlack !) #38
- Allow override Configuration even after it has been previously initialized. Note that MaxCacheSize and DiskCache cannot be overridden if it was previously initialized #35
- Access to cache result: this is useful to know if image was loaded from Internet, Disk, DiskCache, MemoryCache, ... #34
- Reduced memory usage & OOMs are better handled. #30
Bugs fixed
- Finish callback was not called when image was loaded from MemoryCache #39
- Use WebP.Touch 1.0.1 which fixes a rare crash when freeing WebP images
Changes regarding Xamarin.Forms package
Xamarin.Forms package supports now placeholders and can be used in PCL projects.
https://www.nuget.org/packages/Xamarin.FFImageLoading.Forms/
FFImageLoading 1.1.5
Xamarin.Forms
There is now a Xamarin.Form package that wraps the library: https://www.nuget.org/packages/Xamarin.FFImageLoading.Forms/
Issues fixed
- Handle .NET & Java OOMs and force a garbage collection when it happens: ff619eb
- Use WeakReferences instead of SoftReferences: they are garbage collected sooner 8fb206b and a couple of Bitmap Dispose calls so .NET world is no longer keeping a reference to the Bitmap. Only Java world is aware of it.
- No alpha transparency by default. This becomes a parameter: 6cb8430
It allows saving 50% of memory since 1 pixel is on 2 bytes instead of 4 - No more registering issue with MvvmCross 7b3cf63
FFImageLoading 1.1.4
Improvements
- it is now possible to invalidate the memory cache by calling ImageService.InvalidateMemoryCache()
Issues fixed
- custom configuration passed to ImageService was ignored. Thanks @robbederks b06671c
- the disk cache was not thread safe, locks have been added where it matters. Issue #26
(please note that in the future we might rely on Akavache) - some changes to the way tasks are disposed/cleaned, to avoid null references exceptions
FFImageLoading 1.1.3
Improvements
Performance improvements: skipping paths when not needed.
Automatically nullify callbacks to avoid memory leaks.
Fading change on Android
Android: Fading is no longer using TransitionDrawable.
TransitionDrawable was not reliable when used in RecyclerViews. Furthermore it was less performant than having a simple alpha transition done in Drawable.Draw.
New implementation uses same logic as PicassoDrawable.
Issues fixed
- some scheduler issues
- callbacks invoked too many times and ensure callback are never null
- no more exceptions in console output when a local image is missing
- continuations are always scheduled on UI thread now
FFImageLoading 1.1.2
Not much in this micro release.
Faster image loading
We have now better performances especially when dealing with placeholders. Related commits:
2247205?w=1
a85f090?w=1
Better samples
We now have a RecyclerView sample from @c1rus. You can switch between the 2 samples on Android using standard menu.
FFImageLoading 1.1.1
RecyclerView
This minor release solves an issue when FFImageLoading is used with RecyclerView. #17
RecyclerView detaches cells and can reuse them without calling OnBindViewHolder() due to that we should not cancel request neither nullify drawable if ImageView is detached.
Related commit is f806962?w=1
Minor improvements
- Placeholders are retrieved from memory cache when possible
- Loading an image from a captive network throws now an exception within ModernHttpClient. This is useful otherwise cached data could be wrong
FFImageLoading 1.1
Transformations
Transformations are now possible on iOS and Android using a similar API as in Picasso. Huge thanks to @c1rus for helping here.
ImageService.LoadUrl(urlToImage)
.Transform(new CropCircleTransformation())
.Transform(new GrayscaleTransformation())
.Into(imgDisplay);
Original image, prior to transformation, is cached to disk. Transformed image is cached in memory. If the same image, with same transformations is requested then it will be loaded from memory.
For more information about transformations open our sample project.
Improvements
There is now a Success overload that gives back width and height of the loaded image. #9
ImageService.LoadUrl(urlToImage)
.Success((width, height) =>
{
// your code here...
})
Bugs fixed
- Memory cache was not always used 35fcdb1
- Similar requests were not always deduplicated bca2afe?&w=1 and a17e66c?w=1