Drawable 类

定义

可绘制是“可以绘制的东西”的一般抽象。

[Android.Runtime.Register("android/graphics/drawable/Drawable", DoNotGenerateAcw=true)]
public abstract class Drawable : Java.Lang.Object
[<Android.Runtime.Register("android/graphics/drawable/Drawable", DoNotGenerateAcw=true)>]
type Drawable = class
    inherit Object
继承
Drawable
派生
属性

注解

可绘制是“可以绘制的东西”的一般抽象。 通常,你将处理 Drawable 作为检索到的资源类型,以便将内容绘制到屏幕;Drawable 类提供了一个泛型 API,用于处理可能采用多种形式的基础视觉资源。 与 a android.view.View不同,Drawable 没有任何用于接收事件或与其他用户交互的设施。

除简单绘图外,Drawable 还提供许多泛型机制,使客户端能够与正在绘制的内容进行交互:

<ul><li> 方法 #setBounds <var>必须</var> 调用,以告诉绘图器绘制的位置及其大小。 所有绘图器应遵循所请求的大小,通常只需缩放其图像即可。 客户端可以使用和#getIntrinsicWidth方法查找某些绘图器#getIntrinsicHeight的首选大小。

<li> 此方法 #getPadding 可以从一些 Drawables 信息中返回有关如何设置放置在其中的内容的框架信息。 例如,作为按钮小组件的框架的 Drawable 需要返回正确放置标签本身的填充。

<li> 此方法 #setState 允许客户端告诉绘制的绘图器,例如“焦点”、“选定”等。某些可绘制器可能会根据所选状态修改其图像。

<li> 此方法 #setLevel 允许客户端提供可以修改绘图的单个连续控制器,例如电池电量或进度级别。 某些可绘制器可能会根据当前级别修改其图像。

<li> A Drawable 可以通过接口回调客户端 Callback 来执行动画。 所有客户端都应支持此接口(通过 #setCallback),以便动画正常工作。 执行此操作的一种简单方法是通过系统设施,如 android.view.View#setBackground(Drawable)android.widget.ImageView。 </ul>

虽然通常对应用程序不可见,但 Drawables 可能采用各种形式:

<ul><li><b>Bitmap</b>:最简单的可绘制、PNG 或 JPEG 图像。 <li><b>Nine Patch</b>:PNG 格式的扩展允许它指定有关如何拉伸和放置内容的信息。 <li><b>Vector</b>:XML 文件中定义为一组点、线条和曲线的可绘制对象,以及其关联的颜色信息。 这种类型的可绘制可缩放,而不会丢失显示质量。 <li><b>Shape</b>:包含简单的绘图命令,而不是原始位图,因此在某些情况下可以更好地调整大小。 <li><b>层</b>:复合可绘制,可绘制多个基础可绘制器。 <li><b>States</b>:基于其状态选择一组可绘制对象的复合可绘制器。 <li><b>Level</b>:一个复合可绘制器,它基于其级别选择一组可绘制器之一。 <li><b>Scale</b>:具有单个子级可绘制的复合绘图器,其整体大小根据当前级别进行修改。 </ul>

“Custom”><h3>自定义可绘制器</h3>

所有版本的 Android 都允许在运行时扩展和使用 Drawable 类,以取代框架提供的可绘制类。 从头开始 android.os.Build.VERSION_CODES#N API 24,自定义可绘制类也可用于 XML。

<strong Note:</strong>> Custom drawable 类只能从应用程序包中访问。 其他应用程序将无法加载它们。

自定义可绘制类至少必须在 Drawable 上实现抽象方法,并且应重写 Drawable#draw(Canvas) 用于绘制内容的方法。

自定义可绘制类可在 XML 中以多种方式使用: <ul><li> 使用完全限定的类名称作为 XML 元素名称。 对于此方法,自定义可绘制类必须是公共顶级类。

&lt;com.myapp.MyCustomDrawable xmlns:android="http://schemas.android.com/apk/res/android"
                android:color="#ffff0000" /&gt;

</li><> 使用 <em>drawable</em> 作为 XML 元素名称,并从 em>类/em> 属性指定完全限定的类<名<。 此方法可用于公共顶级类和公共静态内部类。

&lt;drawable xmlns:android="http://schemas.android.com/apk/res/android"
                class="com.myapp.MyTopLevelClass$InnerCustomDrawable"
                android:color="#ffff0000" /&gt;

</li></ul>

<div class=“special reference”><h3>Developer Guides</h3>

有关如何使用绘图器的详细信息,请阅读 Canvas 和 Drawables 开发人员指南。 有关创建可绘制资源(可在代码中加载的 XML 或位图文件)的信息和示例,请阅读 “可绘制资源” 文档。

</div>

适用于 . 的 android.graphics.drawable.DrawableJava 文档

本页的某些部分是根据 Android 开放源代码项目创建和共享的工作进行的修改,并根据 Creative Commons 2.5 属性许可证中所述的术语使用。

构造函数

Drawable()

可绘制是“可以绘制的东西”的一般抽象。

Drawable(IntPtr, JniHandleOwnership)

创建 JNI 对象的托管表示形式时使用的构造函数;由运行时调用。

属性

Alpha

获取可绘制的当前 alpha 值。

AutoMirrored

指示当此绘图器布局方向为 RTL 从右到左时,是否会自动镜像此绘图。 - 或 - 设置此绘图器是否在布局方向为 RTL(从右到左)时自动镜像。

Bounds

返回可绘制的边界 Rect。 - 或 - 为绘图对象指定边界矩形。

Callback

返回附加到此 Drawable 的当前 Callback 实现。

ChangingConfigurations

返回此可绘制结果可能会更改的配置参数的掩码,要求重新创建它。 - 或 - 设置此可绘制参数可能更改的配置参数的掩码,要求重新创建它。

Class

返回此 Object的运行时类。

(继承自 Object)
ColorFilter

返回当前颜色筛选器,或者 null 如果未设置任何颜色筛选器。

Current

可绘制是“可以绘制的东西”的一般抽象。

DirtyBounds

返回可绘制的脏边界 Rect。

Handle

基础 Android 实例的句柄。

(继承自 Object)
HasFocusStateSpecified

指示此可绘制器是否至少有一个显式指定 android.R.attr#state_focused状态规范。

IntrinsicHeight

返回可绘制器的内部高度。

IntrinsicWidth

返回可绘制器的内部宽度。

IsFilterBitmap

可绘制是“可以绘制的东西”的一般抽象。

IsProjected

此可绘制的请求投影。

IsStateful

指示此可绘制器是否会根据状态更改其外观。

IsVisible

可绘制是“可以绘制的东西”的一般抽象。

JniIdentityHashCode

可绘制是“可以绘制的东西”的一般抽象。

(继承自 Object)
JniPeerMembers

可绘制是“可以绘制的东西”的一般抽象。

LayoutDirection

返回此绘图的已解析布局方向。

Level

检索当前级别。

MinimumHeight

返回此绘图器建议的最小高度。

MinimumWidth

返回此绘图器建议的最小宽度。

Opacity

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

OpticalInsets

返回此 Drawable 建议的布局内集,以便在布局期间用于对齐操作。

PeerReference

可绘制是“可以绘制的东西”的一般抽象。

(继承自 Object)
ThresholdClass

此 API 支持 Mono for Android 基础结构,不打算直接从代码使用。

ThresholdType

此 API 支持 Mono for Android 基础结构,不打算直接从代码使用。

TransparentRegion

返回一个表示完全透明的 Drawable 部分的区域。

方法

ApplyTheme(Resources+Theme)

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

CanApplyTheme()

可绘制是“可以绘制的东西”的一般抽象。

ClearColorFilter()

删除此可绘制对象的颜色筛选器。

Clone()

创建并返回此对象的副本。

(继承自 Object)
CopyBounds()

返回新 Rect 中可绘制边界的副本。

CopyBounds(Rect)

返回指定 Rect 中可绘制边界的副本(由调用方分配)。

CreateFromPath(String)

从文件路径名称创建可绘制对象。

CreateFromPathAsync(String)

可绘制是“可以绘制的东西”的一般抽象。

CreateFromResourceStream(Resources, TypedValue, Stream, String, BitmapFactory+Options)

使用给定的资源和值从输入流创建可绘制对象,以确定密度信息。

CreateFromResourceStream(Resources, TypedValue, Stream, String)

使用给定的资源和值从输入流创建可绘制对象,以确定密度信息。

CreateFromResourceStreamAsync(Resources, TypedValue, Stream, String, BitmapFactory+Options)

可绘制是“可以绘制的东西”的一般抽象。

CreateFromResourceStreamAsync(Resources, TypedValue, Stream, String)

可绘制是“可以绘制的东西”的一般抽象。

CreateFromStream(Stream, String)

从输入流创建可绘制对象

CreateFromStreamAsync(Stream, String)

可绘制是“可以绘制的东西”的一般抽象。

CreateFromXml(Resources, XmlReader, Resources+Theme)

从 XML 文档创建可绘制对象。

CreateFromXml(Resources, XmlReader)

从 XML 文档创建可绘制对象。

CreateFromXmlAsync(Resources, XmlReader, Resources+Theme)

可绘制是“可以绘制的东西”的一般抽象。

CreateFromXmlAsync(Resources, XmlReader)

可绘制是“可以绘制的东西”的一般抽象。

CreateFromXmlInner(Resources, XmlReader, IAttributeSet, Resources+Theme)

从 XML 文档内部创建。

CreateFromXmlInner(Resources, XmlReader, IAttributeSet)

从 XML 文档内部创建。

Dispose()

可绘制是“可以绘制的东西”的一般抽象。

(继承自 Object)
Dispose(Boolean)

可绘制是“可以绘制的东西”的一般抽象。

(继承自 Object)
Draw(Canvas)

绘制其边界(通过 setBounds 设置)尊重可选效果,如 alpha(通过 setAlpha 设置)和颜色筛选器(通过 setColorFilter 设置)。

Equals(Object)

指示其他对象是否“等于”此对象。

(继承自 Object)
GetConstantState()

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

GetHashCode()

返回对象的哈希代码值。

(继承自 Object)
GetHotspotBounds(Rect)

outRect使用热点边界填充。

GetOutline(Outline)

调用可获取可绘制项以填充定义其绘图区域的大纲。

GetPadding(Rect)

返回此 Drawable 建议用于将内容置于可绘制边界内的内嵌填充。

GetState()

将当前状态描述为 primitve 状态的联合,例如 android.R.attr#state_focusedandroid.R.attr#state_selected等等。

Inflate(Resources, XmlReader, IAttributeSet, Resources+Theme)

从 XML 资源中扩充此 Drawable。

Inflate(Resources, XmlReader, IAttributeSet)

从 XML 资源中扩充此 Drawable。

InflateAsync(Resources, XmlReader, IAttributeSet, Resources+Theme)

可绘制是“可以绘制的东西”的一般抽象。

InflateAsync(Resources, XmlReader, IAttributeSet)

可绘制是“可以绘制的东西”的一般抽象。

InvalidateSelf()

使用当前 Callback 实现可重绘此可绘制。

JavaFinalize()

当垃圾回收确定不再引用该对象时,由对象上的垃圾回收器调用。

(继承自 Object)
JumpToCurrentState()

如果此 Drawable 确实在状态之间切换动画,请要求它立即跳转到当前状态并跳过任何活动动画。

Mutate()

使此可绘制的可变。

Notify()

唤醒正在等待此对象的监视器的单个线程。

(继承自 Object)
NotifyAll()

唤醒正在等待此对象的监视器的所有线程。

(继承自 Object)
OnBoundsChange(Rect)

如果因边界而异,请重写子类中的此项以更改外观。

OnLayoutDirectionChanged(Int32)

当可绘制的已解析布局方向发生更改时调用。

OnLevelChange(Int32)

如果因级别而异,请重写子类中的此项以更改外观。

OnStateChange(Int32[])

如果识别指定状态,请重写子类中的此项以更改外观。

ResolveOpacity(Int32, Int32)

返回两个源不透明度的适当不透明度值。

ScheduleSelf(Action, Int64)

可绘制是“可以绘制的东西”的一般抽象。

ScheduleSelf(IRunnable, Int64)

使用当前 Callback 实现来安排此可绘制计划。

SetAlpha(Int32)

指定可绘制的 alpha 值。

SetBounds(Int32, Int32, Int32, Int32)

为绘图对象指定边界矩形。

SetCallback(Drawable+ICallback)

Callback 对象绑定到此 Drawable。

SetColorFilter(Color, PorterDuff+Mode)

指定颜色和 Porter-Duff 模式作为此可绘制对象的颜色筛选器。

SetColorFilter(ColorFilter)

指定可绘制对象的可选颜色筛选器。

SetDither(Boolean)

设置为 true,当绘制到每个颜色组件少于 8 位的设备时,可绘制颜色的任意一种颜色。

SetFilterBitmap(Boolean)

设置为 true,使其位图在缩放或旋转时具有双线性采样的可绘制筛选器。

SetHandle(IntPtr, JniHandleOwnership)

设置 Handle 属性。

(继承自 Object)
SetHotspot(Single, Single)

指定可绘制的热点位置。

SetHotspotBounds(Int32, Int32, Int32, Int32)

如果热点与可绘制边界不同,则设置热点所约束的边界。

SetLayoutDirection(LayoutDirection)

设置此可绘制的布局方向。

SetLevel(Int32)

指定可绘制对象的级别。

SetState(Int32[])

指定一组可绘制状态。

SetTint(Int32)

指定此可绘制对象的淡色。

SetTintBlendMode(BlendMode)

指定此可绘制的淡色混合模式。

SetTintList(ColorStateList)

指定此可绘制的淡色作为颜色状态列表。

SetTintMode(PorterDuff+Mode)

指定此可绘制的淡色混合模式。

SetVisible(Boolean, Boolean)

设置此绘图是否可见。

ToArray<T>()

可绘制是“可以绘制的东西”的一般抽象。

(继承自 Object)
ToString()

返回对象的字符串表示形式。

(继承自 Object)
UnregisterFromRuntime()

可绘制是“可以绘制的东西”的一般抽象。

(继承自 Object)
UnscheduleSelf(Action)

可绘制是“可以绘制的东西”的一般抽象。

UnscheduleSelf(IRunnable)

使用当前 Callback 实现使此可绘制计划取消计划。

Wait()

使当前线程等待,直到唤醒它,通常是通过 em 通知/em> 或 <em>interrupted</em>。<><

(继承自 Object)
Wait(Int64, Int32)

使当前线程等待直到唤醒,通常是通过 <em>通知</em> 或 <em interrupted</em>>,或直到经过一定数量的实时。

(继承自 Object)
Wait(Int64)

使当前线程等待直到唤醒,通常是通过 <em>通知</em> 或 <em interrupted</em>>,或直到经过一定数量的实时。

(继承自 Object)

显式接口实现

IJavaPeerable.Disposed()

可绘制是“可以绘制的东西”的一般抽象。

(继承自 Object)
IJavaPeerable.DisposeUnlessReferenced()

可绘制是“可以绘制的东西”的一般抽象。

(继承自 Object)
IJavaPeerable.Finalized()

可绘制是“可以绘制的东西”的一般抽象。

(继承自 Object)
IJavaPeerable.JniManagedPeerState

可绘制是“可以绘制的东西”的一般抽象。

(继承自 Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

可绘制是“可以绘制的东西”的一般抽象。

(继承自 Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

可绘制是“可以绘制的东西”的一般抽象。

(继承自 Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

可绘制是“可以绘制的东西”的一般抽象。

(继承自 Object)

扩展方法

JavaCast<TResult>(IJavaObject)

执行 Android 运行时检查的类型转换。

JavaCast<TResult>(IJavaObject)

可绘制是“可以绘制的东西”的一般抽象。

GetJniTypeName(IJavaPeerable)

可绘制是“可以绘制的东西”的一般抽象。

适用于