Drawable 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
可繪圖是一種通用的抽象概念,指的是「可以被繪製的東西」。
[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 元素名稱。 此方法中,自訂繪製類別必須是公開的頂層類別。
<com.myapp.MyCustomDrawable xmlns:android="http://schemas.android.com/apk/res/android"
android:color="#ffff0000" />
</li>li 使用 em drawable</em> 作為 XML 元素名稱,並從 <em>class</em> 屬性指定完全限定的類別名稱。<><> 此方法可用於公開頂層類別與公開靜態內類別。
<drawable xmlns:android="http://schemas.android.com/apk/res/android"
class="com.myapp.MyTopLevelClass$InnerCustomDrawable"
android:color="#ffff0000" />
</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 |
回傳附加於此繪製物件的目前 |
| ChangingConfigurations |
回傳一個設定參數的遮罩,該可繪製參數可能因此改變,需重新建立。 -或- 設定一個設定參數遮罩,使此可繪製參數可能改變,需重新建立。 |
| Class |
回傳此 |
| ColorFilter |
回傳目前的色彩濾鏡,或者 |
| Current | |
| DirtyBounds |
把可繪圖的髒邊界還回去,Rect。 |
| Handle |
底層 Android 實例的帳號。 (繼承來源 Object) |
| HasFocusStateSpecified |
表示此繪製文件是否至少有一個狀態規範明確指定 |
| 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 |
|---|---|
| IJavaPeerable.Disposed() |
可繪圖是一種通用的抽象概念,指的是「可以被繪製的東西」。 (繼承來源 JavaObject) |
| IJavaPeerable.Finalized() |
可繪圖是一種通用的抽象概念,指的是「可以被繪製的東西」。 (繼承來源 JavaObject) |
| IJavaPeerable.JniObjectReferenceControlBlock |
可繪圖是一種通用的抽象概念,指的是「可以被繪製的東西」。 (繼承來源 JavaObject) |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
可繪圖是一種通用的抽象概念,指的是「可以被繪製的東西」。 (繼承來源 JavaObject) |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
可繪圖是一種通用的抽象概念,指的是「可以被繪製的東西」。 (繼承來源 JavaObject) |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
可繪圖是一種通用的抽象概念,指的是「可以被繪製的東西」。 (繼承來源 JavaObject) |
擴充方法
| 名稱 | Description |
|---|---|
| GetJniTypeName(IJavaPeerable) |
取得實例 |
| JavaAs<TResult>(IJavaPeerable) |
試著強制 |
| JavaCast<TResult>(IJavaObject) |
執行 Android 執行時檢查型別轉換。 |
| JavaCast<TResult>(IJavaObject) |
可繪圖是一種通用的抽象概念,指的是「可以被繪製的東西」。 |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
試著強制 |