Most visited

Recently visited

Added in API level 1

Bitmap

public final class Bitmap
extends Object implements Parcelable

java.lang.Object
   ↳ android.graphics.Bitmap


Summary

Nested classes

枚举 Bitmap.CompressFormat

指定位图可以压缩到的已知格式

枚举 Bitmap.Config

可能的位图配置。

Constants

int DENSITY_NONE

表示位图是为未知像素密度而创建的。

Inherited constants

From interface android.os.Parcelable

Fields

public static final Creator<Bitmap> CREATOR

Public methods

boolean compress(Bitmap.CompressFormat format, int quality, OutputStream stream)

将位图的压缩版本写入指定的输出流。

Bitmap copy(Bitmap.Config config, boolean isMutable)

尝试根据此位图的尺寸制作新的位图,将新位图的配置设置为指定的位置,然后将此位图的像素复制到新位图中。

void copyPixelsFromBuffer(Buffer src)

从当前位置开始复制缓冲区中的像素,覆盖位图的像素。

void copyPixelsToBuffer(Buffer dst)

将位图的像素复制到指定的缓冲区(由调用者分配)。

static Bitmap createBitmap(Bitmap source, int x, int y, int width, int height)

从源位图的指定子集返回不可变的位图。

static Bitmap createBitmap(int[] colors, int width, int height, Bitmap.Config config)

返回具有指定宽度和高度的不可变位图,并将每个像素值设置为colors数组中的对应值。

static Bitmap createBitmap(Bitmap source, int x, int y, int width, int height, Matrix m, boolean filter)

从可选矩阵转换的源位图的子集中返回不可变的位图。

static Bitmap createBitmap(Bitmap src)

从源位图返回一个不可变的位图。

static Bitmap createBitmap(DisplayMetrics display, int[] colors, int offset, int stride, int width, int height, Bitmap.Config config)

返回具有指定宽度和高度的不可变位图,并将每个像素值设置为colors数组中的对应值。

static Bitmap createBitmap(DisplayMetrics display, int[] colors, int width, int height, Bitmap.Config config)

返回具有指定宽度和高度的不可变位图,并将每个像素值设置为colors数组中的对应值。

static Bitmap createBitmap(DisplayMetrics display, int width, int height, Bitmap.Config config)

返回具有指定宽度和高度的可变位图。

static Bitmap createBitmap(int[] colors, int offset, int stride, int width, int height, Bitmap.Config config)

返回具有指定宽度和高度的不可变位图,并将每个像素值设置为colors数组中的对应值。

static Bitmap createBitmap(int width, int height, Bitmap.Config config)

返回具有指定宽度和高度的可变位图。

static Bitmap createScaledBitmap(Bitmap src, int dstWidth, int dstHeight, boolean filter)

如果可能,创建一个新的位图,从现有的位图缩放。

int describeContents()

没有特别的包裹内容。

void eraseColor(int c)

用指定的 Color填充位图的像素。

Bitmap extractAlpha()

返回捕获原始字体值的新位图。

Bitmap extractAlpha(Paint paint, int[] offsetXY)

返回捕获原始字体值的新位图。

final int getAllocationByteCount()

返回用于存储此位图像素的已分配内存的大小。

final int getByteCount()

返回可用于存储此位图像素的最小字节数。

final Bitmap.Config getConfig()

如果位图的内部配置采用其中一种公共格式,则返回该配置,否则返回null。

int getDensity()

返回此位图的密度。

int getGenerationId()

返回此位图的生成ID。

final int getHeight()

返回位图的高度

byte[] getNinePatchChunk()

返回可选的私有数据数组,供UI系统用于某些位图。

int getPixel(int x, int y)

返回指定位置的 Color

void getPixels(int[] pixels, int offset, int stride, int x, int y, int width, int height)

以像素[]为单位返回位图中数据的副本。

final int getRowBytes()

返回位图像素中行之间的字节数。

int getScaledHeight(int targetDensity)

返回此位图高度除以密度比例因子的便捷方法。

int getScaledHeight(Canvas canvas)

拨打 getScaledHeight(int)便利性,目标密度为 Canvas

int getScaledHeight(DisplayMetrics metrics)

使用给定的 DisplayMetrics的目标密度调用 getScaledHeight(int)便利 DisplayMetrics

int getScaledWidth(int targetDensity)

返回此位图宽度除以密度比例因子的便捷方法。

int getScaledWidth(DisplayMetrics metrics)

使用给定的 DisplayMetrics的目标密度调用 getScaledWidth(int)便利 DisplayMetrics

int getScaledWidth(Canvas canvas)

方便拨打 getScaledWidth(int)的目标密度 Canvas

final int getWidth()

返回位图的宽度

final boolean hasAlpha()

如果位图的配置支持每像素alpha,并且像素可能包含不透明的alpha值,则返回true。

final boolean hasMipMap()

指示负责绘制此位图的渲染器是否应该在缩小绘制位图时尝试使用mipmap。

final boolean isMutable()

如果位图标记为可变(即可以绘制),则返回true

final boolean isPremultiplied()

指示存储在此位图中的像素是否预先相乘存储。

final boolean isRecycled()

如果此位图已被回收,则返回true。

void prepareToDraw()

重建与位图相关联的任何用于绘制的缓存。

void reconfigure(int width, int height, Bitmap.Config config)

修改位图以具有指定的宽度,高度和 Bitmap.Config ,而不会影响支持位图的底层分配。

void recycle()

释放与此位图关联的本机对象,并清除对像素数据的引用。

boolean sameAs(Bitmap other)

给定另一个位图,如果它具有与此位图相同的尺寸,配置和像素数据,则返回true。

void setConfig(Bitmap.Config config)

用当前高度和宽度调用 reconfigure(int, int, Config)便捷方法。

void setDensity(int density)

指定此位图的密度。

void setHasAlpha(boolean hasAlpha)

如果所有像素都是不透明的(假),或者某些像素可能包含不透明的alpha值(true),则告诉位图。

final void setHasMipMap(boolean hasMipMap)

为负责绘制该位图的渲染器设置一个提示,指示在缩小该位图时应尝试使用mipmap。

void setHeight(int height)

使用当前宽度和配置调用 reconfigure(int, int, Config)便捷方法。

void setPixel(int x, int y, int color)

将指定的 Color写入位图(假设它是可变的)在x,y坐标处。

void setPixels(int[] pixels, int offset, int stride, int x, int y, int width, int height)

将位图中的像素替换为数组中的颜色。

final void setPremultiplied(boolean premultiplied)

设置位图是否应将其数据视为预乘。

void setWidth(int width)

用当前高度和配置调用 reconfigure(int, int, Config)便捷方法。

void writeToParcel(Parcel p, int flags)

将位图及其像素写入宗地。

Inherited methods

From class java.lang.Object
From interface android.os.Parcelable

Constants

DENSITY_NONE

Added in API level 4
int DENSITY_NONE

表示位图是为未知像素密度而创建的。

也可以看看:

常量值:0(0x00000000)

Fields

CREATOR

Added in API level 1
Creator<Bitmap> CREATOR

Public methods

compress

Added in API level 1
boolean compress (Bitmap.CompressFormat format, 
                int quality, 
                OutputStream stream)

将位图的压缩版本写入指定的输出流。 如果这返回true,则可以通过将相应的输入流传递到BitmapFactory.decodeStream()来重建位图。 注意:并非所有格式都直接支持所有的位图配置,所以BitmapFactory返回的位图可能处于不同的位深度,并且/或者可能已经丢失了每像素阿尔法(例如JPEG仅支持不透明像素)。

Parameters
format Bitmap.CompressFormat: The format of the compressed image
quality int: Hint to the compressor, 0-100. 0 meaning compress for small size, 100 meaning compress for max quality. Some formats, like PNG which is lossless, will ignore the quality setting
stream OutputStream: The outputstream to write the compressed data.
Returns
boolean true if successfully compressed to the specified stream.

copy

Added in API level 1
Bitmap copy (Bitmap.Config config, 
                boolean isMutable)

尝试根据此位图的尺寸制作新的位图,将新位图的配置设置为指定的位置,然后将此位图的像素复制到新位图中。 如果转换不受支持,或分配器失败,则返回NULL。 返回的位图最初具有与原始密度相同的密度。

Parameters
config Bitmap.Config: The desired config for the resulting bitmap
isMutable boolean: True if the resulting bitmap should be mutable (i.e. its pixels can be modified)
Returns
Bitmap the new bitmap, or null if the copy could not be made.

copyPixelsFromBuffer

Added in API level 3
void copyPixelsFromBuffer (Buffer src)

从当前位置开始复制缓冲区中的像素,覆盖位图的像素。 缓冲区中的数据不会以任何方式改变(与setPixels()不同,后者将未预先编译的32位转换为任何位图的本机格式。

在这个方法返回后,缓冲区的当前位置被更新:位置增加了从缓冲区读取的元素的数量。 如果您需要再次从缓冲区中读取位图,则必须先倒回缓冲区。

Parameters
src Buffer

copyPixelsToBuffer

Added in API level 1
void copyPixelsToBuffer (Buffer dst)

将位图的像素复制到指定的缓冲区(由调用者分配)。 如果缓冲区不足以容纳所有像素(考虑到每个像素的字节数),或者如果Buffer子类不是支持类型之一(ByteBuffer,ShortBuffer,IntBuffer),则会引发异常。

位图的内容按原样复制到缓冲区中。 这意味着如果这个位图存储了其预先倍增的像素(参见isPremultiplied() ,那么缓冲区中的值也将被预倍增。

此方法返回后,缓冲区的当前位置将更新:位置将增加缓冲区中写入的元素的数量。

Parameters
dst Buffer

createBitmap

Added in API level 1
Bitmap createBitmap (Bitmap source, 
                int x, 
                int y, 
                int width, 
                int height)

从源位图的指定子集返回不可变的位图。 新的位图可能与源相同,或者可能已经创建了副本。 它使用与原始位图相同的密度进行初始化。

Parameters
source Bitmap: The bitmap we are subsetting
x int: The x coordinate of the first pixel in source
y int: The y coordinate of the first pixel in source
width int: The number of pixels in each row
height int: The number of rows
Returns
Bitmap A copy of a subset of the source bitmap or the source bitmap itself.
Throws
IllegalArgumentException if the x, y, width, height values are outside of the dimensions of the source bitmap, or width is <= 0, or height is <= 0

createBitmap

Added in API level 1
Bitmap createBitmap (int[] colors, 
                int width, 
                int height, 
                Bitmap.Config config)

返回具有指定宽度和高度的不可变位图,并将每个像素值设置为colors数组中的对应值。 其初始密度按照getDensity()

Parameters
colors int: Array of Color used to initialize the pixels. This array must be at least as large as width * height.
width int: The width of the bitmap
height int: The height of the bitmap
config Bitmap.Config: The bitmap config to create. If the config does not support per-pixel alpha (e.g. RGB_565), then the alpha bytes in the colors[] will be ignored (assumed to be FF)
Returns
Bitmap
Throws
IllegalArgumentException if the width or height are <= 0, or if the color array's length is less than the number of pixels.

createBitmap

Added in API level 1
Bitmap createBitmap (Bitmap source, 
                int x, 
                int y, 
                int width, 
                int height, 
                Matrix m, 
                boolean filter)

从可选矩阵转换的源位图的子集中返回不可变的位图。 新的位图可能与源相同,或者可能已经创建了副本。 它使用与原始位图相同的密度进行初始化。 如果源位图是不可变的,并且请求的子集与源位图本身相同,则返回源位图并且不创建新的位图。

Parameters
source Bitmap: The bitmap we are subsetting
x int: The x coordinate of the first pixel in source
y int: The y coordinate of the first pixel in source
width int: The number of pixels in each row
height int: The number of rows
m Matrix: Optional matrix to be applied to the pixels
filter boolean: true if the source should be filtered. Only applies if the matrix contains more than just translation.
Returns
Bitmap A bitmap that represents the specified subset of source
Throws
IllegalArgumentException if the x, y, width, height values are outside of the dimensions of the source bitmap, or width is <= 0, or height is <= 0

createBitmap

Added in API level 1
Bitmap createBitmap (Bitmap src)

从源位图返回一个不可变的位图。 新的位图可能与源相同,或者可能已经创建了副本。 它使用与原始位图相同的密度进行初始化。

Parameters
src Bitmap
Returns
Bitmap

createBitmap

Added in API level 17
Bitmap createBitmap (DisplayMetrics display, 
                int[] colors, 
                int offset, 
                int stride, 
                int width, 
                int height, 
                Bitmap.Config config)

返回具有指定宽度和高度的不可变位图,并将每个像素值设置为colors数组中的对应值。 其初始密度由给定的DisplayMetrics确定。

Parameters
display DisplayMetrics: Display metrics for the display this bitmap will be drawn on.
colors int: Array of Color used to initialize the pixels.
offset int: Number of values to skip before the first color in the array of colors.
stride int: Number of colors in the array between rows (must be >= width or <= -width).
width int: The width of the bitmap
height int: The height of the bitmap
config Bitmap.Config: The bitmap config to create. If the config does not support per-pixel alpha (e.g. RGB_565), then the alpha bytes in the colors[] will be ignored (assumed to be FF)
Returns
Bitmap
Throws
IllegalArgumentException if the width or height are <= 0, or if the color array's length is less than the number of pixels.

createBitmap

Added in API level 17
Bitmap createBitmap (DisplayMetrics display, 
                int[] colors, 
                int width, 
                int height, 
                Bitmap.Config config)

返回具有指定宽度和高度的不可变位图,并将每个像素值设置为colors数组中的对应值。 其初始密度由给定的DisplayMetrics确定。

Parameters
display DisplayMetrics: Display metrics for the display this bitmap will be drawn on.
colors int: Array of Color used to initialize the pixels. This array must be at least as large as width * height.
width int: The width of the bitmap
height int: The height of the bitmap
config Bitmap.Config: The bitmap config to create. If the config does not support per-pixel alpha (e.g. RGB_565), then the alpha bytes in the colors[] will be ignored (assumed to be FF)
Returns
Bitmap
Throws
IllegalArgumentException if the width or height are <= 0, or if the color array's length is less than the number of pixels.

createBitmap

Added in API level 17
Bitmap createBitmap (DisplayMetrics display, 
                int width, 
                int height, 
                Bitmap.Config config)

返回具有指定宽度和高度的可变位图。 其初始密度由给定的DisplayMetrics确定。

Parameters
display DisplayMetrics: Display metrics for the display this bitmap will be drawn on.
width int: The width of the bitmap
height int: The height of the bitmap
config Bitmap.Config: The bitmap config to create.
Returns
Bitmap
Throws
IllegalArgumentException if the width or height are <= 0

createBitmap

Added in API level 1
Bitmap createBitmap (int[] colors, 
                int offset, 
                int stride, 
                int width, 
                int height, 
                Bitmap.Config config)

返回具有指定宽度和高度的不可变位图,并将每个像素值设置为colors数组中的对应值。 其初始密度按照getDensity()

Parameters
colors int: Array of Color used to initialize the pixels.
offset int: Number of values to skip before the first color in the array of colors.
stride int: Number of colors in the array between rows (must be >= width or <= -width).
width int: The width of the bitmap
height int: The height of the bitmap
config Bitmap.Config: The bitmap config to create. If the config does not support per-pixel alpha (e.g. RGB_565), then the alpha bytes in the colors[] will be ignored (assumed to be FF)
Returns
Bitmap
Throws
IllegalArgumentException if the width or height are <= 0, or if the color array's length is less than the number of pixels.

createBitmap

Added in API level 1
Bitmap createBitmap (int width, 
                int height, 
                Bitmap.Config config)

返回具有指定宽度和高度的可变位图。 其初始密度按照getDensity()

Parameters
width int: The width of the bitmap
height int: The height of the bitmap
config Bitmap.Config: The bitmap config to create.
Returns
Bitmap
Throws
IllegalArgumentException if the width or height are <= 0

createScaledBitmap

Added in API level 1
Bitmap createScaledBitmap (Bitmap src, 
                int dstWidth, 
                int dstHeight, 
                boolean filter)

如果可能,创建一个新的位图,从现有的位图缩放。 如果指定的宽度和高度与源位图的当前宽度和高度相同,则会返回源位图,并且不会创建新的位图。

Parameters
src Bitmap: The source bitmap.
dstWidth int: The new bitmap's desired width.
dstHeight int: The new bitmap's desired height.
filter boolean: true if the source should be filtered.
Returns
Bitmap The new scaled bitmap or the source bitmap if no scaling is required.
Throws
IllegalArgumentException if width is <= 0, or height is <= 0

describeContents

Added in API level 1
int describeContents ()

没有特别的包裹内容。

Returns
int a bitmask indicating the set of special object types marshaled by this Parcelable object instance.

eraseColor

Added in API level 1
void eraseColor (int c)

用指定的 Color填充位图的像素。

Parameters
c int
Throws
IllegalStateException if the bitmap is not mutable.

extractAlpha

Added in API level 1
Bitmap extractAlpha ()

返回捕获原始字体值的新位图。 这可以用Canvas.drawBitmap()绘制,其中颜色将从传递给绘图调用的绘图中获取。

Returns
Bitmap new bitmap containing the alpha channel of the original bitmap.

extractAlpha

Added in API level 1
Bitmap extractAlpha (Paint paint, 
                int[] offsetXY)

返回捕获原始字体值的新位图。 这些值可能受到可选的Paint参数的影响,该参数可以包含自己的alpha值,也可能包含一个MaskFilter,它可以改变生成的位图的实际尺寸(例如,模糊maskfilter可能会放大产生的位图)。 如果offsetXY不为空,它将返回数量以抵消返回的位图,以便它在逻辑上与原始对齐。 例如,如果paint包含半径为2的模糊,则offsetXY []将包含-2,-2,以便通过(-2,-2)绘制alpha位图偏移,然后绘制原始图像会导致模糊在视觉上与原稿对齐。

返回的位图的初始密度与原始密度相同。

Parameters
paint Paint: Optional paint used to modify the alpha values in the resulting bitmap. Pass null for default behavior.
offsetXY int: Optional array that returns the X (index 0) and Y (index 1) offset needed to position the returned bitmap so that it visually lines up with the original.
Returns
Bitmap new bitmap containing the (optionally modified by paint) alpha channel of the original bitmap. This may be drawn with Canvas.drawBitmap(), where the color(s) will be taken from the paint that is passed to the draw call.

getAllocationByteCount

Added in API level 19
int getAllocationByteCount ()

返回用于存储此位图像素的已分配内存的大小。

如果重新使用位图解码更小尺寸的其他位图或手动重新配置,则这可能会比getByteCount()的结果大。 reconfigure(int, int, Config)setWidth(int)setHeight(int)setConfig(Bitmap.Config) ,并BitmapFactory.Options.inBitmap 如果未以这种方式修改位图,则此值将与由getByteCount()返回的值相同。

该值在位图的生存期内不会改变。

Returns
int

也可以看看:

getByteCount

Added in API level 12
int getByteCount ()

返回可用于存储此位图像素的最小字节数。

As of KITKAT, the result of this method can no longer be used to determine memory usage of a bitmap. See getAllocationByteCount().

Returns
int

getConfig

Added in API level 1
Bitmap.Config getConfig ()

如果位图的内部配置采用其中一种公共格式,则返回该配置,否则返回null。

Returns
Bitmap.Config

getDensity

Added in API level 4
int getDensity ()

返回此位图的密度。

默认密度与当前显示屏的密度相同,除非当前应用程序不支持不同的屏幕密度,在这种情况下,它是DENSITY_DEFAULT 请注意,兼容模式由最初加载到进程中的应用程序确定 - 共享相同进程的应用程序应该都具有相同的兼容性,或确保它们明确地设置其位图密度。

Returns
int A scaling factor of the default density or DENSITY_NONE if the scaling factor is unknown.

也可以看看:

getGenerationId

Added in API level 12
int getGenerationId ()

返回此位图的生成ID。 生成ID在位图被修改时改变。 这可以用作检查位图是否已更改的有效方法。

Returns
int The current generation ID for this bitmap.

getHeight

Added in API level 1
int getHeight ()

返回位图的高度

Returns
int

getNinePatchChunk

Added in API level 1
byte[] getNinePatchChunk ()

返回可选的私有数据数组,供UI系统用于某些位图。 不打算由应用程序调用。

Returns
byte[]

getPixel

Added in API level 1
int getPixel (int x, 
                int y)

返回指定位置的Color 如果x或y超出范围(负值或> =宽度或高度),则引发异常。 返回的颜色是非预乘ARGB值。

Parameters
x int: The x coordinate (0...width-1) of the pixel to return
y int: The y coordinate (0...height-1) of the pixel to return
Returns
int The argb Color at the specified coordinate
Throws
IllegalArgumentException if x, y exceed the bitmap's bounds

getPixels

Added in API level 1
void getPixels (int[] pixels, 
                int offset, 
                int stride, 
                int x, 
                int y, 
                int width, 
                int height)

以像素[]为单位返回位图中数据的副本。 每个值都是一个代表Color的打包int。 stride参数允许调用者在行之间的返回像素数组中留出间隙。 对于正常的打包结果,只需传递宽度值即可。 返回的颜色是非预乘ARGB值。

Parameters
pixels int: The array to receive the bitmap's colors
offset int: The first index to write into pixels[]
stride int: The number of entries in pixels[] to skip between rows (must be >= bitmap's width). Can be negative.
x int: The x coordinate of the first pixel to read from the bitmap
y int: The y coordinate of the first pixel to read from the bitmap
width int: The number of pixels to read from each row
height int: The number of rows to read
Throws
IllegalArgumentException if x, y, width, height exceed the bounds of the bitmap, or if abs(stride) < width.
ArrayIndexOutOfBoundsException if the pixels array is too small to receive the specified number of pixels.

getRowBytes

Added in API level 1
int getRowBytes ()

返回位图像素中行之间的字节数。 请注意,这是指由位图本地存储的像素。 如果您调用getPixels()或setPixels(),那么像素将统一视为32位值,并根据Color类进行打包。

KITKAT ,不应使用此方法来计算位图的内存使用情况。 相反,请参阅getAllocationByteCount()

Returns
int number of bytes between rows of the native bitmap pixels.

getScaledHeight

Added in API level 4
int getScaledHeight (int targetDensity)

返回此位图高度除以密度比例因子的便捷方法。

Parameters
targetDensity int: The density of the target canvas of the bitmap.
Returns
int The scaled height of this bitmap, according to the density scale factor.

getScaledHeight

Added in API level 4
int getScaledHeight (Canvas canvas)

拨打 getScaledHeight(int)便利 getScaledHeight(int) ,其目标密度为 Canvas

Parameters
canvas Canvas
Returns
int

getScaledHeight

Added in API level 4
int getScaledHeight (DisplayMetrics metrics)

拨打 getScaledHeight(int)便利性,目标密度为 DisplayMetrics

Parameters
metrics DisplayMetrics
Returns
int

getScaledWidth

Added in API level 4
int getScaledWidth (int targetDensity)

返回此位图宽度除以密度比例因子的便捷方法。

Parameters
targetDensity int: The density of the target canvas of the bitmap.
Returns
int The scaled width of this bitmap, according to the density scale factor.

getScaledWidth

Added in API level 4
int getScaledWidth (DisplayMetrics metrics)

方便拨打 getScaledWidth(int) ,目标密度为 DisplayMetrics

Parameters
metrics DisplayMetrics
Returns
int

getScaledWidth

Added in API level 4
int getScaledWidth (Canvas canvas)

使用 getScaledWidth(int)的目标密度调用 getScaledWidth(int)便利 Canvas

Parameters
canvas Canvas
Returns
int

getWidth

Added in API level 1
int getWidth ()

返回位图的宽度

Returns
int

hasAlpha

Added in API level 1
boolean hasAlpha ()

如果位图的配置支持每像素alpha,并且像素可能包含不透明的alpha值,则返回true。 对于某些配置,这总是错误的(例如RGB_565),因为它们不支持每像素alpha。 但是,对于配置,位图可能会被标记为已知其所有像素都是不透明的。 在这种情况下,hasAlpha()也会返回false。 如果像ARGB_8888这样的配置没有这样标记,它将默认返回true。

Returns
boolean

hasMipMap

Added in API level 17
boolean hasMipMap ()

指示负责绘制此位图的渲染器是否应该在缩小绘制位图时尝试使用mipmap。 如果您知道要以小于原始大小的50%绘制此位图,则可能会获得更高的质量。此属性只是渲染器可以忽略的一个建议。 不保证有任何效果。

Returns
boolean true if the renderer should attempt to use mipmaps, false otherwise

也可以看看:

isMutable

Added in API level 1
boolean isMutable ()

如果位图标记为可变(即可以绘制),则返回true

Returns
boolean

isPremultiplied

Added in API level 17
boolean isPremultiplied ()

指示存储在此位图中的像素是否预先相乘存储。 当一个像素被预先倍增时,RGB分量已经乘以alpha分量。 例如,如果原始颜色是50%半透明红色(128, 255, 0, 0) ,则预倍数形式为(128, 128, 0, 0)

如果 getConfig()RGB_565则此方法始终返回false。

如果 getConfig()ALPHA_8则返回值未定义。

如果hasAlpha()返回true,则此方法仅返回true。 没有alpha通道的位图既可以用作预先倍增的位图,也可以用作非预先倍增的位图。

视图系统或Canvas只能绘制预乘倍数的位图。 如果带有alpha通道的非预先倍增的位图被绘制到画布上,则会引发RuntimeException。

Returns
boolean true if the underlying pixels have been pre-multiplied, false otherwise

也可以看看:

isRecycled

Added in API level 1
boolean isRecycled ()

如果此位图已被回收,则返回true。 如果是这样,那么尝试访问其像素是错误的,并且位图不会绘制。

Returns
boolean true if the bitmap has been recycled

prepareToDraw

Added in API level 4
void prepareToDraw ()

重建与位图相关联的任何用于绘制的缓存。 在可清除位图的情况下,此调用将尝试确保像素已被解码。 如果按顺序在多个位图上调用它,则优先级按照LRU顺序给出(即,最后一个被调用的位图将被赋予最高优先级)。 对于没有关联缓存的位图,这个调用实际上是空操作,因此是无害的。

reconfigure

Added in API level 19
void reconfigure (int width, 
                int height, 
                Bitmap.Config config)

修改位图以具有指定的宽度,高度和Bitmap.Config ,而不影响支持位图的底层分配。 位图像素数据不会为新配置重新初始化。

此方法可用于避免分配新的位图,而是将现有位图的分配重新用于相同或较小大小的新配置。 如果位图的分配不足以支持新配置,则会抛出IllegalArgumentException,并且不会修改位图。

getByteCount()的结果将反映新的配置,而 getAllocationByteCount()将反映初始配置的结果。

注意:这可能会改变hasAlpha()的这个结果。 转换为565时,新的位图将始终被视为不透明。 当从565转换时,新的位图将被视为非不透明,并将遵循由setPremultiplied()设置的值。

警告:不应该在视图系统,Canvas或AndroidBitmap NDK API当前使用的位图上调用此方法。 它不保证如何将底层像素缓冲区重新映射到新配置,只是分配被重用。 另外,视图系统不考虑在使用期间正在修改的位图属性,例如当附加到可绘图时。

为了安全地确保Bitmap不再被View系统使用,必须等待drawate通道发生在invalidate()之后的任何视图之前由于硬件而在上次绘制通道中绘制位图加速缓存绘图命令。 作为一个例子,下面是一个ImageView的完成过程:

      ImageView myImageView = ...;
      final Bitmap myBitmap = ...;
      myImageView.setImageDrawable(null);
      myImageView.post(new Runnable() {
          public void run() {
              // myBitmap is now no longer in use by the ImageView
              // and can be safely reconfigured.
              myBitmap.reconfigure(...);
          }
      });
 

Parameters
width int
height int
config Bitmap.Config

也可以看看:

recycle

Added in API level 1
void recycle ()

释放与此位图关联的本机对象,并清除对像素数据的引用。 这不会同步释放像素数据; 它只是允许它被垃圾收集,如果没有其他引用。 位图被标记为“死亡”,这意味着如果getPixels()或setPixels()被调用,它将抛出异常,并且不会画任何东西。 这个操作不能颠倒过来,所以只有在你确定没有进一步的位图使用时才应该调用它。 这是一个高级调用,通常不需要调用,因为当没有更多的位图引用时,普通的GC进程将释放该内存。

sameAs

Added in API level 12
boolean sameAs (Bitmap other)

给定另一个位图,如果它具有与此位图相同的尺寸,配置和像素数据,则返回true。 如果其中任何不同,请返回false。 如果other为null,则返回false。

Parameters
other Bitmap
Returns
boolean

setConfig

Added in API level 19
void setConfig (Bitmap.Config config)

使用当前高度和宽度调用 reconfigure(int, int, Config)便捷方法。

警告:此方法不应用于视图系统当前使用的位图,有关更多详细信息,请参阅 reconfigure(int, int, Config)

Parameters
config Bitmap.Config

也可以看看:

setDensity

Added in API level 4
void setDensity (int density)

指定此位图的密度。 当位图被绘制到也具有密度的Canvas时,它将被适当地缩放。

Parameters
density int: The density scaling factor to use with this bitmap or DENSITY_NONE if the density is unknown.

也可以看看:

setHasAlpha

Added in API level 12
void setHasAlpha (boolean hasAlpha)

如果所有像素都是不透明的(假),或者某些像素可能包含不透明的alpha值(true),则告诉位图。 请注意,对于某些配置(例如RGB_565),此调用将被忽略,因为它不支持每个像素的alpha值。 这意味着作为一个绘图提示,因为在某些情况下,已知为不透明的位图可能会比可能具有不透明的每像素Alpha值的绘图案更快。

Parameters
hasAlpha boolean

setHasMipMap

Added in API level 17
void setHasMipMap (boolean hasMipMap)

为负责绘制该位图的渲染器设置一个提示,指示在缩小该位图时应尝试使用mipmap。 如果您知道您将以小于原始大小的50%绘制此位图,则可以通过打开此属性来获得更高的质量。 请注意,如果渲染器遵守此提示,则可能必须分配额外的内存来保存此位图的mipmap级别。 该属性只是渲染器可以忽略的一个建议。 不保证有任何效果。

Parameters
hasMipMap boolean: indicates whether the renderer should attempt to use mipmaps

也可以看看:

setHeight

Added in API level 19
void setHeight (int height)

使用当前宽度和配置调用 reconfigure(int, int, Config)便捷方法。

警告:此方法不应用于视图系统当前使用的位图,有关更多详细信息,请参阅 reconfigure(int, int, Config)

Parameters
height int

也可以看看:

setPixel

Added in API level 1
void setPixel (int x, 
                int y, 
                int color)

将指定的Color写入位图(假设它是可变的)在x,y坐标处。 颜色必须是非预乘ARGB值。

Parameters
x int: The x coordinate of the pixel to replace (0...width-1)
y int: The y coordinate of the pixel to replace (0...height-1)
color int: The ARGB color to write into the bitmap
Throws
IllegalStateException if the bitmap is not mutable
IllegalArgumentException if x, y are outside of the bitmap's bounds.

setPixels

Added in API level 1
void setPixels (int[] pixels, 
                int offset, 
                int stride, 
                int x, 
                int y, 
                int width, 
                int height)

将位图中的像素替换为数组中的颜色。 阵列中的每个元素都是一个压缩整数,表示一个非预乘ARGB Color

Parameters
pixels int: The colors to write to the bitmap
offset int: The index of the first color to read from pixels[]
stride int: The number of colors in pixels[] to skip between rows. Normally this value will be the same as the width of the bitmap, but it can be larger (or negative).
x int: The x coordinate of the first pixel to write to in the bitmap.
y int: The y coordinate of the first pixel to write to in the bitmap.
width int: The number of colors to copy from pixels[] per row
height int: The number of rows to write to the bitmap
Throws
IllegalStateException if the bitmap is not mutable
IllegalArgumentException if x, y, width, height are outside of the bitmap's bounds.
ArrayIndexOutOfBoundsException if the pixels array is too small to receive the specified number of pixels.

setPremultiplied

Added in API level 19
void setPremultiplied (boolean premultiplied)

设置位图是否应将其数据视为预乘。

出于性能原因,位图总是被视为系统和Canvas预倍增。 在Bitmap存储未预相乘数据(通过setPixel(int, int, int)setPixels(int[], int, int, int, int, int, int) ,或BitmapFactory.Options.inPremultiplied如果由所述框架绘制)可以导致不正确的配合。

此方法不会影响没有Alpha通道的位图的行为,或者 hasAlpha()返回false。

使用源位图调用 createBitmap(Bitmap)createScaledBitmap(Bitmap, int, int, boolean) ,其颜色未预先倍增可能会导致RuntimeException,因为这些函数需要绘制源,但未预乘的位图不支持该源。

Parameters
premultiplied boolean

也可以看看:

setWidth

Added in API level 19
void setWidth (int width)

使用当前高度和配置调用 reconfigure(int, int, Config)便捷方法。

警告:此方法不应用于视图系统当前使用的位图,有关更多详细信息,请参阅 reconfigure(int, int, Config)

Parameters
width int

也可以看看:

writeToParcel

Added in API level 1
void writeToParcel (Parcel p, 
                int flags)

将位图及其像素写入宗地。 位图可以通过调用CREATOR.createFromParcel()从包中重建。

Parameters
p Parcel: Parcel object to write the bitmap data into
flags int: Additional flags about how the object should be written. May be 0 or PARCELABLE_WRITE_RETURN_VALUE.

Hooray!