public class

BitmapDrawable

extends Drawable
java.lang.Object
   ↳ android.graphics.drawable.Drawable
     ↳ android.graphics.drawable.BitmapDrawable

Class Overview

A Drawable that wraps a bitmap and can be tiled, stretched, or aligned. You can create a BitmapDrawable from a file path, an input stream, through XML inflation, or from a Bitmap object.

It can be defined in an XML file with the <bitmap> element.

Also see the Bitmap class, which handles the management and transformation of raw bitmap graphics, and should be used when drawing to a Canvas.

Summary

XML Attributes
Attribute Name Related Method Description
android:antialias Enables or disables antialiasing. 
android:dither Enables or disables dithering of the bitmap if the bitmap does not have the same pixel configuration as the screen (for instance: a ARGB 8888 bitmap with an RGB 565 screen). 
android:filter Enables or disables bitmap filtering. 
android:gravity Defines the gravity for the bitmap. 
android:src Identifier of the bitmap file. 
android:tileMode Defines the tile mode. 
Public Constructors
BitmapDrawable()
This constructor is deprecated. Use BitmapDrawable(Resources) to ensure that the drawable has correctly set its target density.
BitmapDrawable(Resources res)
Create an empty drawable, setting initial target density based on the display metrics of the resources.
BitmapDrawable(Bitmap bitmap)
This constructor is deprecated. Use BitmapDrawable(Resources, Bitmap) to ensure that the drawable has correctly set its target density.
BitmapDrawable(Resources res, Bitmap bitmap)
Create drawable from a bitmap, setting initial target density based on the display metrics of the resources.
BitmapDrawable(String filepath)
This constructor is deprecated. Use BitmapDrawable(Resources, String) to ensure that the drawable has correctly set its target density.
BitmapDrawable(Resources res, String filepath)
Create a drawable by opening a given file path and decoding the bitmap.
BitmapDrawable(InputStream is)
This constructor is deprecated. Use BitmapDrawable(Resources, java.io.InputStream) to ensure that the drawable has correctly set its target density.
BitmapDrawable(Resources res, InputStream is)
Create a drawable by decoding a bitmap from the given input stream.
Public Methods
void draw(Canvas canvas)
Draw in its bounds (set via setBounds) respecting optional effects such as alpha (set via setAlpha) and color filter (set via setColorFilter).
final Bitmap getBitmap()
int getChangingConfigurations()
Return a mask of the configuration parameters for which this drawable mau change, requiring that it be re-created.
final Drawable.ConstantState getConstantState()
int getGravity()
Get the gravity used to position/stretch the bitmap within its bounds.
int getIntrinsicHeight()
Return the intrinsic height of the underlying drawable object.
int getIntrinsicWidth()
Return the intrinsic width of the underlying drawable object.
int getOpacity()
Return the opacity/transparency of this Drawable.
final Paint getPaint()
Shader.TileMode getTileModeX()
Shader.TileMode getTileModeY()
void inflate(Resources r, XmlPullParser parser, AttributeSet attrs)
Drawable mutate()
A mutable BitmapDrawable still shares its Bitmap with any other Drawable that comes from the same resource.
void setAlpha(int alpha)
Specify an alpha value for the drawable.
void setAntiAlias(boolean aa)
void setColorFilter(ColorFilter cf)
Specify an optional colorFilter for the drawable.
void setDither(boolean dither)
Set to true to have the drawable dither its colors when drawn to a device with fewer than 8-bits per color component.
void setFilterBitmap(boolean filter)
Set to true to have the drawable filter its bitmap when scaled or rotated (for drawables that use bitmaps).
void setGravity(int gravity)
Set the gravity used to position/stretch the bitmap within its bounds.
void setTargetDensity(int density)
Set the density at which this drawable will be rendered.
void setTargetDensity(Canvas canvas)
Set the density scale at which this drawable will be rendered.
void setTargetDensity(DisplayMetrics metrics)
Set the density scale at which this drawable will be rendered.
void setTileModeX(Shader.TileMode mode)
void setTileModeXY(Shader.TileMode xmode, Shader.TileMode ymode)
final void setTileModeY(Shader.TileMode mode)
Protected Methods
void onBoundsChange(Rect bounds)
Override this in your subclass to change appearance if you recognize the specified state.
[Expand]
Inherited Methods
From class android.graphics.drawable.Drawable
From class java.lang.Object

XML Attributes

android:antialias

Since: API Level

Enables or disables antialiasing.

Must be a boolean value, either "true" or "false".

This may also be a reference to a resource (in the form "@[package:]type:name") or theme attribute (in the form "?[package:][type:]name") containing a value of this type.

This corresponds to the global attribute resource symbol antialias.

Related Methods

android:dither

Since: API Level

Enables or disables dithering of the bitmap if the bitmap does not have the same pixel configuration as the screen (for instance: a ARGB 8888 bitmap with an RGB 565 screen).

Must be a boolean value, either "true" or "false".

This may also be a reference to a resource (in the form "@[package:]type:name") or theme attribute (in the form "?[package:][type:]name") containing a value of this type.

This corresponds to the global attribute resource symbol dither.

Related Methods

android:filter

Since: API Level

Enables or disables bitmap filtering. Filtering is used when the bitmap is shrunk or stretched to smooth its apperance.

Must be a boolean value, either "true" or "false".

This may also be a reference to a resource (in the form "@[package:]type:name") or theme attribute (in the form "?[package:][type:]name") containing a value of this type.

This corresponds to the global attribute resource symbol filter.

Related Methods

android:gravity

Since: API Level

Defines the gravity for the bitmap. The gravity indicates where to position the drawable in its container if the bitmap is smaller than the container.

Must be one or more (separated by '|') of the following constant values.

ConstantValueDescription
top0x30 Push object to the top of its container, not changing its size.
bottom0x50 Push object to the bottom of its container, not changing its size.
left0x03 Push object to the left of its container, not changing its size.
right0x05 Push object to the right of its container, not changing its size.
center_vertical0x10 Place object in the vertical center of its container, not changing its size.
fill_vertical0x70 Grow the vertical size of the object if needed so it completely fills its container.
center_horizontal0x01 Place object in the horizontal center of its container, not changing its size.
fill_horizontal0x07 Grow the horizontal size of the object if needed so it completely fills its container.
center0x11 Place the object in the center of its container in both the vertical and horizontal axis, not changing its size.
fill0x77 Grow the horizontal and vertical size of the object if needed so it completely fills its container.
clip_vertical0x80 Additional option that can be set to have the top and/or bottom edges of the child clipped to its container's bounds. The clip will be based on the vertical gravity: a top gravity will clip the bottom edge, a bottom gravity will clip the top edge, and neither will clip both edges.
clip_horizontal0x08 Additional option that can be set to have the left and/or right edges of the child clipped to its container's bounds. The clip will be based on the horizontal gravity: a left gravity will clip the right edge, a right gravity will clip the left edge, and neither will clip both edges.

This corresponds to the global attribute resource symbol gravity.

Related Methods

android:src

Since: API Level

Identifier of the bitmap file. This attribute is mandatory.

May be a reference to another resource, in the form "@[+][package:]type:name" or to a theme attribute in the form "?[package:][type:]name".

May be a color value, in the form of "#rgb", "#argb", "#rrggbb", or "#aarrggbb".

This corresponds to the global attribute resource symbol src.

Related Methods

android:tileMode

Since: API Level

Defines the tile mode. When the tile mode is enabled, the bitmap is repeated. Gravity is ignored when the tile mode is enabled.

Must be one of the following constant values.

ConstantValueDescription
disabled-1 Do not tile the bitmap. This is the default value.
clamp0 Replicates the edge color.
repeat1 Repeats the bitmap in both direction.
mirror2 Repeats the shader's image horizontally and vertically, alternating mirror images so that adjacent images always seam.

This corresponds to the global attribute resource symbol tileMode.

Related Methods

Public Constructors

public BitmapDrawable ()

Since: API Level 1

This constructor is deprecated.
Use BitmapDrawable(Resources) to ensure that the drawable has correctly set its target density.

Create an empty drawable, not dealing with density.

public BitmapDrawable (Resources res)

Since: API Level 4

Create an empty drawable, setting initial target density based on the display metrics of the resources.

public BitmapDrawable (Bitmap bitmap)

Since: API Level 1

This constructor is deprecated.
Use BitmapDrawable(Resources, Bitmap) to ensure that the drawable has correctly set its target density.

Create drawable from a bitmap, not dealing with density.

public BitmapDrawable (Resources res, Bitmap bitmap)

Since: API Level 4

Create drawable from a bitmap, setting initial target density based on the display metrics of the resources.

public BitmapDrawable (String filepath)

Since: API Level 1

This constructor is deprecated.
Use BitmapDrawable(Resources, String) to ensure that the drawable has correctly set its target density.

Create a drawable by opening a given file path and decoding the bitmap.

public BitmapDrawable (Resources res, String filepath)

Since: API Level 5

Create a drawable by opening a given file path and decoding the bitmap.

public BitmapDrawable (InputStream is)

Since: API Level 1

This constructor is deprecated.
Use BitmapDrawable(Resources, java.io.InputStream) to ensure that the drawable has correctly set its target density.

Create a drawable by decoding a bitmap from the given input stream.

public BitmapDrawable (Resources res, InputStream is)

Since: API Level 5

Create a drawable by decoding a bitmap from the given input stream.

Public Methods

public void draw (Canvas canvas)

Since: API Level 1

Draw in its bounds (set via setBounds) respecting optional effects such as alpha (set via setAlpha) and color filter (set via setColorFilter).

Parameters
canvas The canvas to draw into

public final Bitmap getBitmap ()

Since: API Level 1

public int getChangingConfigurations ()

Since: API Level 1

Return a mask of the configuration parameters for which this drawable mau change, requiring that it be re-created. The default implementation returns whatever was provided through setChangingConfigurations(int) or 0 by default. Subclasses may extend this to or in the changing configurations of any other drawables they hold.

Returns
  • Returns a mask of the changing configuration parameters, as defined by Configuration.

public final Drawable.ConstantState getConstantState ()

Since: API Level 1

public int getGravity ()

Since: API Level 1

Get the gravity used to position/stretch the bitmap within its bounds. See android.view.Gravity

Returns
  • the gravity applied to the bitmap

public int getIntrinsicHeight ()

Since: API Level 1

Return the intrinsic height of the underlying drawable object. Returns -1 if it has no intrinsic height, such as with a solid color.

public int getIntrinsicWidth ()

Since: API Level 1

Return the intrinsic width of the underlying drawable object. Returns -1 if it has no intrinsic width, such as with a solid color.

public int getOpacity ()

Since: API Level 1

Return the opacity/transparency of this Drawable. The returned value is one of the abstract format constants in PixelFormat: UNKNOWN, TRANSLUCENT, TRANSPARENT, or OPAQUE.

Generally a Drawable should be as conservative as possible with the value it returns. For example, if it contains multiple child drawables and only shows one of them at a time, if only one of the children is TRANSLUCENT and the others are OPAQUE then TRANSLUCENT should be returned. You can use the method resolveOpacity(int, int) to perform a standard reduction of two opacities to the appropriate single output.

Note that the returned value does not take into account a custom alpha or color filter that has been applied by the client through the setAlpha(int) or setColorFilter(ColorFilter) methods.

Returns
  • int The opacity class of the Drawable.

public final Paint getPaint ()

Since: API Level 1

public Shader.TileMode getTileModeX ()

Since: API Level 1

public Shader.TileMode getTileModeY ()

Since: API Level 1

public void inflate (Resources r, XmlPullParser parser, AttributeSet attrs)

Since: API Level 1

public Drawable mutate ()

Since: API Level 3

A mutable BitmapDrawable still shares its Bitmap with any other Drawable that comes from the same resource.

Returns
  • This drawable.

public void setAlpha (int alpha)

Since: API Level 1

Specify an alpha value for the drawable. 0 means fully transparent, and 255 means fully opaque.

public void setAntiAlias (boolean aa)

Since: API Level 1

public void setColorFilter (ColorFilter cf)

Since: API Level 1

Specify an optional colorFilter for the drawable. Pass null to remove any filters.

public void setDither (boolean dither)

Since: API Level 1

Set to true to have the drawable dither its colors when drawn to a device with fewer than 8-bits per color component. This can improve the look on those devices, but can also slow down the drawing a little.

public void setFilterBitmap (boolean filter)

Since: API Level 1

Set to true to have the drawable filter its bitmap when scaled or rotated (for drawables that use bitmaps). If the drawable does not use bitmaps, this call is ignored. This can improve the look when scaled or rotated, but also slows down the drawing.

public void setGravity (int gravity)

Since: API Level 1

Set the gravity used to position/stretch the bitmap within its bounds. See android.view.Gravity

Parameters
gravity the gravity

public void setTargetDensity (int density)

Since: API Level 4

Set the density at which this drawable will be rendered.

Parameters
density The density scale for this drawable.

public void setTargetDensity (Canvas canvas)

Since: API Level 4

Set the density scale at which this drawable will be rendered. This method assumes the drawable will be rendered at the same density as the specified canvas.

Parameters
canvas The Canvas from which the density scale must be obtained.

public void setTargetDensity (DisplayMetrics metrics)

Since: API Level 4

Set the density scale at which this drawable will be rendered.

Parameters
metrics The DisplayMetrics indicating the density scale for this drawable.

public void setTileModeX (Shader.TileMode mode)

Since: API Level 1

public void setTileModeXY (Shader.TileMode xmode, Shader.TileMode ymode)

Since: API Level 1

public final void setTileModeY (Shader.TileMode mode)

Since: API Level 1

Protected Methods

protected void onBoundsChange (Rect bounds)

Since: API Level 1

Override this in your subclass to change appearance if you recognize the specified state.