今天同事问了我这个问题,我差点把自己也给绕进去了
答案是不画即可,根本没有将已绘制区域像素清除为透明的方法
最多只能通过XferMode等方式,将其叠加为黑色
那为什么同事会问这种问题呢,原因是他对Canvas的绘制方式理解错了
他以为Canvas每次都是在上一帧的基础上进行绘制的,所以才有了擦除这样奇怪的想法
其实Canvas的每一帧,都是从全透明开始绘制的,根本不需要刻意去擦除内容
Canvas的每一帧都是一张静态图像,如果想要某个区域为透明,绘制时跳过这个区域即可
由于是同事先入为主的,我一时没反应过来,也被拉进这个圈套里面去了,想了很久才突然清醒过来
所以特意记录下,防止其它人会遇到相同的问题
Canvas根本不需要清除,在onDraw里面调用invalidate方法直接绘制下一帧,下一帧不绘制这块区域即可