原因:
让我看下源码是怎么写的
/**
* 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没有这个问题,有可能你没有遇到这个问题,因为这个是叠加的时候才会有的问题,我是先设置某个区域无效,然后绘制了一个圆圈,又绘制了一个圆环,实现一个圆形的进度条。
本文详细探讨了在特定情况下使用硬加速技术导致的绘图效果问题,并提供了三种有效的解决策略,包括修改配置文件关闭硬加速、自定义绘制区域以及改进绘图逻辑,以确保在复杂图形绘制场景中的稳定性和性能。
1491

被折叠的 条评论
为什么被折叠?



