Annotation Type GlideOption
-
@Target(METHOD) @Retention(CLASS) public @interface GlideOptionIdentifies methods inGlideExtensionannotated classes that extendcom.bumptech.glide.request.RequestOptions.All annotated methods will be added to a single
com.bumptech.glide.request.RequestOptionsimplementation generated per application. Overlapping method names in different extensions may cause errors at compile time.Static equivalents of annotated methods will also be generated.
Methods with this annotation will only be found if they belong to classes annotated with
GlideExtension.The preferred way of writing extension methods returns the provided
com.bumptech.glide.request.RequestOptionsobject with one or more methods called on it. You must not return a newly instantiatedcom.bumptech.glide.request.RequestOptionsobject as doing so my cause aClassCastExceptionat runtime. Calling eithercom.bumptech.glide.request.RequestOptions#autoClone()orcom.bumptech.glide.request.RequestOptions#lock()is safe, but unnecessary and should typically be avoided. The preferred style looks like:{@link @}GlideExtension public class MyExtension { private MyExtension() {} {@literal @}GlideOption public static RequestOptions myOption(RequestOptions options) { return options .optionOne() .optionTwo(); } }The deprecated way of writing extension methods is simply a static void method. The
com.bumptech.glide.request.RequestOptionsobject is cloned before it is passed to this method to avoid an option method returning a new instance, but using methods likecom.bumptech.glide.request.RequestOptions#clone()orcom.bumptech.glide.request.RequestOptions#autoClone()can result in options applied in the method being silently ignored. Prefer the new style whenever possible.{@literal @}GlideExtension public class MyExtension { private MyExtension() {} // Deprecated! Use the new style of GlideOption extensions instead. {@literal @}GlideOption public static void myOption(RequestOptions options) { options .optionOne() .optionTwo(); } }
-
-
Field Summary
Fields Modifier and Type Fields Description static intOVERRIDE_EXTENDExpects to call super and then add additional functionality to an overridden method.static intOVERRIDE_NONEDoes not intend to override a method in a super class.static intOVERRIDE_REPLACEExpects to not call super and replace an overridden method.
-
Optional Element Summary
Optional Elements Modifier and Type Optional Element Description booleanmemoizeStaticMethodtrueto indicate that it's safe to statically memoize the result of this method usingcom.bumptech.glide.request.RequestOptions#autoClone().intoverrideDetermines how and whether a generated method should extend a method from it's parent.booleanskipStaticMethodtrueto prevent a static builder method from being generated.java.lang.StringstaticMethodNameSets the name for the generated static version of this method.
-
-
-
Element Detail
-
override
int override
Determines how and whether a generated method should extend a method from it's parent.Must be one of
OVERRIDE_NONE,OVERRIDE_EXTEND,OVERRIDE_REPLACE.The extended method is determined by String and argument matching against methods in the extended class. If
OVERRIDE_NONEis used and the method and arguments match a method in the extended class, a compile time error will result. Similarly if any other override type is used and no method/arguments in the extended class match, a compile time error will result.- Default:
- 0
-
-
-
memoizeStaticMethod
boolean memoizeStaticMethod
trueto indicate that it's safe to statically memoize the result of this method usingcom.bumptech.glide.request.RequestOptions#autoClone().This method should only be used for no-arg methods where there's only a single possible value.
Memoization can save object allocations for frequently used options.
- Default:
- false
-
-
-
skipStaticMethod
boolean skipStaticMethod
trueto prevent a static builder method from being generated.By default static methods are generated for all methods annotated with
GlideOption. These static factory methods allow for a cleaner API when used withcom.bumptech.glide.RequestBuilder#apply. The static factory method by default simply creates a newcom.bumptech.glide.request.RequestOptionsobject, calls the instance version of the method on it and returns it. For example:public static GlideOptions noAnimation() { return new GlideOptions().dontAnimate(); }- See Also:
memoizeStaticMethod(),staticMethodName()
- Default:
- false
-
-