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) 一直退栈