Most visited

Recently visited

Added in API level 1

GradientDrawable

public class GradientDrawable
extends Drawable

java.lang.Object
   ↳ android.graphics.drawable.Drawable
     ↳ android.graphics.drawable.GradientDrawable


带按钮,背景等颜色渐变的Drawable

它可以使用<shape>元素在XML文件中定义。 有关更多信息,请参阅Drawable Resources的指南。

Summary

Nested classes

枚举 GradientDrawable.Orientation

控制渐变相对于可绘制边界的方向

XML attributes

android:angle Angle of the gradient. 
android:bottom Amount of bottom padding inside the gradient shape. 
android:centerColor Optional center color. 
android:centerX X coordinate of the origin of the gradient within the shape. 
android:centerY Y coordinate of the origin of the gradient within the shape. 
android:color Solid color for the gradient shape. 
android:color Color of the gradient shape's stroke. 
android:dashGap Gap between dashes in the stroke. 
android:dashWidth Length of a dash in the stroke. 
android:endColor End color of the gradient. 
android:gradientRadius Radius of the gradient, used only with radial gradient. 
android:height Height of the gradient shape. 
android:innerRadius Inner radius of the ring. 
android:innerRadiusRatio Inner radius of the ring expressed as a ratio of the ring's width. 
android:left Amount of left padding inside the gradient shape. 
android:right Amount of right padding inside the gradient shape. 
android:shape Indicates what shape to fill with a gradient. 
android:startColor Start color of the gradient. 
android:thickness Thickness of the ring. 
android:thicknessRatio Thickness of the ring expressed as a ratio of the ring's width. 
android:top Amount of top padding inside the gradient shape. 
android:type Type of gradient. 
android:useLevel  
android:useLevel Indicates whether the drawable's level affects the way the gradient is drawn. 
android:visible Indicates whether the drawable should intially be visible. 
android:width Width of the gradient shape. 
android:width Width of the gradient shape's stroke. 

Constants

int LINE

形状是一条线

int LINEAR_GRADIENT

渐变是线性的(默认)。

int OVAL

形状是一个椭圆

int RADIAL_GRADIENT

渐变是圆形的。

int RECTANGLE

形状是一个矩形,可能带有圆角

int RING

形状是一个环。

int SWEEP_GRADIENT

渐变是一种扫除。

Public constructors

GradientDrawable()
GradientDrawable(GradientDrawable.Orientation orientation, int[] colors)

给定渐变的方向和颜色数组,创建一个新的渐变可绘制。

Public methods

void applyTheme(Resources.Theme t)

将指定的主题应用于此Drawable及其子项。

boolean canApplyTheme()
void draw(Canvas canvas)

在其边界(通过setBounds设置)中绘制,考虑可选效果,如alpha(通过setAlpha设置)和color filter(通过setColorFilter设置)。

int getAlpha()

获取drawable的当前alpha值。

int getChangingConfigurations()

返回此drawable可能更改的配置参数的掩码,要求重新创建它。

ColorStateList getColor()

返回用于填充形状的颜色状态列表,或者 null如果形状填充了渐变或没有填充颜色。

ColorFilter getColorFilter()

返回当前的颜色过滤器,如果没有设置则返回 null

int[] getColors()

返回用于绘制渐变的颜色,如果使用单一颜色或无颜色绘制渐变,则返回 null

Drawable.ConstantState getConstantState()

返回保存此Drawable的共享状态的 Drawable.ConstantState实例。

float[] getCornerRadii()

返回四个角的每一个的半径。

float getCornerRadius()

返回渐变角的半径。

float getGradientCenterX()

以像素为单位返回此渐变的中心X位置。

float getGradientCenterY()

以像素为单位返回此渐变的中心Y位置。

float getGradientRadius()

以像素为单位返回渐变的半径。

int getGradientType()

返回此提拉中使用梯度的类型的一个 LINEAR_GRADIENTRADIAL_GRADIENT ,或 SWEEP_GRADIENT

int getIntrinsicHeight()

返回drawable的内在高度。

int getIntrinsicWidth()

返回drawable的内部宽度。

int getOpacity()

返回此Drawable的不透明度/透明度。

GradientDrawable.Orientation getOrientation()

返回此drawable中定义的渐变的方向。

void getOutline(Outline outline)

调用drawable来填充定义其绘图区域的Outline。

boolean getPadding(Rect padding)

返回填充此Drawable建议的插入内容以将内容放入drawable的边界内。

int getShape()

返回此提拉中使用的形状的类型的一个 LINEOVALRECTANGLERING

boolean getUseLevel()

返回此drawable是否将 levellevel属性。

void inflate(Resources r, XmlPullParser parser, AttributeSet attrs, Resources.Theme theme)

从可选的由主题设计的XML资源中扩展此Drawable。

boolean isStateful()

指示此drawable是否会根据状态更改其外观。

Drawable mutate()

使这个drawable可变。

void setAlpha(int alpha)

为drawable指定一个alpha值。

void setColor(ColorStateList colorStateList)

将此drawable更改为使用单个颜色状态列表而不是渐变。

void setColor(int argb)

将此可绘制更改为使用单一颜色而不是渐变。

void setColorFilter(ColorFilter colorFilter)

为绘图指定一个可选的颜色过滤器。

void setColors(int[] colors)

设置用于绘制渐变的颜色。

void setCornerRadii(float[] radii)

指定四个角的每一个的半径。

void setCornerRadius(float radius)

指定渐变角的半径。

void setDither(boolean dither)

此方法已弃用。 该属性被忽略。

void setGradientCenter(float x, float y)

设置渐变的像素中心位置。

void setGradientRadius(float gradientRadius)

设置渐变的半径。

void setGradientType(int gradient)

设置此drawable使用的渐变类型。

void setOrientation(GradientDrawable.Orientation orientation)

设置此drawable中定义的渐变的方向。

void setShape(int shape)

设置用于绘制渐变的形状的类型。

void setSize(int width, int height)

设置由该drawable绘制的形状的大小。

void setStroke(int width, ColorStateList colorStateList)

设置绘图的笔触宽度和颜色状态列表。

void setStroke(int width, ColorStateList colorStateList, float dashWidth, float dashGap)

设置绘图的笔触宽度和颜色状态列表。

void setStroke(int width, int color, float dashWidth, float dashGap)

设置绘图的笔触宽度和颜色。

void setStroke(int width, int color)

设置绘图的笔触宽度和颜色。

void setTintList(ColorStateList tint)

指定该drawable的色彩颜色作为颜色状态列表。

void setTintMode(PorterDuff.Mode tintMode)

指定该drawable的色调混合模式。

void setUseLevel(boolean useLevel)

设置这个drawable是否会遵守它的 level属性。

Protected methods

void onBoundsChange(Rect r)

如果您根据边界而变化,请在您的子类中覆盖此内容以更改外观。

boolean onLevelChange(int level)

如果您根据级别而变化,请在您的子类中覆盖此内容以更改外观。

boolean onStateChange(int[] stateSet)

如果您认识到指定的状态,请在您的子类中覆盖此内容以更改外观。

Inherited methods

From class android.graphics.drawable.Drawable
From class java.lang.Object

XML attributes

android:angle

渐变的角度。

必须是浮点值,例如“ 1.2 ”。

这也可能是对包含此类型值的资源(形式为“ @[package:]type:name ”)或主题属性(形式为“ ?[package:][type:]name ”)的 ?[package:][type:]name

这对应于全局属性资源符号 angle

android:bottom

梯度形状内的底部填充量。

必须是维度值,这是一个浮点数,后面跟着一个单位,例如“ 14.5sp ”。 可用单位为:px(像素),dp(密度独立像素),sp(基于首选字体大小的缩放像素),单位为英寸,毫米(毫米)。

这也可能是对包含此类型值的资源(形式为“ @[package:]type:name ”)或主题属性(形式为“ ?[package:][type:]name ”)的 ?[package:][type:]name

这对应于全局属性资源符号 bottom

android:centerColor

可选的中心颜色。 对于线性渐变,请使用centerX或centerY来放置中心颜色。

必须是“ #rgb ”,“ #argb ”,“ #rrggbb ”或“ #aarrggbb ”形式的颜色值。

这也可能是对包含此类型值的资源(形式为“ @[package:]type:name ”)或主题属性(形式为“ ?[package:][type:]name ”)的 ?[package:][type:]name

这对应于全局属性资源符号 centerColor

android:centerX

形状内渐变原点的X坐标。

可能是浮点值,例如“ 1.2 ”。

可能是一个小数值,它是一个浮点数, 14.5% %或%p,例如“ 14.5% ”。 %后缀始终表示基本大小的百分比; 可选的%p后缀提供了相对于某个父容器的大小。

这也可能是对包含此类型值的资源(形式为“ @[package:]type:name ”)或主题属性(形式为“ ?[package:][type:]name ”)的 ?[package:][type:]name

这对应于全局属性资源符号 centerX

android:centerY

形状内渐变的原点的Y坐标。

可能是浮点值,如“ 1.2 ”。

可能是一个小数值,这是一个浮点数,后面跟着%或%p,例如“ 14.5% ”。 %后缀始终表示基本大小的百分比; 可选的%p后缀提供了相对于某个父容器的大小。

这也可能是对包含此类型值的资源(形式为“ @[package:]type:name ”)或主题属性(形式为“ ?[package:][type:]name ”)的 ?[package:][type:]name

这对应于全局属性资源符号 centerY

android:color

纯色为渐变形状。

必须是“ #rgb ”,“ #argb ”,“ #rrggbb ”或“ #aarrggbb ”形式的颜色值。

这也可能是对包含此类型值的资源(形式为“ @[package:]type:name ”)或主题属性(形式为“ ?[package:][type:]name ”)的 ?[package:][type:]name

这对应于全局属性资源符号 color

android:color

渐变形状笔触的颜色。

必须是“ #rgb ”,“ #argb ”,“ #rrggbb ”或“ #aarrggbb ”形式的颜色值。

这也可能是对包含此类型值的资源(形式为“ @[package:]type:name ”)或主题属性(形式为“ ?[package:][type:]name ”)的 ?[package:][type:]name

这对应于全局属性资源符号 color

android:dashGap

中风破折号之间的差距。

必须是尺寸值,这是一个浮点数,后面跟着一个单位,例如“ 14.5sp ”。 可用单位为:px(像素),dp(密度独立像素),sp(基于首选字体大小的缩放像素),单位为英寸,毫米(毫米)。

这也可能是对包含此类型值的资源(形式为“ @[package:]type:name ”)或主题属性(形式为“ ?[package:][type:]name ”)的 ?[package:][type:]name

这对应于全局属性资源符号 dashGap

android:dashWidth

中风中的短划线的长度。

必须是维度值,这是一个浮点数,后面跟着一个单位,例如“ 14.5sp ”。 可用单位为:px(像素),dp(密度独立像素),sp(基于首选字体大小的缩放像素),单位为英寸,毫米(毫米)。

这也可能是对包含此类型值的资源(形式为“ @[package:]type:name ”)或主题属性(形式为“ ?[package:][type:]name ”)的 ?[package:][type:]name

这对应于全局属性资源符号 dashWidth

android:endColor

渐变的结束颜色。

必须是“ #rgb ”,“ #argb ”,“ #rrggbb ”或“ #aarrggbb ”形式的颜色值。

这也可能是对包含此类型值的资源(形式为“ @[package:]type:name ”)或主题属性(形式为“ ?[package:][type:]name ”)的 ?[package:][type:]name

这对应于全局属性资源符号 endColor

android:gradientRadius

渐变的半径,仅用于径向渐变。

可能是浮点值,例如“ 1.2 ”。

可能是一个维度值,它是一个浮点数,后面跟着一个单位,例如“ 14.5sp ”。 可用单位为:px(像素),dp(密度独立像素),sp(基于首选字体大小的缩放像素),单位为英寸,毫米(毫米)。

可能是一个小数值,这是一个浮点数, 14.5% %或%p,例如“ 14.5% ”。 %后缀始终表示基本大小的百分比; 可选的%p后缀提供了相对于某个父容器的大小。

这也可能是对包含此类型值的资源(形式为“ @[package:]type:name ”)或主题属性(形式为“ ?[package:][type:]name ”)的 ?[package:][type:]name

这对应于全局属性资源符号 gradientRadius

android:height

渐变形状的高度。

必须是维度值,这是一个浮点数,后面跟着一个单位,例如“ 14.5sp ”。 可用单位为:px(像素),dp(密度独立像素),sp(基于首选字体大小的缩放像素),单位为英寸,毫米(毫米)。

这也可能是对包含此类型值的资源(形式为“ @[package:]type:name ”)或主题属性(形式为“ ?[package:][type:]name ”)的 ?[package:][type:]name

这对应于全局属性资源符号 height

android:innerRadius

环的内半径。 定义后,innerRadiusRatio将被忽略。

必须是尺寸值,这是一个浮点数,后面跟着一个单位,例如“ 14.5sp ”。 可用单位为:px(像素),dp(密度独立像素),sp(基于首选字体大小的缩放像素),单位为英寸,毫米(毫米)。

这也可能是对包含此类型值的资源(形式为“ @[package:]type:name ”)或主题属性(形式为“ ?[package:][type:]name ”)的 ?[package:][type:]name

这对应于全局属性资源符号 innerRadius

android:innerRadiusRatio

环的内半径表示为环宽度的比率。 例如,如果innerRadiusRatio = 9,则内半径等于环的宽度除以9.如果定义了innerRadius,则该值将被忽略。 默认值是9。

必须是浮点值,例如“ 1.2 ”。

这也可能是对包含此类型值的资源(形式为“ @[package:]type:name ”)或主题属性(形式为“ ?[package:][type:]name ”)的 ?[package:][type:]name

这对应于全局属性资源符号 innerRadiusRatio

android:left

渐变形状内的左填充量。

必须是一个维度值,这是一个浮点数,后面跟着一个单位,例如“ 14.5sp ”。 可用单位为:px(像素),dp(密度独立像素),sp(基于首选字体大小的缩放像素),单位为英寸,毫米(毫米)。

这也可能是对包含此类型值的资源(形式为“ @[package:]type:name ”)或主题属性(形式为“ ?[package:][type:]name ”)的 ?[package:][type:]name

这对应于全局属性资源符号 left

android:right

渐变形状内的右填充量。

必须是尺寸值,这是一个浮点数,后面跟着一个单位,例如“ 14.5sp ”。 可用单位为:px(像素),dp(密度独立像素),sp(基于首选字体大小的缩放像素),单位为英寸,毫米(毫米)。

这也可能是对包含此类型值的资源(形式为“ @[package:]type:name ”)或主题属性(形式为“ ?[package:][type:]name ”)的 ?[package:][type:]name

这对应于全局属性资源符号 right

android:shape

指示用渐变填充的形状。

必须是下列常数值之一。

Constant Value 描述
rectangle 0 Rectangle shape, with optional rounder corners.
oval 1 Oval shape.
line 2 Line shape.
ring 3 Ring shape.

这对应于全局属性资源符号 shape

android:startColor

开始渐变的颜色。

必须是“ #rgb ”,“ #argb ”,“ #rrggbb ”或“ #aarrggbb ”形式的颜色值。

这也可能是对包含此类型值的资源(形式为“ @[package:]type:name ”)或主题属性(形式为“ ?[package:][type:]name ”)的 ?[package:][type:]name

这对应于全局属性资源符号 startColor

android:thickness

戒指的厚度。 定义时,thicknessRatio将被忽略。

必须是维度值,这是一个浮点数,后面跟着一个单位,例如“ 14.5sp ”。 可用单位为:px(像素),dp(密度独立像素),sp(基于首选字体大小的缩放像素),单位为英寸,毫米(毫米)。

这也可能是对包含此类型值的资源(形式为“ @[package:]type:name ”)或主题属性(形式为“ ?[package:][type:]name ”)的 ?[package:][type:]name

这对应于全局属性资源符号 thickness

android:thicknessRatio

环的厚度表示为环宽度的比率。 例如,如果thicknessRatio = 3,那么厚度等于环的宽度除以3.如果定义了innerRadius,则该值将被忽略。 默认值是3。

必须是浮点值,例如“ 1.2 ”。

这也可能是对包含此类型值的资源(形式为“ @[package:]type:name ”)或主题属性(形式为“ ?[package:][type:]name ”)的 ?[package:][type:]name

这对应于全局属性资源符号 thicknessRatio

android:top

渐变形状内的顶部填充量。

必须是维度值,这是一个浮点数,后面跟着一个单位,例如“ 14.5sp ”。 可用单位为:px(像素),dp(密度独立像素),sp(基于首选字体大小的缩放像素),单位为英寸,毫米(毫米)。

这也可能是对包含此类型值的资源(形式为“ @[package:]type:name ”)或主题属性(形式为“ ?[package:][type:]name ”)的 ?[package:][type:]name

这对应于全局属性资源符号 top

android:type

类型的渐变。 默认类型是线性的。

必须是下列常数值之一。

Constant Value 描述
linear 0 Linear gradient.
radial 1 Radial, or circular, gradient.
sweep 2 Sweep, or angled or diamond, gradient.

这对应于全局属性资源符号 type

android:useLevel

android:useLevel

指示drawable的级别是否影响绘制渐变的方式。

必须是布尔值,可以是“ true ”或“ false ”。

这也可能是对包含此类型值的资源(形式为“ @[package:]type:name ”)或主题属性(形式为“ ?[package:][type:]name ”)的 ?[package:][type:]name

这对应于全局属性资源符号 useLevel

android:visible

指示绘图是否应该可见。

必须是布尔值,可以是“ true ”或“ false ”。

这也可能是对包含此类型值的资源(形式为“ @[package:]type:name ”)或主题属性(形式为“ ?[package:][type:]name ”)的 ?[package:][type:]name

这对应于全局属性资源符号 visible

android:width

渐变形状的宽度。

必须是维度值,这是一个浮点数,后面跟着一个单位,例如“ 14.5sp ”。 可用单位为:px(像素),dp(密度独立像素),sp(基于首选字体大小的缩放像素),单位为英寸,毫米(毫米)。

这也可能是对包含此类型值的资源(形式为“ @[package:]type:name ”)或主题属性(形式为“ ?[package:][type:]name ”)的 ?[package:][type:]name

这对应于全局属性资源符号 width

android:width

渐变形状笔触的宽度。

必须是一个维度值,这是一个浮点数,后面跟着一个单位,例如“ 14.5sp ”。 可用单位为:px(像素),dp(密度独立像素),sp(基于首选字体大小的缩放像素),单位为英寸,毫米(毫米)。

这也可能是对包含此类型值的资源(形式为“ @[package:]type:name ”)或主题属性(形式为“ ?[package:][type:]name ”)的 ?[package:][type:]name

这对应于全局属性资源符号 width

Constants

LINE

Added in API level 1
int LINE

形状是一条线

常量值:2(0x00000002)

LINEAR_GRADIENT

Added in API level 1
int LINEAR_GRADIENT

渐变是线性的(默认)。

常量值:0(0x00000000)

OVAL

Added in API level 1
int OVAL

形状是一个椭圆

常数值:1(0x00000001)

RADIAL_GRADIENT

Added in API level 1
int RADIAL_GRADIENT

渐变是圆形的。

常数值:1(0x00000001)

RECTANGLE

Added in API level 1
int RECTANGLE

形状是一个矩形,可能带有圆角

常量值:0(0x00000000)

RING

Added in API level 1
int RING

形状是一个环。

常量值:3(0x00000003)

SWEEP_GRADIENT

Added in API level 1
int SWEEP_GRADIENT

渐变是一种扫除。

常量值:2(0x00000002)

Public constructors

GradientDrawable

Added in API level 1
GradientDrawable ()

GradientDrawable

Added in API level 1
GradientDrawable (GradientDrawable.Orientation orientation, 
                int[] colors)

给定渐变的方向和颜色数组,创建一个新的渐变可绘制。

Parameters
orientation GradientDrawable.Orientation
colors int

Public methods

applyTheme

Added in API level 21
void applyTheme (Resources.Theme t)

将指定的主题应用于此Drawable及其子项。

Parameters
t Resources.Theme: the theme to apply

canApplyTheme

Added in API level 21
boolean canApplyTheme ()

Returns
boolean

draw

Added in API level 1
void draw (Canvas canvas)

在其边界(通过setBounds设置)中绘制,考虑可选效果,如alpha(通过setAlpha设置)和color filter(通过setColorFilter设置)。

Parameters
canvas Canvas: The canvas to draw into

getAlpha

Added in API level 19
int getAlpha ()

获取drawable的当前alpha值。 0表示完全透明,255表示完全不透明。 该方法由Drawable子类实现,返回的值特定于该类如何处理alpha。 如果该类未覆盖此方法以返回特定于其使用alpha的值,则默认返回值为255。

Returns
int

getChangingConfigurations

Added in API level 1
int getChangingConfigurations ()

返回此drawable可能更改的配置参数的掩码,要求重新创建它。 缺省实现返回默认情况下通过setChangingConfigurations(int)或0提供的值。 子类可以将其扩展到它们所拥有的任何其他drawable的变化配置中或其中。

Returns
int Returns a mask of the changing configuration parameters, as defined by ActivityInfo.

getColor

Added in API level 24
ColorStateList getColor ()

返回用于填充形状的颜色状态列表,或者 null如果形状填充了渐变或没有填充颜色。

Returns
ColorStateList the color state list used to fill this gradient, or null

也可以看看:

getColorFilter

Added in API level 21
ColorFilter getColorFilter ()

返回当前的颜色过滤器,如果没有设置,则返回 null

Returns
ColorFilter the current color filter, or null if none set

getColors

Added in API level 24
int[] getColors ()

返回用于绘制渐变的颜色,如果渐变使用单色或无颜色绘制,则返回 null

Returns
int[] the colors used to draw the gradient, or null

也可以看看:

getConstantState

Added in API level 1
Drawable.ConstantState getConstantState ()

返回保存此Drawable的共享状态的 Drawable.ConstantState实例。

Returns
Drawable.ConstantState The ConstantState associated to that Drawable.

getCornerRadii

Added in API level 24
float[] getCornerRadii ()

返回四个角的每一个的半径。 对于每个角落,数组包含2个值, [X_radius, Y_radius] 角落的顺序是左上角,右上角,右下角,左下角。

如果以前的圆角设置为 setCornerRadius(float) ,或者如果拐角未被圆角化,则此方法将返回 null

Returns
float[] an array containing the radii for each of the 4 corners, or null

也可以看看:

getCornerRadius

Added in API level 24
float getCornerRadius ()

返回渐变角的半径。

如果之前设置了半径 setCornerRadii(float[]) ,或者如果拐角未被圆整,则此方法将返回 null

Returns
float the radius in pixels of the corners of the rectangle shape, or 0

也可以看看:

getGradientCenterX

Added in API level 24
float getGradientCenterX ()

以像素为单位返回此渐变的中心X位置。

Returns
float the center X location of this gradient in pixels

也可以看看:

getGradientCenterY

Added in API level 24
float getGradientCenterY ()

以像素为单位返回此渐变的中心Y位置。

Returns
float the center Y location of this gradient in pixels

也可以看看:

getGradientRadius

Added in API level 21
float getGradientRadius ()

以像素为单位返回渐变的半径。 仅当渐变类型设置为RADIAL_GRADIENT时,半径才有效。

Returns
float the radius of the gradient in pixels

也可以看看:

getGradientType

Added in API level 24
int getGradientType ()

返回此提拉中使用梯度的类型的一个 LINEAR_GRADIENTRADIAL_GRADIENT ,或 SWEEP_GRADIENT

Returns
int the type of gradient used by this drawable

也可以看看:

getIntrinsicHeight

Added in API level 1
int getIntrinsicHeight ()

返回drawable的内在高度。

固有高度是可拉伸的布局高度,包括任何固有的填充。 如果drawable没有固有的高度,例如纯色,则此方法返回-1。

Returns
int the intrinsic height, or -1 if no intrinsic height

getIntrinsicWidth

Added in API level 1
int getIntrinsicWidth ()

返回drawable的内部宽度。

固有宽度是可展开的布局的宽度,包括任何固有的填充。 如果drawable没有固有的宽度,例如纯色,则此方法返回-1。

Returns
int the intrinsic width, or -1 if no intrinsic width

getOpacity

Added in API level 1
int getOpacity ()

返回此Drawable的不透明度/透明度。 返回的值是在抽象格式常数之一PixelFormatUNKNOWNTRANSLUCENTTRANSPARENT ,或OPAQUE

OPAQUE drawable是一个绘制所有内容的范围,完全覆盖drawable后面的所有内容。 一个TRANSPARENT drawable是一个在其范围内没有绘制任何东西的图形,允许它后面的所有东西都显示出来。 TRANSLUCENT drawable是任何其他状态中的drawable,drawable将绘制其边界内的一些内容,但不是全部内容,并且至少drawable后面的某些内容将可见。 如果无法确定可绘制内容的可见性,则最安全/最佳返回值为TRANSLUCENT。

一般而言,Drawable应该尽可能保守并且返回值。 例如,如果它包含多个子drawable,并且一次只显示其中一个,如果只有一个子项是TRANSLUCENT,而其他子项是OPAQUE,则应返回TRANSLUCENT。 您可以使用方法resolveOpacity(int, int)将两个不透明度标准减少到适当的单个输出。

请注意,返回的值不一定会考虑客户端通过setAlpha(int)setColorFilter(ColorFilter)方法应用的自定义alpha或颜色过滤器。 一些子类,比如BitmapDrawableColorDrawable ,并GradientDrawable ,对价值做账setAlpha(int) ,但总的行为是依赖于子类实现的。

Returns
int int The opacity class of the Drawable.

getOrientation

Added in API level 16
GradientDrawable.Orientation getOrientation ()

返回此drawable中定义的渐变的方向。

Returns
GradientDrawable.Orientation the orientation of the gradient defined in this drawable

也可以看看:

getOutline

Added in API level 21
void getOutline (Outline outline)

调用drawable来填充定义其绘图区域的Outline。

此方法由默认的 ViewOutlineProvider以定义视图的轮廓。

默认行为将轮廓定义为0 alpha的边界矩形。 希望传达不同形状或阿尔法值的子类必须重写此方法。

Parameters
outline Outline

getPadding

Added in API level 1
boolean getPadding (Rect padding)

返回填充此Drawable建议的插入内容以将内容放入drawable的边界内。 正值移向Drawable的中心(设置Rect.inset)。

Parameters
padding Rect
Returns
boolean true if this drawable actually has a padding, else false. When false is returned, the padding is always set to 0.

getShape

Added in API level 24
int getShape ()

返回此提拉中使用的形状的类型的一个 LINEOVALRECTANGLERING

Returns
int the type of shape used by this drawable

也可以看看:

getUseLevel

Added in API level 24
boolean getUseLevel ()

返回此drawable是否将 levellevel属性。

Returns
boolean true if this drawable should honor its level, false otherwise

也可以看看:

inflate

Added in API level 21
void inflate (Resources r, 
                XmlPullParser parser, 
                AttributeSet attrs, 
                Resources.Theme theme)

从可选的由主题设计的XML资源中扩展此Drawable。 对于每个Drawable,这不能被调用一次以上。 请注意,框架可能已经调用过这一次从XML资源创建Drawable实例。

Parameters
r Resources: Resources used to resolve attribute values
parser XmlPullParser: XML parser from which to inflate this Drawable
attrs AttributeSet: Base set of attribute values
theme Resources.Theme: Theme to apply, may be null
Throws
XmlPullParserException
IOException

isStateful

Added in API level 1
boolean isStateful ()

指示此drawable是否会根据状态更改其外观。 客户可以使用它来确定是否有必要计算它们的状态并调用setState。

Returns
boolean True if this drawable changes its appearance based on state, false otherwise.

mutate

Added in API level 3
Drawable mutate ()

使这个drawable可变。 这个操作不能逆转。 一个可变的drawable保证不与其他drawable共享它的状态。 当你需要修改从资源加载的drawable的属性时,这是特别有用的。 默认情况下,从同一资源加载的所有可绘制实例共享一个公共状态; 如果修改一个实例的状态,则所有其他实例都将收到相同的修改。 在可变Drawable上调用此方法将不起作用。

Returns
Drawable This drawable.

setAlpha

Added in API level 1
void setAlpha (int alpha)

为drawable指定一个alpha值。 0表示完全透明,255表示完全不透明。

Parameters
alpha int

setColor

Added in API level 21
void setColor (ColorStateList colorStateList)

将此drawable更改为使用单个颜色状态列表而不是渐变。 调用此方法与空参数将清除颜色和等同于调用setColor(int)的说法TRANSPARENT

:更改颜色将影响从资源加载的drawable的所有实例。 建议在更改颜色之前调用mutate()

Parameters
colorStateList ColorStateList: The color state list used to fill the shape

也可以看看:

setColor

Added in API level 1
void setColor (int argb)

将此可绘制更改为使用单一颜色而不是渐变。

:更改颜色将影响从资源加载的drawable的所有实例。 建议在更改颜色之前调用mutate()

Parameters
argb int: The color used to fill the shape

也可以看看:

setColorFilter

Added in API level 1
void setColorFilter (ColorFilter colorFilter)

为绘图指定一个可选的颜色过滤器。

如果Drawable具有ColorFilter,则Drawable的绘图内容的每个输出像素在混合到Canvas的渲染目标之前将被颜色过滤器修改。

通过 null删除任何现有的颜色过滤器。

注意:设置非 null颜色过滤器会禁用 tint

Parameters
colorFilter ColorFilter: The color filter to apply, or null to remove the existing color filter

setColors

Added in API level 16
void setColors (int[] colors)

设置用于绘制渐变的颜色。

每种颜色都指定为ARGB整数,并且该数组必须至少包含2种颜色。

:更改颜色将影响从资源加载的绘图的所有实例。 建议在更改颜色之前调用mutate()

Parameters
colors int: an array containing 2 or more ARGB colors

也可以看看:

setCornerRadii

Added in API level 1
void setCornerRadii (float[] radii)

指定四个角的每一个的半径。 对于每个角落,数组包含2个值, [X_radius, Y_radius] 角落的顺序是左上角,右上角,右下角,左下角。 只有在形状为RECTANGLE时,此属性才RECTANGLE

注意 :更改此属性将影响从资源加载的drawable的所有实例。 建议在更改此属性前调用mutate()

Parameters
radii float: an array of length >= 8 containing 4 pairs of X and Y radius for each corner, specified in pixels

也可以看看:

setCornerRadius

Added in API level 1
void setCornerRadius (float radius)

指定渐变角的半径。 如果这是> 0,那么drawable绘制在一个圆形的矩形中,而不是一个矩形。 该属性仅在形状为RECTANGLE

注意 :更改此属性将影响从资源加载的drawable的所有实例。 建议在更改此属性前调用mutate()

Parameters
radius float: The radius in pixels of the corners of the rectangle shape

也可以看看:

setDither

Added in API level 1
void setDither (boolean dither)

此方法已弃用。
该属性被忽略。

将其设置为true时,绘制到每个颜色分量少于8位的设备时,其可绘制的颜色呈现抖动。

Parameters
dither boolean

setGradientCenter

Added in API level 1
void setGradientCenter (float x, 
                float y)

设置渐变的像素中心位置。 只有当渐变类型设置为RADIAL_GRADIENTSWEEP_GRADIENT时,半径才可以SWEEP_GRADIENT

注意 :更改此属性将影响从资源加载的drawable的所有实例。 建议在更改此属性前调用mutate()

Parameters
x float: the x coordinate of the gradient's center in pixels
y float: the y coordinate of the gradient's center in pixels

也可以看看:

setGradientRadius

Added in API level 1
void setGradientRadius (float gradientRadius)

设置渐变的半径。 只有当渐变类型设置为RADIAL_GRADIENT时,半径才可以RADIAL_GRADIENT

注意 :更改此属性将影响从资源加载的drawable的所有实例。 建议在更改此属性前调用mutate()

Parameters
gradientRadius float: the radius of the gradient in pixels

也可以看看:

setGradientType

Added in API level 1
void setGradientType (int gradient)

设置此drawable使用的渐变类型。

注意 :更改此属性将影响从资源加载的drawable的所有实例。 建议在更改此属性前调用mutate()

Parameters
gradient int: The type of the gradient: LINEAR_GRADIENT, RADIAL_GRADIENT or SWEEP_GRADIENT

也可以看看:

setOrientation

Added in API level 16
void setOrientation (GradientDrawable.Orientation orientation)

设置此drawable中定义的渐变的方向。

注意 :改变方向会影响从资源加载的drawable的所有实例。 建议在更改方向前调用mutate()

Parameters
orientation GradientDrawable.Orientation: the desired orientation (angle) of the gradient

也可以看看:

setShape

Added in API level 1
void setShape (int shape)

设置用于绘制渐变的形状的类型。

注意 :更改此属性将影响从资源加载的drawable的所有实例。 建议在更改此属性前调用mutate()

Parameters
shape int: The desired shape for this drawable: LINE, OVAL, RECTANGLE or RING

也可以看看:

setSize

Added in API level 1
void setSize (int width, 
                int height)

设置由该drawable绘制的形状的大小。

注意 :更改此属性将影响从资源加载的drawable的所有实例。 建议在更改此属性前调用mutate()

Parameters
width int: The width of the shape used by this drawable
height int: The height of the shape used by this drawable

也可以看看:

setStroke

Added in API level 21
void setStroke (int width, 
                ColorStateList colorStateList)

设置绘图的笔触宽度和颜色状态列表。 如果宽度为零,则不绘制笔画。

注意 :更改此属性将影响从资源加载的drawable的所有实例。 建议在更改此属性前调用mutate()

Parameters
width int: The width in pixels of the stroke
colorStateList ColorStateList: The color state list of the stroke

也可以看看:

setStroke

Added in API level 21
void setStroke (int width, 
                ColorStateList colorStateList, 
                float dashWidth, 
                float dashGap)

设置绘图的笔触宽度和颜色状态列表。 如果宽度为零,则不绘制笔画。 这种方法也可以用来冲击笔画。

注意 :更改此属性将影响从资源加载的drawable的所有实例。 建议在更改此属性前调用mutate()

Parameters
width int: The width in pixels of the stroke
colorStateList ColorStateList: The color state list of the stroke
dashWidth float: The length in pixels of the dashes, set to 0 to disable dashes
dashGap float: The gap in pixels between dashes

也可以看看:

setStroke

Added in API level 1
void setStroke (int width, 
                int color, 
                float dashWidth, 
                float dashGap)

设置绘图的笔触宽度和颜色。 如果宽度为零,则不绘制笔画。 这种方法也可以用来冲击笔画。

注意 :更改此属性将影响从资源加载的drawable的所有实例。 建议在更改此属性前调用mutate()

Parameters
width int: The width in pixels of the stroke
color int: The color of the stroke
dashWidth float: The length in pixels of the dashes, set to 0 to disable dashes
dashGap float: The gap in pixels between dashes

也可以看看:

setStroke

Added in API level 1
void setStroke (int width, 
                int color)

设置绘图的笔触宽度和颜色。 如果宽度为零,则不绘制笔画。

注意 :更改此属性将影响从资源加载的drawable的所有实例。 建议在更改此属性前调用mutate()

Parameters
width int: The width in pixels of the stroke
color int: The color of the stroke

也可以看看:

setTintList

Added in API level 21
void setTintList (ColorStateList tint)

指定该drawable的色彩颜色作为颜色状态列表。

Drawable的绘图内容在绘制到屏幕前将与它的色调混合在一起。 这功能类似于setColorFilter(int, PorterDuff.Mode)

注意:通过 setColorFilter(ColorFilter)setColorFilter(int, PorterDuff.Mode)设置颜色过滤器会覆盖色调。

Parameters
tint ColorStateList: Color state list to use for tinting this drawable, or null to clear the tint

setTintMode

Added in API level 21
void setTintMode (PorterDuff.Mode tintMode)

指定该drawable的色调混合模式。

定义在绘制屏幕之前,该绘制的色调应该如何混合到绘图中。 默认色调模式是SRC_IN

注意:通过 setColorFilter(ColorFilter)setColorFilter(int, PorterDuff.Mode)设置颜色过滤器会覆盖色彩。

Parameters
tintMode PorterDuff.Mode: A Porter-Duff blending mode

setUseLevel

Added in API level 1
void setUseLevel (boolean useLevel)

设置该drawable是否会遵守其 level属性。

注意 :更改此属性将影响从资源加载的drawable的所有实例。 建议在更改此属性前调用mutate()

Parameters
useLevel boolean: true if this drawable should honor its level, false otherwise

也可以看看:

Protected methods

onBoundsChange

Added in API level 1
void onBoundsChange (Rect r)

如果您根据边界而变化,请在您的子类中覆盖此内容以更改外观。

Parameters
r Rect

onLevelChange

Added in API level 1
boolean onLevelChange (int level)

如果您根据级别而变化,请在您的子类中覆盖此内容以更改外观。

Parameters
level int
Returns
boolean Returns true if the level change has caused the appearance of the Drawable to change (that is, it needs to be drawn), else false if it looks the same and there is no need to redraw it since its last level.

onStateChange

Added in API level 1
boolean onStateChange (int[] stateSet)

如果您认识到指定的状态,请在您的子类中覆盖此内容以更改外观。

Parameters
stateSet int
Returns
boolean Returns true if the state change has caused the appearance of the Drawable to change (that is, it needs to be drawn), else false if it looks the same and there is no need to redraw it since its last state.

Hooray!