public class ResourceBitmapDecoder extends java.lang.Object implements ResourceDecoder<android.net.Uri,android.graphics.Bitmap>
Bitmaps from resource ids.
The framework will decode some resources as Drawables that do not wrap Bitmaps. This decoder will attempt to return a Bitmap for those Drawables anyway
by drawing the Drawable to a Canvass using the Drawable's intrinsic
bounds or the dimensions provided to ResourceDecoder.decode(Object, int, int, Options).
For non-Bitmap Drawables that return <= 0 for Drawable.getIntrinsicWidth() and/or Drawable.getIntrinsicHeight(), this decoder will
fail if the width and height provided to ResourceDecoder.decode(Object, int, int, Options) are Target.SIZE_ORIGINAL.
| Constructor and Description |
|---|
ResourceBitmapDecoder(ResourceDrawableDecoder drawableDecoder,
BitmapPool bitmapPool) |
| Modifier and Type | Method and Description |
|---|---|
Resource<android.graphics.Bitmap> |
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. |
public ResourceBitmapDecoder(ResourceDrawableDecoder drawableDecoder, BitmapPool bitmapPool)
public boolean handles(@NonNull
android.net.Uri source,
@NonNull
Options options)
ResourceDecodertrue 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.
handles in interface ResourceDecoder<android.net.Uri,android.graphics.Bitmap>@Nullable public Resource<android.graphics.Bitmap> decode(@NonNull android.net.Uri source, int width, int height, @NonNull Options options)
ResourceDecoderThe 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.
decode in interface ResourceDecoder<android.net.Uri,android.graphics.Bitmap>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.