An Android library for managing images and the memory they use.
MIT License
Bot releases are hidden (Show)
Published by lambdapioneer over 6 years ago
Version 1.8.1 is a bug-fix release following the main 1.8.0 release. In particular, it addresses the following issues:
Published by zmroczek almost 7 years ago
Version 1.8.0 contains several improvements and bug fixes, including:
SoLoader has been released for a while now, and updated just last week. We've made the decision to add a hard dependency on it and make SoLoader the one and only native code loader that we use in Fresco. API-wise, this means SoLoaderShim
is gone. If you were using some other native loading library (e.g. ReLinker), you can either:
SoLoaderShim
implementation, but this will make your APK size biggerThanks to the following for their pull requests which are included in this release: @Alonexx, @8enet, @zjupure, @bschnack
Published by foghina almost 7 years ago
Published by foghina almost 7 years ago
Version 1.7.0 contains several improvements and bug fixes, including:
Many thanks to the following people who sent pull requests that are included with this release!
Published by erikandre about 7 years ago
Version 1.5.0 contains several improvements and bug fixes, including:
The following improvements were made to the Fresco Showcase app:
Thanks to the following for their pull requests which are included in this release: @a-d-collins, @JuniperPhoton, @DkBai, @IguteChung
Published by kirwan over 7 years ago
Rewritten implementation for animated images (GIFs and animated WebPs) with better performance, particularly when showing multiple GIFs.
This brings improved frame caching and memory management, better control for users of Fresco, new features and some GIF rendering issues have been fixed.
Bitmap.prepareToDraw
to upload bitmaps to the GPU ahead of time (as suggested by @ImagePipelineExperiments
draweeView.setLegacyVisibilityHandlingEnabled(true)
BaseCacheEventListener
that implements CacheEventListener
for convenienceDataSources#waitForFinalResult
IncreasingQualityDataSource
to keep the low res image if the high res request failsThe old animation code has been removed, including AbstractAnimatedDrawable
, AnimatedDrawable
, or AnimatedDrawableSupport
. Change your casts to AnimatedDrawable2
.
We also removed com.facebook.fresco:animated-base-support
since it is no longer needed.
Moved DrawableFactory to com.facebook.imagepipeline.drawable.DrawableFactory.
Please change your imports if you're using custom drawable factories.
Removed this option from ImagePipelineExperiments
as well as related code.
Added void onNewResult(T newResult, @Status int status)
to Consumer
interface.
ImagePipeline#getDataSourceSupplier(ImageRequest, Object, boolean)
EncodedImage#setEncodedCacheKey(CacheKey)
EncodedImage#getEncodedCacheKey()
GenericDraweeHierarchyBuilder#setActualImageMatrix()
GenericDraweeHierarchyBuilder#getActualImageMatrix()
We've updated our Showcase sample app to include more samples and merged other sample apps into it.
There is also a new Kotlin sample app that shows how to use Fresco with Kotlin.
Published by massimocarli over 7 years ago
Version 1.3.0 is mainly a bugfix release.
These two classes have moved package from com.facebook.imagepipeline.memory
to com.facebook.imagepipeline.memory
. If you directly make use of either class, simply update your imports.
The ProducerListener
interface has a new callback: onUltimateProducerReached()
. This identifies the producer which was ultimately responsible for producing the result which was passed back, so can give an idea about how many requests are satisfied from caches.
If you have an implementation of ProducerListener
or RequestListener
you will need to add an implementation of this method.
Thanks to the following for their pull requests which are included in this release: @voiddog, @nesterov-n, @paour and @josephlam1984.
Published by erikandre over 7 years ago
Version 1.2.0 is mainly a bugfix release.
Thanks to the following for their pull requests which are included in this release: @paour, @desmond1121, @caojianfeng, @FtheGFW, @eldk, @lucas34, @angarron
Published by foghina over 7 years ago
Version 1.1.0 is mainly a bugfix release.
There is one breaking change: MemoryUiTrimmable
was removed. See d41bf01 for details.
All commits going into this release: https://github.com/facebook/fresco/compare/v1.0.1...v1.1.0
Thanks to the following for their pull requests which are included in this release: @lucas34
Published by oprisnik almost 8 years ago
Version 1.0.1 is mainly a bugfix release:
You can use UriUtil.getUriForFile(File)
and ImageRequest.fromFile(File)
to create URIs and ImageRequest
s for files.
Thanks to the following for their pull requests which are included in this release:
@angarron, @korDen, @sachins, @pizza, @JoelMarcey
Published by oprisnik almost 8 years ago
The version bump was overdue - the library is stable for a long time. It is used in all the major Facebook apps for years (Facebook, Messenger, Moments, Facebook Lite). On top of that it also powers a lot of non Facebook apps like Twitter, Wikipedia and Vimeo. We were careful with breaking changes for at least a year - so here we go: Version 1.0!
With this release, Fresco allows you to easily add support for more image formats and custom decoders. This is configurable using the ImageDecoderConfig
class. See our sample application for a practical example.
Fresco now allows you to provide it with more semantic information about different versions and URIs of the same image. The concept is called Media Variations and it uses a media id
to group different URIs that refer to the same underlying source image that might be loaded in different sizes. Fresco will try to satisfy a new request by first looking if another already cached image with the same media id
exists and displaying that. See our sample application for a practical example.
We added a Debug overlay for drawees. They can show you how large the underlying image is with respect to the actually drawn screen area. This is helpful in order to screen you app for images that should be loaded at a smaller resolution. You can activate it using the DraweeConfig
parameter of Fresco.initialize(...)
.
If you are manually dealing with CloseableReferences
you might find yourself leaking memory. One can now specify UnclosedReferenceListener
in order to log these leaks or crash in debug builds.
DraweeSpan
and BetterImageSpan
are new Spannable
implementations for displaying Drawee
s within text.
Fresco now longer has a direct dependency on the Android Support library. Instead, it expects certain part of the support library to be provided by the including application. If you do not include the Android Support Library yourself already, you will have to add the following line to your build.gradle
file:
compile "com.android.support:support-core-utils:24.2.1"
With this version we have also removed methods and classes that have been marked as @Deprecated
for some time. For all those cases there are new APIs that are easy to use.
Thanks to the following for their pull requests which are included in this release: @PiotrWpl, @rigdern, @nesterov-n, @sdqhzhm, @kukuhyoniatmoko, @ghassett, @sailaway
Published by kirwan about 8 years ago
This is a patch release to fix a bug in ResizeAndRotateProducer which stopped images appearing in some cases.
There is also a new IterativeBoxBlurPostProcessor for performant blurring of images.
ImageFormat is now a class instead of an enum to allow for future support for custom formats. All default formats can be found in DefaultImageFormats.
Published by lambdapioneer about 8 years ago
PlatformBitmapFactory
now supports more createBitmap
variationsDefaultConfig
allows to set global defaults for ImageRequestsRotationOptions
allow for better control of rotation (either manual or based on EXIF information)In support library 24.2 Google split the library into smaller parts. By upgrading our support library dependency to 24.2.1, we've been able to specify the parts which Fresco needs (which is very little).
We recommend both upgrading your support library dependencies similarly and making sure you explicitly depend on the parts of the support library that you need. This can reduce your APK size.
Thanks to the following for their pull requests which are included in this release: @eldk, @s1rius, @gtpark, @kunny
Published by massimocarli about 8 years ago
ImageDecodeOptions
.Thanks to the following for their pull requests which are included in this release: @lambdapioneer, @ahmedre, @joonho and @KoMinkyu.
Published by lambdapioneer over 8 years ago
animated-*
and okhttp3
modulesImageType
has been renamed to CacheChoice
Thanks to the following for their pull requests which are included in this release: @huangjunkun, @PiotrWpl, @s1rius and @0mok
Published by kirwan over 8 years ago
To make it clearer which options in ImagePipelineConfig
are included for experimental purposes, these have been moved into a separate ImagePipelineExperiments
class. Options here should be expected to be volatile and liable to be changed or removed in future releases. Changing these values from their defaults is not recommended in most cases.
These methods are still available in a chain while building your config so if you had the following before:
ImagePipelineConfig config = ImagePipelineConfig.newBuilder(context)
.setForceSmallCacheThresholdBytes(maxSmallImageBytes)
you can fix it by changing it as follows:
ImagePipelineConfig config = ImagePipelineConfig.newBuilder(context)
.experiment().setForceSmallCacheThresholdBytes(maxSmallImageBytes)
All CacheEventListener
methods now receive a new CacheEvent
object.
If you have a custom implementation you will need to add the extra parameter to each method. In the case of onEviction()
the old parameters have been replaced so you will also need to extract the values from the event if you are making use of them.
All CacheKeyFactory
methods now receive an extra parameter with the caller context object that can be specified when the image is requested.
If you have a custom implementation you will simply need to add the extra parameter to each method.
It was previously possible to specify multiple backgrounds in a drawee hierarchy. This is still possible but deprecated and if you specify multiple backgrounds these can no longer be rounded.
Thanks to the following for their pull requests which are included in this release: @chethann, @droidekas, @sagartrehan, @froxCZ, @nborodikhin, @Ribesg, @dmitrychistyakov, @plamenko, @szpnygo, @s1rius and @Rexee.
Published by oprisnik over 8 years ago
If you are using animated images (animated GIFs or animated WebPs) you need to add the following dependencies to your Gradle file:
animated GIF support:
compile 'com.facebook.fresco:animated-gif:0.10.0'
animated WebP support:
compile 'com.facebook.fresco:animated-webp:0.10.0'
if you’re using Gingerbread you also need to add:
compile 'com.facebook.fresco:animated-base-support:0.10.0'
If you've been using R.styleable.GenericDraweeView
, you now have to use R.styleable.GenericDraweeHierarchy
instead.
Published by tyronen almost 9 years ago
Breaking change! If you're using webp images below Jelly Bean read this migration guide
Published by tyronen almost 9 years ago
Published by tyronen about 9 years ago