Android必知必會——Drawable

Drawable概覽

如果需要在應用內顯示靜態圖片,可以使用 Drawable 類及其子類繪制形狀和圖片。Drawable 是可繪制對象的常規抽象。不同的子類可用於特定的圖片場景,可以對其進行擴展以定義行為方式獨特的可繪制對象。

Drawable的定義和實例化

可以通過如下三種方式定義和實例化Drawable:

構造函數使用現有的Drawable子類,如ShapeDrawable,用來繪制基本的物理圖形;ColorDrawable,用來繪制特定的顏色;BitmapDrawable,用來繪制特定的位圖等。當然還可以直接繼承Drawable,自定義繪制行為:

//此示例是一個用來繪制區域最大圓形的Drawable
class MyDrawable : Drawable() {
private val redPaint: Paint = Paint().apply { setARGB(255, 255, 0, 0) }

override fun draw(canvas: Canvas) {
// 獲取可繪制區域的寬高,得到可繪制最大圓的半徑
val width: Int = bounds.width()
val height: Int = bounds.height()
val radius: Float = Math.min(width, height).toFloat() / 2f

// 由中心畫一個圓
canvas.drawCircle((width / 2).toFloat(), (height / 2).toFloat(), radius, redPaint)
}

override fun setAlpha(alpha: Int) {
// 必須重寫的方法,處理透明度
}

override fun setColorFilter(colorFilter: ColorFilter?) {
// 必須重寫的方法,處理顏色過濾器
}

override fun getOpacity(): Int =
// 必須重寫的方法,返回此Drawable的不透明度/透明度
//返回值必須是如下幾個值:
//PixelFormat.UNKNOWN
//PixelFormat.TRANSLUCENT 隻有繪制的地方才覆蓋底下的內容
//PixelFormat.TRANSPARENT 透明,完全不顯示任何東西
//PixelFormat.OPAQUE 完全不透明,遮蓋在它下面的所有內容
PixelFormat.OPAQUE
}

发表回复

相关推荐

中医生,这些方剂你都背了吗?(含方歌)

笔者是中医狗 除了看小说就是理智学中医 以前整理过的方剂今天来一波 可能是最近在医院碰到太多中医生及研究生连最基本的方 ...

· 2分钟前

廚師基本是做什麼

廚師的工作內容是在酒店、飯店做菜,研究菜品,用配方為開餐前的菜品做準備。剛開始當廚師需要適應一個新的後廚工作環境,要...

· 2分钟前

四川嘉國文投藝術品|泓盛2021春拍 | 民國中央機制銀幣 top10|

Lot 220民國三年袁世凱像中圓銀幣樣幣一枚,L.GORGI簽字版,此幣打制深峻精美,壓力十足,圖案極為立體,人像細節突出,精細...

· 3分钟前

你以為《清華園日記》就寫瞭看大腿?那你確實低估瞭青年季羨林

1說起季羨林先生,首先浮現腦海的便是專屬於他的各種標簽:“學界泰鬥”、“國學大師”、“國寶”。關於季老先生的稱謂和榮譽羅列出...

· 5分钟前

最簡單的正念訓練(附我的方法)

生活中,我們常常會被情緒的問題所困擾,也有許多人會有意識地去學習情緒管理的知識,希望自己能夠不被情緒牽著鼻子走,而是...

· 7分钟前

Copyright 2015-2025 www.icpchaxun.com ©All Rights Reserved.