原因:
让我看下源码是怎么写的
/**
* Modify the current clip with the specified rectangle.
*
* @param rect The rect to intersect with the current clip
* @param op How the clip is modified
* @return true if the resulting clip is non-empty
*/
public boolean clipRect(RectF rect, Region.Op op) {
return native_clipRect(mNativeCanvas,rect.left, rect.top, rect.right, rect.bottom,op.nativeInt);
}
可以看出采用的是native方法,用Region.Op.XOR的时候如果我们没有关闭硬加速,默认是会采用硬加速的,这个时候很有可能会出现没有任何效果的情况,我用小米测试发现只有一个参数有效果,那就是canvas.clipRect(new RectF(0, 0, this.getWidth(), 80), Op.XOR);只有宽度是从0到自定义View宽度时候才有效果,换成其他的参数就没有任何效果了,用三星S5没有这个问题,有可能你没有遇到这个问题,因为这个是叠加的时候才会有的问题,我是先设置某个区域无效,然后绘制了一个圆圈,又绘制了一个圆环,实现一个圆形的进度条。