package com.bumptech.glide.module; import com.bumptech.glide.Registry; /** * An interface allowing lazy configuration of Glide including setting options using * {@link com.bumptech.glide.GlideBuilder} and registering * {@link com.bumptech.glide.load.model.ModelLoader ModelLoaders}. * * <p> To use this interface: <ol> <li> Implement the GlideModule interface in a class with public * visibility, calling * {@link Registry#prepend(Class, Class, com.bumptech.glide.load.ResourceDecoder)} for each * {@link com.bumptech.glide.load.model.ModelLoader} you'd like to register: * <pre> * <code> * public class FlickrGlideModule implements GlideModule { * {@literal @}Override * public void applyOptions(Context context, GlideBuilder builder) { * builder.setDecodeFormat(DecodeFormat.ALWAYS_ARGB_8888); * } * * {@literal @}Override * public void registerComponents(Context context, Glide glide) { * glide.register(Model.class, Data.class, new MyModelLoader()); * } * } * </code> * </pre> * </li> <li> Add your implementation to your list of keeps in your proguard.cfg file: * <pre> * {@code * -keepnames class * com.bumptech.glide.samples.flickr.FlickrGlideModule * } * </pre> * </li> <li> Add a metadata tag to your AndroidManifest.xml with your GlideModule implementation's * fully qualified classname as the key, and {@code GlideModule} as the value: * <pre> * {@code * <meta-data * android:name="com.bumptech.glide.samples.flickr.FlickrGlideModule" * android:value="GlideModule" /> * } * </pre> * </li> </ol> </p> * * <p> All implementations must be publicly visible and contain only an empty constructor so they * can be instantiated via reflection when Glide is lazily initialized. </p> * * <p> There is no defined order in which modules are called, so projects should be careful to avoid * applying conflicting settings in different modules. If an application depends on libraries that * have conflicting modules, the application should consider avoiding the library modules and * instead providing their required dependencies in a single application module. </p> * * @deprecated Libraries should use {@link LibraryGlideModule} and Applications should use * {@link AppGlideModule}. */ @Deprecated public interface GlideModule extends RegistersComponents, AppliesOptions { }