PorterDuffXfermode canvas 有几个矩形相交

PorterDuffXfermode canvas with several rects intersecting

我正在尝试在 canvas 上绘制 3 个矩形。
第一个是绿色的,在背面。第二个是红色,在绿色之上。第三个是检查它们两个,它应该 "cut through" 前两个矩形。像这样:

我知道我应该这样做:

     canvas.drawColor(red);
     canvas.drawRect(greenRect, paintGreen);
     canvas.drawRect(smallRect, paintWithSomePorterduff);
     canvas.drawRect(redRect, paintRed);
     canvas.drawRect(smallRect, paintWithSomePorterduff);

但是要使用什么 PorterDuffXfermode,以及如何只剪裁一个矩形而不是在所有矩形上打洞并得到这个:

P.S。我无法制作不同的位图然后绘制它们,因为它会每隔 1 或 2 秒重绘一次。

我必须通过创建位图并重新绘制来完成。

canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR);
canvas.drawColor(colorBottom);
timeBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
timeCanvas = new Canvas(timeBitmap);
timeCanvas.drawArc(oval, 270, secRot, true, secondHandPaint);

timePaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.XOR));
timeCanvas.drawText(time, xOffset, yOffset, timePaint);
canvas.drawBitmap(timeBitmap, 0, 0, new Paint());