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:畫布的表現形式
- 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) 一直退棧