我需要指定一个矩形,Android画布不能在其中绘制。我知道
clipRect
将指定要绘制的区域,但我想知道是否可以反转此效果。换句话说,如何绘制一个对象,使其绘制到矩形的外部。图像以进行澄清:clipRect
将指定要绘制的区域,但我想知道是否可以反转此效果。换句话说,如何绘制一个对象,使其绘制到矩形的外部。图像以进行澄清:在Android O中,Canvas
提供了API clipOutPath(Path path)
。如果要针对早期版本进行定位,则可以使用clipPath(Path path, Region.Op op)
,正如@Gabe Sechan所提到的。
实现大致如下:
@Override
protected void dispatchDraw(Canvas canvas) {
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
canvas.clipOutPath(path);
} else {
canvas.clipPath(path, Region.Op.DIFFERENCE);
}
super.dispatchDraw(canvas);
}
我不确定这种方法是否比覆盖绘制更有效。但是,你可以将剪辑路径设置为完整视图,然后再将第二个剪辑路径设置为排除区域,并设置Region.Op DIFFERENCE。这将把剪辑矩形设置为两者之间的差异。