Class ResourceDrawableDecoder

  • All Implemented Interfaces:
    ResourceDecoder<android.net.Uri,​android.graphics.drawable.Drawable>

    public class ResourceDrawableDecoder
    extends java.lang.Object
    implements ResourceDecoder<android.net.Uri,​android.graphics.drawable.Drawable>
    Decodes Drawables given resource Uris.

    This is typically used as a fallback for resource types that either aren't Bitmaps (see #350) or for resource types that we can't obtain an InputStream for using a standard ContentResolver, including some types of application icons and resources loaded from other packages.

    • Field Summary

      Fields 
      Modifier and Type Field Description
      static Option<android.content.res.Resources.Theme> THEME
      Specifies a Resources.Theme which will be used to load the drawable.
    • Constructor Summary

      Constructors 
      Constructor Description
      ResourceDrawableDecoder​(android.content.Context context)  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      Resource<android.graphics.drawable.Drawable> decode​(android.net.Uri source, int width, int height, Options options)
      Returns a decoded resource from the given data or null if no resource could be decoded.
      boolean handles​(android.net.Uri source, Options options)
      Returns true if this decoder is capable of decoding the given source with the given options, and false otherwise.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • THEME

        public static final Option<android.content.res.Resources.Theme> THEME
        Specifies a Resources.Theme which will be used to load the drawable.
    • Constructor Detail

      • ResourceDrawableDecoder

        public ResourceDrawableDecoder​(android.content.Context context)
    • Method Detail

      • handles

        public boolean handles​(@NonNull
                               android.net.Uri source,
                               @NonNull
                               Options options)
        Description copied from interface: ResourceDecoder
        Returns true if this decoder is capable of decoding the given source with the given options, and false otherwise.

        Decoders should make a best effort attempt to quickly determine if they are likely to be able to decode data, but should not attempt to completely read the given data. A typical implementation would check the file headers verify they match content the decoder expects to handle (i.e. a GIF decoder should verify that the image contains the GIF header block.

        Decoders that return true from handles may still return null from ResourceDecoder.decode(Object, int, int, Options) if the data is partial or formatted incorrectly.

        Specified by:
        handles in interface ResourceDecoder<android.net.Uri,​android.graphics.drawable.Drawable>
      • decode

        @Nullable
        public Resource<android.graphics.drawable.Drawable> decode​(@NonNull
                                                                   android.net.Uri source,
                                                                   int width,
                                                                   int height,
                                                                   @NonNull
                                                                   Options options)
        Description copied from interface: ResourceDecoder
        Returns a decoded resource from the given data or null if no resource could be decoded.

        The source is managed by the caller, there's no need to close it. The returned Resource will be released when the engine sees fit.

        Note - The width and height arguments are hints only, there is no requirement that the decoded resource exactly match the given dimensions. A typical use case would be to use the target dimensions to determine how much to downsample Bitmaps by to avoid overly large allocations.

        Specified by:
        decode in interface ResourceDecoder<android.net.Uri,​android.graphics.drawable.Drawable>
        Parameters:
        source - The data the resource should be decoded from.
        width - The ideal width in pixels of the decoded resource, or Target.SIZE_ORIGINAL to indicate the original resource width.
        height - The ideal height in pixels of the decoded resource, or Target.SIZE_ORIGINAL to indicate the original resource height.
        options - A map of string keys to objects that may or may not contain options available to this particular implementation. Implementations should not assume that any or all of their option keys are present. However, implementations may assume that if one of their option keys is present, it's value is non-null and is of the expected type.