1、通俗说canvas是一块画布,我们所有的绘制操作都在其上进行,但实质上canvas只是bitmap的容器,真正的绘制的内容是在bitmap上显示,但我们自定义view的时候再onDraw()中绘制不用关注,因为ondraw()给我们的canvas是初始化过的,如果要自己创建则需要 Canvas mCanvas -= new Canvas(bitmap);
即有两种方式获取 Canvas
第一、api给我们提供 ondraw(canvas)
第二、自己创建,一般在自定义surfaceview或者移动实时更新View的时候 Canvas mCanvas -= new Canvas(bitmap);在这个bitmap上绘制完数据之后,我们要显示到手机屏幕上,这时要surfaceview要获取屏幕缓存的canvas,将bitmap数据绘制更新,对于自定义的view来说要在ondraw(canvas)中的拿到canvas.drawbitmap将准备好的bitmap绘制更新到屏幕上
2、介绍常用的canvas方法
drawColor();设置画布的背景
drawXXX();绘制各种图案
translate();平移画布到指定的座标
rotate();//指定角度旋转画布
save();保存画布,作用就是讲之前绘制的所有的图案保存,让后续的操作像是在一个新的图层上操作一样,不会影响到之前已经绘制的图案
save() : 用来保存Canvas的状态,save()方法之后的代码,可以调用Canvas的平移、放缩、旋转、裁剪等操作!
restore();作用是合并图层,即将save()之前和save()之后的图案进行合并,一般save()和restore()一起使用
5.0系统新增的api
saveLayer() ;// 作用跟save一样,但是很明确就是保存新的图层将这个图层入栈,然后续的操作都在这个图层上进行
saveLayerAlpha():// 作用跟save一样,但是很明确就是保存新的图层将这个图层入栈,然后续的操作都在这个图层上进行,可以设置这个新图层的背景透明度
同样也是通过restore()合并图案 ,还可以使用restoreToCount(saveCount)指定图层出栈,与保存之前的图案合并