語言

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 類別提供一個通用的 API,用於處理底層的視覺資源,該資源可能呈現多種形式。 與 不同 android.view.View,繪製物件沒有接收事件或與使用者互動的功能。

除了簡單的繪圖外,Drawable 還提供多種通用機制,讓客戶端能與被繪製的物件互動:

<ul><li >#setBounds< 必須呼叫方法var></var>,以告訴繪製物件它被繪製的位置以及應該大小。 所有可繪圖都應該尊重所要求的尺寸,通常只要縮放影像即可。 客戶端可以透過 和 #getIntrinsicHeight 方法找到某些可繪圖物件#getIntrinsicWidth的首選大小。

<li> 這個 #getPadding 方法可以從某些可繪圖物件中回傳如何將置入其中的內容框定資訊。 例如,一個 Drawable 如果是按鈕小工具的框架,就需要回傳能正確將標籤置入自身內部的填充。

<li> 此 #setState 方法允許用戶端告訴可繪圖物件要繪製的狀態,例如「聚焦」、「選取」等。有些可繪圖物件可能會根據所選狀態修改影像。

<li> 此 #setLevel 方法允許用戶端提供單一連續控制器,以修改顯示的繪製文件,例如電池等級或進度等級。 有些可繪圖程式可能會根據當前關卡調整其影像。

<li> 一個可繪製的程式可以透過介面回調給客戶端 Callback 來執行動畫。 所有用戶端都應該支援這個介面(透過 #setCallback),這樣動畫才能正常運作。 一個簡單的方法是透過系統設施,如 android.view.View#setBackground(Drawable) 和 android.widget.ImageView。 </ul>

雖然通常應用程式看不到,可繪製圖可能有多種形式:

<ul><li><b>Bitmap</b>:最簡單的可繪圖,為 PNG 或 JPEG 圖片。 <li><b>Nine Patch</b>:PNG 格式的擴充功能允許它指定如何拉伸和放置物品的資訊。 <li><b>向量</b>:以XML檔案定義為一組點、線條和曲線及其相關顏色資訊的可繪圖物件。 這種可繪製圖可以縮放而不損失顯示品質。 <li><b>Shape</b>:包含簡單的繪圖指令,取代原始點陣圖,使得在某些情況下能更好地調整大小。 <li><b>Layers</b>:一種複合可繪圖,將多個底層可繪圖層疊加。 <li><b>狀態</b>:一種複合可繪圖,根據一組可繪圖的狀態選擇其中之一。 <li><b>Levels</b>:一種複合繪製物,根據其等級選擇一組可繪圖物。 <li><b>Scale</b>:一種複合繪製圖,僅有一個子繪圖,整體大小會根據當前等級調整。 </ul>

「自訂」><h3>自訂可繪圖/<h3>

所有 Android 版本都允許 Drawable 類別被擴充並在執行時取代框架提供的可繪製類別。 從 開始 android.os.Build.VERSION_CODES#N API 24,自訂繪製類別也可用於 XML 中。

<strong>Note:</strong> 自訂可繪製類別只能從你的應用程式套件中存取。 其他應用程式將無法載入這些檔案。

至少,自訂可繪製類別必須在 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>li 使用 em drawable</em> 作為 XML 元素名稱,並從 <em>class</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=“特殊參考”><h3>開發者指南</h3>

想了解更多如何使用 drawables,請閱讀 Canvas 和 Drawables 開發指南。 如需建立可繪製資源(XML 或可載入程式碼的點陣圖檔案)的資訊與範例,請閱讀 可繪製資源 文件。

</div>

Java 文件 android.graphics.drawable.Drawable。

本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。

建構函式

名稱 Description
Drawable()
Drawable(IntPtr, JniHandleOwnership)

用於建立 JNI 物件受管理表示的建構器;由執行時呼叫。

屬性

名稱 Description
Alpha

取得繪製物目前的 alpha 值。

AutoMirrored

當該繪製物件的版面方向為 RTL 從右到左時,是否會自動鏡像。 -或- 設定當該繪製圖的佈局方向為 RTL(右至左)時,是否會自動鏡像。

Bounds

返回可繪製物的界限,Rect。 -或- 指定繪製的邊界矩形。

Callback

回傳附加於此繪製物件的目前 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

取得由互通執行時指派給此 Java 對等端的身份雜湊碼。

(繼承來源 Object)
JniManagedPeerState

可繪圖是一種通用的抽象概念,指的是「可以被繪製的東西」。

(繼承來源 JavaObject)
JniPeerMembers

可繪圖是一種通用的抽象概念,指的是「可以被繪製的東西」。

LayoutDirection

回傳此繪製物件的解析版面方向。

Level

取回當前關卡。

MinimumHeight

回傳此繪製圖所示的最低高度。

MinimumWidth

回傳此可繪圖物建議的最小寬度。

Opacity

還清這個可繪圖的透明度/透明度。

OpticalInsets

在插圖中回傳此可繪圖工具建議的佈局插圖,用於排版時的對齊操作。

PeerReference

取得這個 Java 節點的 JNI 物件參考。

(繼承來源 Object)
ThresholdClass

此 API 支援 Mono for Android 基礎架構,並非直接從你的程式碼中使用。

ThresholdType

此 API 支援 Mono for Android 基礎架構,並非直接從你的程式碼中使用。

TransparentRegion

回傳一個區域,代表繪製物中完全透明的部分。

方法

名稱 Description
ApplyTheme(Resources+Theme)

將指定的主題套用到這個可繪圖物及其子體上。

CanApplyTheme()
ClearColorFilter()

移除了這個可繪製物的色彩濾鏡。

Clone()

建立並回傳此物件的副本。

(繼承來源 Object)
Construct(JniObjectReference, JniObjectReferenceOptions)

可繪圖是一種通用的抽象概念,指的是「可以被繪製的東西」。

(繼承來源 JavaObject)
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()

釋放該 Java 節點所持有的資源。

(繼承來源 Object)
Dispose(Boolean)

釋放該 Java 節點所持有的資源。

(繼承來源 Object)
DisposeUnlessReferenced()

可繪圖是一種通用的抽象概念,指的是「可以被繪製的東西」。

(繼承來源 JavaObject)
Draw(Canvas)

在可選效果(如 alpha(由 setAlpha 設定)和色彩濾鏡(透過 setColorFilter 設定)內繪製其界限。

Equals(Object)

可繪圖是一種通用的抽象概念,指的是「可以被繪製的東西」。

(繼承來源 JavaObject)
Equals(Object)

表示是否有其他物體「等同」於此物。

(繼承來源 Object)
GetConstantState()

回傳 ConstantState 一個持有此可繪圖(Drawable)共享狀態的實例。

GetHashCode()

回傳物件的雜湊碼值。

(繼承來源 Object)
GetHotspotBounds(Rect)

充滿 outRect 熱點範圍。

GetOutline(Outline)

被呼叫來取得可繪圖物件,以填充定義其繪製區域的輪廓。

GetPadding(Rect)

在填充中回傳此可繪圖工具建議的插入點,用於將內容置於可繪圖物件的範圍內。

GetState()

描述當前狀態,作為原始狀態的聯集,例如 android.R.attr#state_focused、 android.R.attr#state_selected、 等。

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

從 XML 資源中膨脹這個可繪製物件。

Inflate(Resources, XmlReader, IAttributeSet)

從 XML 資源中膨脹這個可繪製物件。

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

可繪圖是一種通用的抽象概念,指的是「可以被繪製的東西」。

InflateAsync(Resources, XmlReader, IAttributeSet)

可繪圖是一種通用的抽象概念,指的是「可以被繪製的東西」。

InvalidateSelf()

用目前 Callback 的實作重新繪製這個可繪製圖。

JavaFinalize()
已淘汰.

當垃圾回收判定該物件不再有相關參考時,由垃圾回收器呼叫。

(繼承來源 Object)
JumpToCurrentState()

如果這個可繪製程式會在狀態間轉換動畫,請立即跳到當前狀態並跳過所有正在進行的動畫。

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 物件綁定到這個可繪製物件上。

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)

指定可繪製物的等級。

SetPeerReference(JniObjectReference, JniObjectReferenceOptions)

可繪圖是一種通用的抽象概念,指的是「可以被繪製的東西」。

(繼承來源 JavaObject)
SetState(Int32[])

指定一組可繪製的狀態。

SetTint(Int32)

指定此繪圖的色調顏色。

SetTintBlendMode(BlendMode)

指定此繪製物件的色調混合模式。

SetTintList(ColorStateList)

指定此繪製物件的色調顏色,作為色彩狀態清單。

SetTintMode(PorterDuff+Mode)

指定此繪製物件的色調混合模式。

SetVisible(Boolean, Boolean)

設定這個可繪製物件是否可見。

ToArray<T>()

從這個 Java 陣列包裝器建立一個受管理陣列。

(繼承來源 Object)
ToString()

回傳物件的字串表示。

(繼承來源 Object)
UnregisterFromRuntime()

將此 Java 節點從互通執行時中取消註冊。

(繼承來源 Object)
UnscheduleSelf(Action)

可繪圖是一種通用的抽象概念,指的是「可以被繪製的東西」。

UnscheduleSelf(IRunnable)

使用目前 Callback 的實作,讓這個可繪製圖(Drawable)成為非排程。

Wait()

導致目前執行緒等待被喚醒,通常是透過 <em>通知</><em 或 em>中斷</em> 來喚醒。

(繼承來源 Object)
Wait(Int64, Int32)

會讓目前執行緒等待喚醒,通常是透過 <em>通知</><em 或 em>中斷</em>,或是經過一定的真實時間。

(繼承來源 Object)
Wait(Int64)

會讓目前執行緒等待喚醒,通常是透過 <em>通知</><em 或 em>中斷</em>,或是經過一定的真實時間。

(繼承來源 Object)

明確介面實作

名稱 Description
IJavaPeerable.Disposed()

可繪圖是一種通用的抽象概念,指的是「可以被繪製的東西」。

(繼承來源 JavaObject)
IJavaPeerable.Finalized()

可繪圖是一種通用的抽象概念,指的是「可以被繪製的東西」。

(繼承來源 JavaObject)
IJavaPeerable.JniObjectReferenceControlBlock

可繪圖是一種通用的抽象概念,指的是「可以被繪製的東西」。

(繼承來源 JavaObject)
IJavaPeerable.SetJniIdentityHashCode(Int32)

可繪圖是一種通用的抽象概念,指的是「可以被繪製的東西」。

(繼承來源 JavaObject)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

可繪圖是一種通用的抽象概念,指的是「可以被繪製的東西」。

(繼承來源 JavaObject)
IJavaPeerable.SetPeerReference(JniObjectReference)

可繪圖是一種通用的抽象概念,指的是「可以被繪製的東西」。

(繼承來源 JavaObject)

擴充方法

名稱 Description
GetJniTypeName(IJavaPeerable)

取得實例 self類型的 JNI 名稱。

JavaAs<TResult>(IJavaPeerable)

試著強制self輸入 TResult,檢查 強制在 Java 端是否有效。

JavaCast<TResult>(IJavaObject)

執行 Android 執行時檢查型別轉換。

JavaCast<TResult>(IJavaObject)

可繪圖是一種通用的抽象概念,指的是「可以被繪製的東西」。

TryJavaCast<TResult>(IJavaPeerable, TResult)

試著強制self輸入 TResult,檢查 強制在 Java 端是否有效。

適用於