Холст Android – Нарисуйте отверстие

Возможно ли реализовать следующую картинку на Android с холстом?

Изображение с отверстием

Я хочу иметь отверстие и не только круг над красным слоем, который имеет желтый цвет. Я пробовал это (и не удалось) со следующим кодом в моем onDraw() -Мотод:

 canvas.drawBitmap(yellow, 0, 0, paint); canvas.drawBitmap(red, 0, 200, paint); Paint p = new Paint(); p.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR)); canvas.drawCircle(300, 300, radius, p); 

Но когда я использую этот код, он делает отверстие через оба растровых изображения. В конце, это приложение должно быть лабиринтом с мячом, отверстиями и другими вещами. Когда мяч попадет в отверстие, он должен появиться под красным битом. Можно ли это реализовать?

Ответ:

Если у кого-то должна быть такая же проблема: используйте View, а не SurfaceView. Это была моя ошибка, потому что bg SurfaceView не может быть прозрачным.

Я думаю, вы не понимаете, как работают холсты / растровые изображения. Не хранятся слои или объекты (если вы их не храните). Это всего лишь пиксельное представление отображаемого изображения. Желтый круг над красным квадратом – это то, что вы показали на приведенном выше рисунке.

Если вы действительно хотите красный слой, вам нужно собрать два растровых изображения. Нарисуйте отверстие над красным квадратом в одном растровом изображении, нарисуйте желтый слой в одном растровом изображении. На холсте нарисуйте желтое растровое изображение, затем растровое изображение «красный квадрат с отверстием».