《Android自定義控件入門與實戰》讀書筆記--第9章 Canvas與圖層

9.1 獲取 Canvas 對象的方法

1.重寫 onDraw()dispatchDraw()
1.1.onDraw():繪製自身
1.2.dispatchDraw():繪製子視圖,ViewGroup 需要重寫

2.使用 Bitmap 創建
2.1.Canvas c = new Canvas(bitmap)
2.2.c.setBitmap(bitmap)

3.SurfaceHolder.lockCanvas()

9.2 圖層與畫布

//會創建一塊全新的透明畫布,大小與指定保存區域的大小一致,操作都在這塊畫布上進行,結束後,覆蓋到原始畫布上
1.saveLayer()

9.2.2 畫布與圖層

1.圖層:canvas.drawXXX 系列函數,生成一個透明圖層
2.畫布:每一塊畫布都是一個 Bitmap
3.Canvas:畫布的表現形式
  1. setLayerAlpha():多了一個 Alpha

9.3 Flag的具體含義

Flag 含義
ALL_SAVE_FLAG 保存所有標識 save()、saveLayer()
MATRIX_SAVE_FLAG 保存matrix數組 save()、saveLayer()
CLIP_SAVE_FLAG 保存大小 save()、saveLayer()
HAS_ALPHA_LAYER_SAVE_FLAG 標識新建bmp具有透明度,與上層畫布結合時,透明位置顯示上層圖像,與FULL_COLOR_LAYER_SAVE_FLAG 衝突,已 HAS_ALPHA_LAYER_SAVE_FLAG 爲主 saveLayer()
FULL_COLOR_LAYER_SAVE_FLAG 識新建bmp完全獨立,與上層畫布結合時,清空上層畫布 saveLayer()
CLIP_TO_LAYER_SAVE_FLAG 保存圖層先把當前畫布根據 bounds 裁剪,與 CLIP_SAVE_FLAG 衝突(爲主), saveLayer()

9.4 恢復畫布

1.restore() 恢復畫布,出棧
2.restoreToCount(int count) 一直退棧
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章