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)

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

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

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

CreateFromResourceStreamAsync(Resources, TypedValue, Stream, String)

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

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

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

CreateFromStream(Stream, String)

从输入流创建可绘制对象

CreateFromStreamAsync(Stream, String)

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

CreateFromXml(Resources, XmlReader)

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

CreateFromXml(Resources, XmlReader, Resources+Theme)

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

CreateFromXmlAsync(Resources, XmlReader)

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

CreateFromXmlAsync(Resources, XmlReader, Resources+Theme)

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

CreateFromXmlInner(Resources, XmlReader, IAttributeSet)

从 XML 文档内部创建。

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

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

从 XML 资源中扩充此 Drawable。

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

从 XML 资源中扩充此 Drawable。

InflateAsync(Resources, XmlReader, IAttributeSet)

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

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

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

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)

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

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

使当前线程等待直到唤醒,通常是通过 <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)

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

适用于