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.)

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

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()
BitmapDrawable(Bitmap bitmap)
BitmapDrawable(String filepath)
BitmapDrawable(InputStream is)
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 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

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

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

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

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

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

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 ()

public BitmapDrawable (Bitmap bitmap)

public BitmapDrawable (String filepath)

public BitmapDrawable (InputStream is)

Public Methods

public 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).

Parameters
canvas The canvas to draw into

public final Bitmap getBitmap ()

public int getChangingConfigurations ()

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 ()

public int getGravity ()

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 ()

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 ()

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 ()

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 ()

public Shader.TileMode getTileModeX ()

public Shader.TileMode getTileModeY ()

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

public Drawable mutate ()

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)

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

public void setAntiAlias (boolean aa)

public void setColorFilter (ColorFilter cf)

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

public 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. This can improve the look on those devices, but can also slow down the drawing a little.

public void setFilterBitmap (boolean filter)

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)

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

Parameters
gravity the gravity

public void setTileModeX (Shader.TileMode mode)

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

public final void setTileModeY (Shader.TileMode mode)

Protected Methods

protected void onBoundsChange (Rect bounds)

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