Glide.java revision fc3f03260933d96fae33a43846860f226dd661fe
1d76f655fc29c5b3858d6657f22a5c656c3143767Sam Juddpackage com.bumptech.glide; 2d76f655fc29c5b3858d6657f22a5c656c3143767Sam Judd 30e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Juddimport android.content.ComponentCallbacks2; 4d76f655fc29c5b3858d6657f22a5c656c3143767Sam Juddimport android.content.Context; 50ae32dc10d668a04f9f0484d587aefe5a7210e1cSam Juddimport android.graphics.Bitmap; 677e0200ba76c89177b6ec8c781f4f8f86984989bSam Juddimport android.graphics.drawable.BitmapDrawable; 7b44604067356bb73cae3c910ac0e0044d26974a5Sam Juddimport android.graphics.drawable.Drawable; 84e8c4e61ae9f011c1bfccbace9c24aee61865bf0Sam Juddimport android.net.Uri; 9fcd787c911d5fbca2a34ff0963d4665543a03275Sam Juddimport android.os.ParcelFileDescriptor; 10e9498d0b46d4c79410968eb11c332c42c9be7ec0Sam Juddimport android.util.Log; 11b44604067356bb73cae3c910ac0e0044d26974a5Sam Juddimport android.view.View; 12d3bd0a915d197e08dc7d2c7cf97fb0ee77049f51Sam Juddimport android.widget.ImageView; 1329f3a82eaaf784c3722e7673b6ea6acff9449a4dSam Juddimport com.android.volley.RequestQueue; 14127f265355747f88a7ef0f5c73a2e2789f05efc3Sam Juddimport com.bumptech.glide.load.engine.Engine; 15127f265355747f88a7ef0f5c73a2e2789f05efc3Sam Juddimport com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool; 16127f265355747f88a7ef0f5c73a2e2789f05efc3Sam Juddimport com.bumptech.glide.load.engine.cache.DiskCache; 17127f265355747f88a7ef0f5c73a2e2789f05efc3Sam Juddimport com.bumptech.glide.load.engine.cache.MemoryCache; 189fc12334a7d14347cd6951d0653264b2597bd3a0Sam Juddimport com.bumptech.glide.load.model.GenericLoaderFactory; 19127f265355747f88a7ef0f5c73a2e2789f05efc3Sam Juddimport com.bumptech.glide.load.model.GlideUrl; 20dbb67f826b0e76645c809be6d589e9dcb8271324Sam Juddimport com.bumptech.glide.load.model.ImageVideoWrapper; 219fc12334a7d14347cd6951d0653264b2597bd3a0Sam Juddimport com.bumptech.glide.load.model.ModelLoader; 229fc12334a7d14347cd6951d0653264b2597bd3a0Sam Juddimport com.bumptech.glide.load.model.ModelLoaderFactory; 239fc12334a7d14347cd6951d0653264b2597bd3a0Sam Juddimport com.bumptech.glide.load.model.file_descriptor.FileDescriptorFileLoader; 249fc12334a7d14347cd6951d0653264b2597bd3a0Sam Juddimport com.bumptech.glide.load.model.file_descriptor.FileDescriptorModelLoader; 259fc12334a7d14347cd6951d0653264b2597bd3a0Sam Juddimport com.bumptech.glide.load.model.file_descriptor.FileDescriptorResourceLoader; 269fc12334a7d14347cd6951d0653264b2597bd3a0Sam Juddimport com.bumptech.glide.load.model.file_descriptor.FileDescriptorStringLoader; 279fc12334a7d14347cd6951d0653264b2597bd3a0Sam Juddimport com.bumptech.glide.load.model.file_descriptor.FileDescriptorUriLoader; 289fc12334a7d14347cd6951d0653264b2597bd3a0Sam Juddimport com.bumptech.glide.load.model.stream.StreamFileLoader; 299fc12334a7d14347cd6951d0653264b2597bd3a0Sam Juddimport com.bumptech.glide.load.model.stream.StreamModelLoader; 309fc12334a7d14347cd6951d0653264b2597bd3a0Sam Juddimport com.bumptech.glide.load.model.stream.StreamResourceLoader; 319fc12334a7d14347cd6951d0653264b2597bd3a0Sam Juddimport com.bumptech.glide.load.model.stream.StreamStringLoader; 329fc12334a7d14347cd6951d0653264b2597bd3a0Sam Juddimport com.bumptech.glide.load.model.stream.StreamUriLoader; 339fc12334a7d14347cd6951d0653264b2597bd3a0Sam Juddimport com.bumptech.glide.load.model.stream.StreamUrlLoader; 34be9ba784e13d6f8bf390ec0f11fc2600a38b0548Sam Juddimport com.bumptech.glide.load.resource.bitmap.FileDescriptorBitmapDataLoadProvider; 35be9ba784e13d6f8bf390ec0f11fc2600a38b0548Sam Juddimport com.bumptech.glide.load.resource.bitmap.ImageVideoDataLoadProvider; 36be9ba784e13d6f8bf390ec0f11fc2600a38b0548Sam Juddimport com.bumptech.glide.load.resource.bitmap.StreamBitmapDataLoadProvider; 37be9ba784e13d6f8bf390ec0f11fc2600a38b0548Sam Juddimport com.bumptech.glide.load.resource.gif.GifDataLoadProvider; 38fc3f03260933d96fae33a43846860f226dd661feSam Juddimport com.bumptech.glide.load.resource.gifbitmap.GifBitmapWrapper; 39be9ba784e13d6f8bf390ec0f11fc2600a38b0548Sam Juddimport com.bumptech.glide.load.resource.gifbitmap.ImageVideoGifDataLoadProvider; 40be9ba784e13d6f8bf390ec0f11fc2600a38b0548Sam Juddimport com.bumptech.glide.load.resource.transcode.BitmapDrawableTranscoder; 41be9ba784e13d6f8bf390ec0f11fc2600a38b0548Sam Juddimport com.bumptech.glide.load.resource.transcode.GifBitmapDrawableTranscoder; 42be9ba784e13d6f8bf390ec0f11fc2600a38b0548Sam Juddimport com.bumptech.glide.load.resource.transcode.ResourceTranscoder; 43be9ba784e13d6f8bf390ec0f11fc2600a38b0548Sam Juddimport com.bumptech.glide.load.resource.transcode.TranscoderFactory; 4495800ddedeb8ed0390310ff80a68d3d0eeef00baSam Juddimport com.bumptech.glide.provider.DataLoadProviderFactory; 459fc12334a7d14347cd6951d0653264b2597bd3a0Sam Juddimport com.bumptech.glide.request.Request; 46785dc5ee71beeb3ebd77ea73b313eeaf057ae112Sam Juddimport com.bumptech.glide.request.target.ImageViewTargetFactory; 479fc12334a7d14347cd6951d0653264b2597bd3a0Sam Juddimport com.bumptech.glide.request.target.Target; 489fc12334a7d14347cd6951d0653264b2597bd3a0Sam Juddimport com.bumptech.glide.request.target.ViewTarget; 492d923581ee57592181845aa98231eec988fab9f6Sam Juddimport com.bumptech.glide.volley.VolleyUrlLoader; 50d76f655fc29c5b3858d6657f22a5c656c3143767Sam Judd 51d76f655fc29c5b3858d6657f22a5c656c3143767Sam Juddimport java.io.File; 520ae32dc10d668a04f9f0484d587aefe5a7210e1cSam Juddimport java.io.InputStream; 53d76f655fc29c5b3858d6657f22a5c656c3143767Sam Juddimport java.net.URL; 5478790c322a30ac2e62498b79bdc965832bf2342dSam Judd 55d76f655fc29c5b3858d6657f22a5c656c3143767Sam Judd/** 5644e0516ee31912216c9e668c255f2d5baf86ac6dSam Judd * A singleton to present a simple static interface for building requests with {@link BitmapRequestBuilder} and maintaining 570e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd * an {@link Engine}, {@link BitmapPool}, {@link DiskCache} and {@link MemoryCache}. 5856e62046cf9e1bd2d341b6455a9b81b5757e269cSam Judd * 59058ef77ccc7fd40a80a2da72dc97695c7dda2c0bSam Judd * <p> 6056e62046cf9e1bd2d341b6455a9b81b5757e269cSam Judd * Note - This class is not thread safe. 61058ef77ccc7fd40a80a2da72dc97695c7dda2c0bSam Judd * </p> 62d76f655fc29c5b3858d6657f22a5c656c3143767Sam Judd */ 63d76f655fc29c5b3858d6657f22a5c656c3143767Sam Juddpublic class Glide { 640e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd // 250 MB 650e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd static final int DEFAULT_DISK_CACHE_SIZE = 250 * 1024 * 1024; 660e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd 670e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd private static final String DEFAULT_DISK_CACHE_DIR = "image_manager_disk_cache"; 68e9498d0b46d4c79410968eb11c332c42c9be7ec0Sam Judd private static final String TAG = "Glide"; 6929f3a82eaaf784c3722e7673b6ea6acff9449a4dSam Judd private static Glide GLIDE; 700e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd 71c95a13d712f57271047e467d367e1145517b0c2aSam Judd private final GenericLoaderFactory loaderFactory = new GenericLoaderFactory(); 7229f3a82eaaf784c3722e7673b6ea6acff9449a4dSam Judd private final RequestQueue requestQueue; 73b215b51a0ba86c2db14bd735cc0207cf3f1c7cd8Sam Judd private final Engine engine; 7427eb05702fd4531d6974640c62df1d569629edb6Sam Judd private final BitmapPool bitmapPool; 750e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd private final MemoryCache memoryCache; 7695800ddedeb8ed0390310ff80a68d3d0eeef00baSam Judd private final ImageViewTargetFactory imageViewTargetFactory = new ImageViewTargetFactory(); 7795800ddedeb8ed0390310ff80a68d3d0eeef00baSam Judd private final TranscoderFactory transcoderFactory = new TranscoderFactory(); 7895800ddedeb8ed0390310ff80a68d3d0eeef00baSam Judd private final DataLoadProviderFactory dataLoadProviderFactory; 790e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd 800e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd /** 810e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd * Try to get the external cache directory if available and default to the internal. Use a default name for the 820e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd * cache directory if no name is provided 830e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd * 840e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd * @param context A context 850e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd * @return A File representing the default disk cache directory 860e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd */ 870e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd public static File getPhotoCacheDir(Context context) { 880e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd return getPhotoCacheDir(context, DEFAULT_DISK_CACHE_DIR); 890e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd } 900e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd 910e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd /** 920e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd * Try to get the external cache directory if available and default to the internal. Use a default name for the 930e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd * cache directory if no name is provided 940e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd * 950e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd * @param context A context 960e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd * @param cacheName The name of the subdirectory in which to store the cache 970e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd * @return A File representing the default disk cache directory 980e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd */ 990e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd @SuppressWarnings("ResultOfMethodCallIgnored") 1000e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd public static File getPhotoCacheDir(Context context, String cacheName) { 1010e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd File cacheDir = context.getCacheDir(); 1020e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd if (cacheDir != null) { 1030e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd File result = new File(cacheDir, cacheName); 1040e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd result.mkdirs(); 1050e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd return result; 1060e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd } 1070e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd if (Log.isLoggable(TAG, Log.ERROR)) { 1080e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd Log.e(TAG, "default disk cache dir is null"); 1090e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd } 1100e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd return null; 1110e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd } 112d76f655fc29c5b3858d6657f22a5c656c3143767Sam Judd 11356e62046cf9e1bd2d341b6455a9b81b5757e269cSam Judd /** 11456e62046cf9e1bd2d341b6455a9b81b5757e269cSam Judd * Get the singleton. 11556e62046cf9e1bd2d341b6455a9b81b5757e269cSam Judd * 11656e62046cf9e1bd2d341b6455a9b81b5757e269cSam Judd * @return the singleton 11756e62046cf9e1bd2d341b6455a9b81b5757e269cSam Judd */ 11829f3a82eaaf784c3722e7673b6ea6acff9449a4dSam Judd public static Glide get(Context context) { 11929f3a82eaaf784c3722e7673b6ea6acff9449a4dSam Judd if (GLIDE == null) { 12029f3a82eaaf784c3722e7673b6ea6acff9449a4dSam Judd GLIDE = new GlideBuilder(context).createGlide(); 12129f3a82eaaf784c3722e7673b6ea6acff9449a4dSam Judd } 12229f3a82eaaf784c3722e7673b6ea6acff9449a4dSam Judd 123d76f655fc29c5b3858d6657f22a5c656c3143767Sam Judd return GLIDE; 124d76f655fc29c5b3858d6657f22a5c656c3143767Sam Judd } 125d76f655fc29c5b3858d6657f22a5c656c3143767Sam Judd 1269f0bef767aca7d0e40f9eba8c1ea52159bed2091Sam Judd /** 1279f0bef767aca7d0e40f9eba8c1ea52159bed2091Sam Judd * Returns false if the {@link Glide} singleton has not yet been created and can therefore be setup using 1289f0bef767aca7d0e40f9eba8c1ea52159bed2091Sam Judd * {@link #setup(GlideBuilder)}. 1299f0bef767aca7d0e40f9eba8c1ea52159bed2091Sam Judd * 1309f0bef767aca7d0e40f9eba8c1ea52159bed2091Sam Judd * @see #setup(GlideBuilder) 1319f0bef767aca7d0e40f9eba8c1ea52159bed2091Sam Judd */ 13229f3a82eaaf784c3722e7673b6ea6acff9449a4dSam Judd public static boolean isSetup() { 13329f3a82eaaf784c3722e7673b6ea6acff9449a4dSam Judd return GLIDE != null; 13429f3a82eaaf784c3722e7673b6ea6acff9449a4dSam Judd } 13529f3a82eaaf784c3722e7673b6ea6acff9449a4dSam Judd 1369f0bef767aca7d0e40f9eba8c1ea52159bed2091Sam Judd /** 1379f0bef767aca7d0e40f9eba8c1ea52159bed2091Sam Judd * Creates the {@link Glide} singleton using the given builder. Can be used to set options like cache sizes and 1389f0bef767aca7d0e40f9eba8c1ea52159bed2091Sam Judd * locations. 1399f0bef767aca7d0e40f9eba8c1ea52159bed2091Sam Judd * 1409f0bef767aca7d0e40f9eba8c1ea52159bed2091Sam Judd * @see #isSetup() 1419f0bef767aca7d0e40f9eba8c1ea52159bed2091Sam Judd * 1429f0bef767aca7d0e40f9eba8c1ea52159bed2091Sam Judd * @param builder The builder. 1439f0bef767aca7d0e40f9eba8c1ea52159bed2091Sam Judd * @throws IllegalArgumentException if the Glide singleton has already been created. 1449f0bef767aca7d0e40f9eba8c1ea52159bed2091Sam Judd */ 14529f3a82eaaf784c3722e7673b6ea6acff9449a4dSam Judd public static void setup(GlideBuilder builder) { 1460e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd if (isSetup()) { 14729f3a82eaaf784c3722e7673b6ea6acff9449a4dSam Judd throw new IllegalArgumentException("Glide is already setup, check with isSetup() first"); 14829f3a82eaaf784c3722e7673b6ea6acff9449a4dSam Judd } 14929f3a82eaaf784c3722e7673b6ea6acff9449a4dSam Judd 15029f3a82eaaf784c3722e7673b6ea6acff9449a4dSam Judd GLIDE = builder.createGlide(); 15129f3a82eaaf784c3722e7673b6ea6acff9449a4dSam Judd } 15229f3a82eaaf784c3722e7673b6ea6acff9449a4dSam Judd 153b215b51a0ba86c2db14bd735cc0207cf3f1c7cd8Sam Judd static void tearDown() { 154b215b51a0ba86c2db14bd735cc0207cf3f1c7cd8Sam Judd GLIDE = null; 155b215b51a0ba86c2db14bd735cc0207cf3f1c7cd8Sam Judd } 156b215b51a0ba86c2db14bd735cc0207cf3f1c7cd8Sam Judd 15777e0200ba76c89177b6ec8c781f4f8f86984989bSam Judd Glide(Engine engine, RequestQueue requestQueue, MemoryCache memoryCache, BitmapPool bitmapPool, 158be9ba784e13d6f8bf390ec0f11fc2600a38b0548Sam Judd Context context) { 159b215b51a0ba86c2db14bd735cc0207cf3f1c7cd8Sam Judd this.engine = engine; 16029f3a82eaaf784c3722e7673b6ea6acff9449a4dSam Judd this.requestQueue = requestQueue; 16127eb05702fd4531d6974640c62df1d569629edb6Sam Judd this.bitmapPool = bitmapPool; 1620e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd this.memoryCache = memoryCache; 163c8c79d03924a757c29bbe7df5bc07b3cf8e02a83Sam Judd 16495800ddedeb8ed0390310ff80a68d3d0eeef00baSam Judd dataLoadProviderFactory = new DataLoadProviderFactory(); 16595800ddedeb8ed0390310ff80a68d3d0eeef00baSam Judd dataLoadProviderFactory.register(InputStream.class, Bitmap.class, new StreamBitmapDataLoadProvider(bitmapPool)); 166be9ba784e13d6f8bf390ec0f11fc2600a38b0548Sam Judd 16795800ddedeb8ed0390310ff80a68d3d0eeef00baSam Judd dataLoadProviderFactory.register(ParcelFileDescriptor.class, Bitmap.class, 16895800ddedeb8ed0390310ff80a68d3d0eeef00baSam Judd new FileDescriptorBitmapDataLoadProvider(bitmapPool)); 169be9ba784e13d6f8bf390ec0f11fc2600a38b0548Sam Judd 170be9ba784e13d6f8bf390ec0f11fc2600a38b0548Sam Judd ImageVideoDataLoadProvider imageVideoDataLoadProvider = new ImageVideoDataLoadProvider(bitmapPool); 171be9ba784e13d6f8bf390ec0f11fc2600a38b0548Sam Judd dataLoadProviderFactory.register(ImageVideoWrapper.class, Bitmap.class, imageVideoDataLoadProvider); 172be9ba784e13d6f8bf390ec0f11fc2600a38b0548Sam Judd 173be9ba784e13d6f8bf390ec0f11fc2600a38b0548Sam Judd GifDataLoadProvider gifDataLoadProvider = new GifDataLoadProvider(context, bitmapPool); 174fc3f03260933d96fae33a43846860f226dd661feSam Judd dataLoadProviderFactory.register(ImageVideoWrapper.class, GifBitmapWrapper.class, 175be9ba784e13d6f8bf390ec0f11fc2600a38b0548Sam Judd new ImageVideoGifDataLoadProvider(imageVideoDataLoadProvider, gifDataLoadProvider)); 176c8c79d03924a757c29bbe7df5bc07b3cf8e02a83Sam Judd 177896af010afa2c88aa6b63fc80c1a412357caed97Sam Judd register(File.class, ParcelFileDescriptor.class, new FileDescriptorFileLoader.Factory()); 178896af010afa2c88aa6b63fc80c1a412357caed97Sam Judd register(File.class, InputStream.class, new StreamFileLoader.Factory()); 179896af010afa2c88aa6b63fc80c1a412357caed97Sam Judd register(Integer.class, ParcelFileDescriptor.class, new FileDescriptorResourceLoader.Factory()); 180896af010afa2c88aa6b63fc80c1a412357caed97Sam Judd register(Integer.class, InputStream.class, new StreamResourceLoader.Factory()); 181896af010afa2c88aa6b63fc80c1a412357caed97Sam Judd register(String.class, ParcelFileDescriptor.class, new FileDescriptorStringLoader.Factory()); 182896af010afa2c88aa6b63fc80c1a412357caed97Sam Judd register(String.class, InputStream.class, new StreamStringLoader.Factory()); 183896af010afa2c88aa6b63fc80c1a412357caed97Sam Judd register(Uri.class, ParcelFileDescriptor.class, new FileDescriptorUriLoader.Factory()); 184896af010afa2c88aa6b63fc80c1a412357caed97Sam Judd register(Uri.class, InputStream.class, new StreamUriLoader.Factory()); 185c5ba6fb229c79a6f90e9c430f11d02b43bfdc247Sam Judd register(URL.class, InputStream.class, new StreamUrlLoader.Factory()); 186c5ba6fb229c79a6f90e9c430f11d02b43bfdc247Sam Judd register(GlideUrl.class, InputStream.class, new VolleyUrlLoader.Factory(requestQueue)); 18777e0200ba76c89177b6ec8c781f4f8f86984989bSam Judd 18895800ddedeb8ed0390310ff80a68d3d0eeef00baSam Judd transcoderFactory.register(Bitmap.class, BitmapDrawable.class, 189be9ba784e13d6f8bf390ec0f11fc2600a38b0548Sam Judd new BitmapDrawableTranscoder(context.getResources(), bitmapPool)); 190fc3f03260933d96fae33a43846860f226dd661feSam Judd transcoderFactory.register(GifBitmapWrapper.class, Drawable.class, 191be9ba784e13d6f8bf390ec0f11fc2600a38b0548Sam Judd new GifBitmapDrawableTranscoder(context)); 192e13dcedf144c02927c122fae32179f460b21fef5Sam Judd } 193e13dcedf144c02927c122fae32179f460b21fef5Sam Judd 194be9ba784e13d6f8bf390ec0f11fc2600a38b0548Sam Judd public BitmapPool getBitmapPool() { 195d3bd0a915d197e08dc7d2c7cf97fb0ee77049f51Sam Judd return bitmapPool; 196d3bd0a915d197e08dc7d2c7cf97fb0ee77049f51Sam Judd } 197d3bd0a915d197e08dc7d2c7cf97fb0ee77049f51Sam Judd 198be9ba784e13d6f8bf390ec0f11fc2600a38b0548Sam Judd public MemoryCache getMemoryCache() { 199be9ba784e13d6f8bf390ec0f11fc2600a38b0548Sam Judd return memoryCache; 200be9ba784e13d6f8bf390ec0f11fc2600a38b0548Sam Judd } 201be9ba784e13d6f8bf390ec0f11fc2600a38b0548Sam Judd 202d3bd0a915d197e08dc7d2c7cf97fb0ee77049f51Sam Judd <Z, R> ResourceTranscoder<Z, R> buildTranscoder(Class<Z> decodedClass, Class<R> transcodedClass) { 203d3bd0a915d197e08dc7d2c7cf97fb0ee77049f51Sam Judd return transcoderFactory.get(decodedClass, transcodedClass); 204d3bd0a915d197e08dc7d2c7cf97fb0ee77049f51Sam Judd } 205d3bd0a915d197e08dc7d2c7cf97fb0ee77049f51Sam Judd 206d3bd0a915d197e08dc7d2c7cf97fb0ee77049f51Sam Judd <T, Z> DataLoadProvider<T, Z> buildDataProvider(Class<T> dataClass, Class<Z> decodedClass) { 207d3bd0a915d197e08dc7d2c7cf97fb0ee77049f51Sam Judd return dataLoadProviderFactory.get(dataClass, decodedClass); 208d3bd0a915d197e08dc7d2c7cf97fb0ee77049f51Sam Judd } 209d3bd0a915d197e08dc7d2c7cf97fb0ee77049f51Sam Judd 210d3bd0a915d197e08dc7d2c7cf97fb0ee77049f51Sam Judd <R> Target<R> buildImageViewTarget(ImageView imageView, Class<R> transcodedClass) { 211d3bd0a915d197e08dc7d2c7cf97fb0ee77049f51Sam Judd return imageViewTargetFactory.buildTarget(imageView, transcodedClass); 212d3bd0a915d197e08dc7d2c7cf97fb0ee77049f51Sam Judd } 213d3bd0a915d197e08dc7d2c7cf97fb0ee77049f51Sam Judd 214d3bd0a915d197e08dc7d2c7cf97fb0ee77049f51Sam Judd Engine getEngine() { 215d3bd0a915d197e08dc7d2c7cf97fb0ee77049f51Sam Judd return engine; 216d3bd0a915d197e08dc7d2c7cf97fb0ee77049f51Sam Judd } 217d3bd0a915d197e08dc7d2c7cf97fb0ee77049f51Sam Judd 2180e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd private GenericLoaderFactory getLoaderFactory() { 2190e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd return loaderFactory; 2200e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd } 2210e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd 222d76f655fc29c5b3858d6657f22a5c656c3143767Sam Judd /** 22329f3a82eaaf784c3722e7673b6ea6acff9449a4dSam Judd * Returns the {@link RequestQueue} Glide is using to fetch images over http/https. 224d76f655fc29c5b3858d6657f22a5c656c3143767Sam Judd */ 22529f3a82eaaf784c3722e7673b6ea6acff9449a4dSam Judd public RequestQueue getRequestQueue() { 22629f3a82eaaf784c3722e7673b6ea6acff9449a4dSam Judd return requestQueue; 227d76f655fc29c5b3858d6657f22a5c656c3143767Sam Judd } 228d76f655fc29c5b3858d6657f22a5c656c3143767Sam Judd 229d76f655fc29c5b3858d6657f22a5c656c3143767Sam Judd /** 2300e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd * Clears as much memory as possible. 2310e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd * 2320e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd * @see ComponentCallbacks2#onLowMemory() 2330e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd */ 2340e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd public void clearMemory() { 2350e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd bitmapPool.clearMemory(); 2360e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd memoryCache.clearMemory(); 2370e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd } 2380e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd 2390e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd /** 2400e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd * Clears some memory with the exact amount depending on the given level. 2410e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd * 2420e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd * @see ComponentCallbacks2#onTrimMemory(int) 2430e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd */ 2440e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd public void trimMemory(int level) { 2450e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd bitmapPool.trimMemory(level); 2460e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd memoryCache.trimMemory(level); 2470e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd } 2480e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd 2490e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd /** 2507050d58f72f666896e7f1ad6a27faafb0230fd37Sam Judd * Adjusts Glide's current and maximum memory usage based on the given {@link MemoryCategory}. 2517050d58f72f666896e7f1ad6a27faafb0230fd37Sam Judd * 2527050d58f72f666896e7f1ad6a27faafb0230fd37Sam Judd * <p> 2537050d58f72f666896e7f1ad6a27faafb0230fd37Sam Judd * The default {@link MemoryCategory} is {@link MemoryCategory#NORMAL}. {@link MemoryCategory#HIGH} increases 2547050d58f72f666896e7f1ad6a27faafb0230fd37Sam Judd * Glide's maximum memory usage by up to 50% and {@link MemoryCategory#LOW} decreases Glide's maximum memory 2557050d58f72f666896e7f1ad6a27faafb0230fd37Sam Judd * usage by 50%. This method should be used to temporarily increase or decrease memory useage for a single 2567050d58f72f666896e7f1ad6a27faafb0230fd37Sam Judd * Activity or part of the app. Use {@link GlideBuilder#setMemoryCache(MemoryCache)} to set a permanent 2577050d58f72f666896e7f1ad6a27faafb0230fd37Sam Judd * memory size if you want to change the default. 2587050d58f72f666896e7f1ad6a27faafb0230fd37Sam Judd * </p> 2597050d58f72f666896e7f1ad6a27faafb0230fd37Sam Judd */ 2607050d58f72f666896e7f1ad6a27faafb0230fd37Sam Judd public void setMemoryCategory(MemoryCategory memoryCategory) { 2617050d58f72f666896e7f1ad6a27faafb0230fd37Sam Judd memoryCache.setSizeMultiplier(memoryCategory.getMultiplier()); 2627050d58f72f666896e7f1ad6a27faafb0230fd37Sam Judd bitmapPool.setSizeMultiplier(memoryCategory.getMultiplier()); 2637050d58f72f666896e7f1ad6a27faafb0230fd37Sam Judd } 2647050d58f72f666896e7f1ad6a27faafb0230fd37Sam Judd 2657050d58f72f666896e7f1ad6a27faafb0230fd37Sam Judd /** 266b8963a023ceb009cbf7f73a4506e7af7e693a219Sam Judd * Cancel any pending loads Glide may have for the target and free any resources (such as {@link Bitmap}s) that may 267b8963a023ceb009cbf7f73a4506e7af7e693a219Sam Judd * have been loaded for the target so they may be reused. 268b8963a023ceb009cbf7f73a4506e7af7e693a219Sam Judd * 269b8963a023ceb009cbf7f73a4506e7af7e693a219Sam Judd * @param target The Target to cancel loads for. 270b8963a023ceb009cbf7f73a4506e7af7e693a219Sam Judd */ 271b8963a023ceb009cbf7f73a4506e7af7e693a219Sam Judd public static void clear(Target target) { 272b8963a023ceb009cbf7f73a4506e7af7e693a219Sam Judd Request request = target.getRequest(); 273b8963a023ceb009cbf7f73a4506e7af7e693a219Sam Judd if (request!= null) { 274b8963a023ceb009cbf7f73a4506e7af7e693a219Sam Judd request.clear(); 275b8963a023ceb009cbf7f73a4506e7af7e693a219Sam Judd } 276b8963a023ceb009cbf7f73a4506e7af7e693a219Sam Judd } 277b8963a023ceb009cbf7f73a4506e7af7e693a219Sam Judd 278b8963a023ceb009cbf7f73a4506e7af7e693a219Sam Judd /** 279b8963a023ceb009cbf7f73a4506e7af7e693a219Sam Judd * Cancel any pending loads Glide may have for the view and free any resources that may have been loaded for the 280b8963a023ceb009cbf7f73a4506e7af7e693a219Sam Judd * view. 281b8963a023ceb009cbf7f73a4506e7af7e693a219Sam Judd * 282b8963a023ceb009cbf7f73a4506e7af7e693a219Sam Judd * <p> 283b8963a023ceb009cbf7f73a4506e7af7e693a219Sam Judd * Note that this will only work if {@link View#setTag(Object)} is not called on this view outside of Glide. 284b8963a023ceb009cbf7f73a4506e7af7e693a219Sam Judd * </p> 285b8963a023ceb009cbf7f73a4506e7af7e693a219Sam Judd * 286b8963a023ceb009cbf7f73a4506e7af7e693a219Sam Judd * @see #clear(Target). 287b8963a023ceb009cbf7f73a4506e7af7e693a219Sam Judd * 288b8963a023ceb009cbf7f73a4506e7af7e693a219Sam Judd * @param view The view to cancel loads and free resources for. 289b8963a023ceb009cbf7f73a4506e7af7e693a219Sam Judd * @throws IllegalArgumentException if an object other than Glide's metadata is set as the view's tag. 290b8963a023ceb009cbf7f73a4506e7af7e693a219Sam Judd */ 291b8963a023ceb009cbf7f73a4506e7af7e693a219Sam Judd public static void clear(View view) { 292b8963a023ceb009cbf7f73a4506e7af7e693a219Sam Judd Target viewTarget = new ClearTarget(view); 293b8963a023ceb009cbf7f73a4506e7af7e693a219Sam Judd clear(viewTarget); 294b8963a023ceb009cbf7f73a4506e7af7e693a219Sam Judd } 295b8963a023ceb009cbf7f73a4506e7af7e693a219Sam Judd 296b8963a023ceb009cbf7f73a4506e7af7e693a219Sam Judd /** 297da9073795a5ca847f17d39cda1d964cfc1fa25dcSam Judd * Use the given factory to build a {@link ModelLoader} for models of the given class. Generally the best use of 298da9073795a5ca847f17d39cda1d964cfc1fa25dcSam Judd * this method is to replace one of the default factories or add an implementation for other similar low level 299d3bd0a915d197e08dc7d2c7cf97fb0ee77049f51Sam Judd * models. Typically the {@link ModelRequest#using(StreamModelLoader)} or 300d3bd0a915d197e08dc7d2c7cf97fb0ee77049f51Sam Judd * {@link ModelRequest#using(FileDescriptorModelLoader)} syntax is preferred because it directly links the model 301031fed2e364feacf89dfb904a3a0de98b050fdc4Sam Judd * with the ModelLoader being used to load it. Any factory replaced by the given factory will have its 302031fed2e364feacf89dfb904a3a0de98b050fdc4Sam Judd * {@link ModelLoaderFactory#teardown()}} method called. 303633966f8087dc4ef5e52ef0f559ec8090fbbc945Sam Judd * 304058ef77ccc7fd40a80a2da72dc97695c7dda2c0bSam Judd * <p> 3059c04fc7a0c1d5c9e8f54660b0f954f754100f250Sam Judd * Note - If a factory already exists for the given class, it will be replaced. If that factory is not being 3060ae32dc10d668a04f9f0484d587aefe5a7210e1cSam Judd * used for any other model class, {@link ModelLoaderFactory#teardown()} 3079c04fc7a0c1d5c9e8f54660b0f954f754100f250Sam Judd * will be called. 3089c04fc7a0c1d5c9e8f54660b0f954f754100f250Sam Judd * </p> 3099c04fc7a0c1d5c9e8f54660b0f954f754100f250Sam Judd * 310c95a13d712f57271047e467d367e1145517b0c2aSam Judd * <p> 311c95a13d712f57271047e467d367e1145517b0c2aSam Judd * Note - The factory must not be an anonymous inner class of an Activity or another object that cannot be 312c95a13d712f57271047e467d367e1145517b0c2aSam Judd * retained statically. 313c95a13d712f57271047e467d367e1145517b0c2aSam Judd * </p> 314c95a13d712f57271047e467d367e1145517b0c2aSam Judd * 315d3bd0a915d197e08dc7d2c7cf97fb0ee77049f51Sam Judd * @see ModelRequest#using(FileDescriptorModelLoader) 316d3bd0a915d197e08dc7d2c7cf97fb0ee77049f51Sam Judd * @see ModelRequest#using(StreamModelLoader) 317896af010afa2c88aa6b63fc80c1a412357caed97Sam Judd * 318896af010afa2c88aa6b63fc80c1a412357caed97Sam Judd * @param modelClass The model class. 319896af010afa2c88aa6b63fc80c1a412357caed97Sam Judd * @param resourceClass The resource class the model loader will translate the model type into. 320896af010afa2c88aa6b63fc80c1a412357caed97Sam Judd * @param factory The factory to use. 321896af010afa2c88aa6b63fc80c1a412357caed97Sam Judd * @param <T> The type of the model. 322896af010afa2c88aa6b63fc80c1a412357caed97Sam Judd * @param <Y> the type of the resource. 3239c04fc7a0c1d5c9e8f54660b0f954f754100f250Sam Judd */ 324896af010afa2c88aa6b63fc80c1a412357caed97Sam Judd public <T, Y> void register(Class<T> modelClass, Class<Y> resourceClass, ModelLoaderFactory<T, Y> factory) { 325896af010afa2c88aa6b63fc80c1a412357caed97Sam Judd ModelLoaderFactory<T, Y> removed = loaderFactory.register(modelClass, resourceClass, factory); 3269c04fc7a0c1d5c9e8f54660b0f954f754100f250Sam Judd if (removed != null) { 3279c04fc7a0c1d5c9e8f54660b0f954f754100f250Sam Judd removed.teardown(); 3289c04fc7a0c1d5c9e8f54660b0f954f754100f250Sam Judd } 3299c04fc7a0c1d5c9e8f54660b0f954f754100f250Sam Judd } 3309c04fc7a0c1d5c9e8f54660b0f954f754100f250Sam Judd 3319c04fc7a0c1d5c9e8f54660b0f954f754100f250Sam Judd /** 332031fed2e364feacf89dfb904a3a0de98b050fdc4Sam Judd * Removes any {@link ModelLoaderFactory} registered for the given model and resource classes if one exists. If a 333031fed2e364feacf89dfb904a3a0de98b050fdc4Sam Judd * {@link ModelLoaderFactory} is removed, its {@link ModelLoaderFactory#teardown()}} method will be called. 334031fed2e364feacf89dfb904a3a0de98b050fdc4Sam Judd * 335031fed2e364feacf89dfb904a3a0de98b050fdc4Sam Judd * @param modelClass The model class. 336031fed2e364feacf89dfb904a3a0de98b050fdc4Sam Judd * @param resourceClass The resource class. 337031fed2e364feacf89dfb904a3a0de98b050fdc4Sam Judd * @param <T> The type of the model. 338031fed2e364feacf89dfb904a3a0de98b050fdc4Sam Judd * @param <Y> The type of the resource. 339031fed2e364feacf89dfb904a3a0de98b050fdc4Sam Judd */ 340031fed2e364feacf89dfb904a3a0de98b050fdc4Sam Judd public <T, Y> void unregister(Class<T> modelClass, Class<Y> resourceClass) { 341031fed2e364feacf89dfb904a3a0de98b050fdc4Sam Judd ModelLoaderFactory<T, Y> removed = loaderFactory.unregister(modelClass, resourceClass); 342031fed2e364feacf89dfb904a3a0de98b050fdc4Sam Judd if (removed != null) { 343031fed2e364feacf89dfb904a3a0de98b050fdc4Sam Judd removed.teardown(); 344031fed2e364feacf89dfb904a3a0de98b050fdc4Sam Judd } 345031fed2e364feacf89dfb904a3a0de98b050fdc4Sam Judd } 346031fed2e364feacf89dfb904a3a0de98b050fdc4Sam Judd 347031fed2e364feacf89dfb904a3a0de98b050fdc4Sam Judd /** 34815df8d073a97cfa2b589b547535a5b055c71bfbbSam Judd * Build a {@link ModelLoader} for the given model class using registered {@link ModelLoaderFactory}s. 3499c04fc7a0c1d5c9e8f54660b0f954f754100f250Sam Judd * 35015df8d073a97cfa2b589b547535a5b055c71bfbbSam Judd * @see #buildModelLoader(Object, Class, Context) 35115df8d073a97cfa2b589b547535a5b055c71bfbbSam Judd * @see #buildStreamModelLoader(Class, Context) 35215df8d073a97cfa2b589b547535a5b055c71bfbbSam Judd * @see #buildFileDescriptorModelLoader(Class, Context) 35315df8d073a97cfa2b589b547535a5b055c71bfbbSam Judd * 35415df8d073a97cfa2b589b547535a5b055c71bfbbSam Judd * @param modelClass The class to get a {@link ModelLoader} for. 35515df8d073a97cfa2b589b547535a5b055c71bfbbSam Judd * @param resourceClass The resource class to get a {@link ModelLoader} for. 35615df8d073a97cfa2b589b547535a5b055c71bfbbSam Judd * @param context Any context. 35715df8d073a97cfa2b589b547535a5b055c71bfbbSam Judd * @param <T> The type of the model. 35815df8d073a97cfa2b589b547535a5b055c71bfbbSam Judd * @param <Y> The type of the resource. 35915df8d073a97cfa2b589b547535a5b055c71bfbbSam Judd * @return A new {@link ModelLoader} for the given model class. 3609c04fc7a0c1d5c9e8f54660b0f954f754100f250Sam Judd */ 3610ba0245a97116b2f2c7bd67213961ac4e2dc3e56Sam Judd public static <T, Y> ModelLoader<T, Y> buildModelLoader(Class<T> modelClass, Class<Y> resourceClass, 3620ba0245a97116b2f2c7bd67213961ac4e2dc3e56Sam Judd Context context) { 36315df8d073a97cfa2b589b547535a5b055c71bfbbSam Judd return Glide.get(context).getLoaderFactory().buildModelLoader(modelClass, resourceClass, context); 36415df8d073a97cfa2b589b547535a5b055c71bfbbSam Judd } 36515df8d073a97cfa2b589b547535a5b055c71bfbbSam Judd 36615df8d073a97cfa2b589b547535a5b055c71bfbbSam Judd /** 36715df8d073a97cfa2b589b547535a5b055c71bfbbSam Judd * A convenience method to build a {@link ModelLoader} for a given model object using registered 36815df8d073a97cfa2b589b547535a5b055c71bfbbSam Judd * {@link ModelLoaderFactory}s. 36915df8d073a97cfa2b589b547535a5b055c71bfbbSam Judd * 37015df8d073a97cfa2b589b547535a5b055c71bfbbSam Judd * @see #buildModelLoader(Class, Class, Context) 37115df8d073a97cfa2b589b547535a5b055c71bfbbSam Judd * 37215df8d073a97cfa2b589b547535a5b055c71bfbbSam Judd * @param model A non null model object whose class we will get a {@link ModelLoader} for. 37315df8d073a97cfa2b589b547535a5b055c71bfbbSam Judd * @param resourceClass The resource class to get a {@link ModelLoader} for. 37415df8d073a97cfa2b589b547535a5b055c71bfbbSam Judd * @param context Any context. 37515df8d073a97cfa2b589b547535a5b055c71bfbbSam Judd * @param <T> The type of the model. 37615df8d073a97cfa2b589b547535a5b055c71bfbbSam Judd * @param <Y> The type of the resource. 377e9498d0b46d4c79410968eb11c332c42c9be7ec0Sam Judd * @return A new {@link ModelLoader} for the given model and resource classes, or null if model is null. 37815df8d073a97cfa2b589b547535a5b055c71bfbbSam Judd */ 37915df8d073a97cfa2b589b547535a5b055c71bfbbSam Judd @SuppressWarnings("unchecked") 38015df8d073a97cfa2b589b547535a5b055c71bfbbSam Judd public static <T, Y> ModelLoader<T, Y> buildModelLoader(T model, Class<Y> resourceClass, Context context) { 38115df8d073a97cfa2b589b547535a5b055c71bfbbSam Judd if (model == null) { 382e9498d0b46d4c79410968eb11c332c42c9be7ec0Sam Judd if (Log.isLoggable(TAG, Log.DEBUG)) { 383e9498d0b46d4c79410968eb11c332c42c9be7ec0Sam Judd Log.d(TAG, "Unable to load null model, setting placeholder only"); 384e9498d0b46d4c79410968eb11c332c42c9be7ec0Sam Judd } 385e9498d0b46d4c79410968eb11c332c42c9be7ec0Sam Judd return null; 38615df8d073a97cfa2b589b547535a5b055c71bfbbSam Judd } 38715df8d073a97cfa2b589b547535a5b055c71bfbbSam Judd return buildModelLoader((Class<T>) model.getClass(), resourceClass, context); 3889c04fc7a0c1d5c9e8f54660b0f954f754100f250Sam Judd } 3899c04fc7a0c1d5c9e8f54660b0f954f754100f250Sam Judd 390ebf002122d17f21676230a4499894cc9f103d0b4Sam Judd /** 39115df8d073a97cfa2b589b547535a5b055c71bfbbSam Judd * A method to build a {@link ModelLoader} for the given model that produces {@link InputStream}s using a registered 39215df8d073a97cfa2b589b547535a5b055c71bfbbSam Judd * factory. 393ebf002122d17f21676230a4499894cc9f103d0b4Sam Judd * 394ebf002122d17f21676230a4499894cc9f103d0b4Sam Judd * @see #buildModelLoader(Class, Class, android.content.Context) 395ebf002122d17f21676230a4499894cc9f103d0b4Sam Judd */ 396ebf002122d17f21676230a4499894cc9f103d0b4Sam Judd public static <T> ModelLoader<T, InputStream> buildStreamModelLoader(Class<T> modelClass, Context context) { 397ebf002122d17f21676230a4499894cc9f103d0b4Sam Judd return buildModelLoader(modelClass, InputStream.class, context); 398ebf002122d17f21676230a4499894cc9f103d0b4Sam Judd } 399ebf002122d17f21676230a4499894cc9f103d0b4Sam Judd 400ebf002122d17f21676230a4499894cc9f103d0b4Sam Judd /** 40115df8d073a97cfa2b589b547535a5b055c71bfbbSam Judd * A method to build a {@link ModelLoader} for the given model that produces {@link InputStream}s using a registered 40215df8d073a97cfa2b589b547535a5b055c71bfbbSam Judd * factory. 40315df8d073a97cfa2b589b547535a5b055c71bfbbSam Judd * 40415df8d073a97cfa2b589b547535a5b055c71bfbbSam Judd * @see #buildModelLoader(Object, Class, Context) 40515df8d073a97cfa2b589b547535a5b055c71bfbbSam Judd */ 40615df8d073a97cfa2b589b547535a5b055c71bfbbSam Judd public static <T> ModelLoader<T, InputStream> buildStreamModelLoader(T model, Context context) { 40715df8d073a97cfa2b589b547535a5b055c71bfbbSam Judd return buildModelLoader(model, InputStream.class, context); 40815df8d073a97cfa2b589b547535a5b055c71bfbbSam Judd } 40915df8d073a97cfa2b589b547535a5b055c71bfbbSam Judd 41015df8d073a97cfa2b589b547535a5b055c71bfbbSam Judd /** 41115df8d073a97cfa2b589b547535a5b055c71bfbbSam Judd * A method to build a {@link ModelLoader} for the given model class that produces 412ebf002122d17f21676230a4499894cc9f103d0b4Sam Judd * {@link ParcelFileDescriptor}s using a registered factory. 413ebf002122d17f21676230a4499894cc9f103d0b4Sam Judd * 414ebf002122d17f21676230a4499894cc9f103d0b4Sam Judd * @see #buildModelLoader(Class, Class, android.content.Context) 415ebf002122d17f21676230a4499894cc9f103d0b4Sam Judd */ 416ebf002122d17f21676230a4499894cc9f103d0b4Sam Judd public static <T> ModelLoader<T, ParcelFileDescriptor> buildFileDescriptorModelLoader(Class<T> modelClass, 417ebf002122d17f21676230a4499894cc9f103d0b4Sam Judd Context context) { 418ebf002122d17f21676230a4499894cc9f103d0b4Sam Judd return buildModelLoader(modelClass, ParcelFileDescriptor.class, context); 419ebf002122d17f21676230a4499894cc9f103d0b4Sam Judd } 420ebf002122d17f21676230a4499894cc9f103d0b4Sam Judd 4218c7ae0d1551752a2ff6260dd807580a90020451eSam Judd /** 42215df8d073a97cfa2b589b547535a5b055c71bfbbSam Judd * A method to build a {@link ModelLoader} for the given model class that produces 42315df8d073a97cfa2b589b547535a5b055c71bfbbSam Judd * {@link ParcelFileDescriptor}s using a registered factory. 42415df8d073a97cfa2b589b547535a5b055c71bfbbSam Judd * 42515df8d073a97cfa2b589b547535a5b055c71bfbbSam Judd * @see #buildModelLoader(Object, Class, android.content.Context) 42615df8d073a97cfa2b589b547535a5b055c71bfbbSam Judd */ 42715df8d073a97cfa2b589b547535a5b055c71bfbbSam Judd public static <T> ModelLoader<T, ParcelFileDescriptor> buildFileDescriptorModelLoader(T model, Context context) { 42815df8d073a97cfa2b589b547535a5b055c71bfbbSam Judd return buildModelLoader(model, ParcelFileDescriptor.class, context); 42915df8d073a97cfa2b589b547535a5b055c71bfbbSam Judd } 43015df8d073a97cfa2b589b547535a5b055c71bfbbSam Judd 43115df8d073a97cfa2b589b547535a5b055c71bfbbSam Judd /** 4328c7ae0d1551752a2ff6260dd807580a90020451eSam Judd * Begin a load with Glide by passing in a context. 4339c04fc7a0c1d5c9e8f54660b0f954f754100f250Sam Judd * 4348c7ae0d1551752a2ff6260dd807580a90020451eSam Judd * @param context Any context, will not be retained. 4358c7ae0d1551752a2ff6260dd807580a90020451eSam Judd * @return A model request to pass in the object representing the image to be loaded. 4369c04fc7a0c1d5c9e8f54660b0f954f754100f250Sam Judd */ 437d3bd0a915d197e08dc7d2c7cf97fb0ee77049f51Sam Judd public static ModelRequest with(Context context) { 438d3bd0a915d197e08dc7d2c7cf97fb0ee77049f51Sam Judd return new ModelRequest(context, Glide.get(context)); 439d76f655fc29c5b3858d6657f22a5c656c3143767Sam Judd } 440d76f655fc29c5b3858d6657f22a5c656c3143767Sam Judd 441ba414a3eba45ab6566a94c48babace5c1d6d721fSam Judd private static class ClearTarget extends ViewTarget<View, Object> { 442b8963a023ceb009cbf7f73a4506e7af7e693a219Sam Judd public ClearTarget(View view) { 443b44604067356bb73cae3c910ac0e0044d26974a5Sam Judd super(view); 444b44604067356bb73cae3c910ac0e0044d26974a5Sam Judd } 445b44604067356bb73cae3c910ac0e0044d26974a5Sam Judd 446b44604067356bb73cae3c910ac0e0044d26974a5Sam Judd @Override 447785dc5ee71beeb3ebd77ea73b313eeaf057ae112Sam Judd public void onResourceReady(Object resource) { } 448b44604067356bb73cae3c910ac0e0044d26974a5Sam Judd 449b44604067356bb73cae3c910ac0e0044d26974a5Sam Judd @Override 450b44604067356bb73cae3c910ac0e0044d26974a5Sam Judd public void setPlaceholder(Drawable placeholder) { } 451b44604067356bb73cae3c910ac0e0044d26974a5Sam Judd } 452d76f655fc29c5b3858d6657f22a5c656c3143767Sam Judd} 453