Я весь вечер искал способ реализовать функцию ластика для моего приложения для рисования. Самый распространенный ответ - просто закрасить фоновый цвет или изображение, но это решение не будет работать для моего приложения, потому что я реализую несколько слоев (стиль Gimp / Photoshop).
Пользователь должен иметь возможность нарисовать линию с помощью инструментов кисти, предоставленных в любом количестве слоев (метод onDraw моего DrawingView рисует layer0 ... layerX друг над другом). Затем, если они выберут инструмент «Ластик», он должен сделать прозрачной любую область текущего слоя, по которой он будет проходить.
Я не могу найти подходящий встроенный класс / функцию и не уверен, как написать сам. Я пытался сделать что-то вроде
Paint paint = new Paint();
paint.setAlpha(0);
, а затем использовать этот объект Paint для рисования, но при этом рисуется только «невидимая» линия.
Я также пытался использовать
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR));
но это, казалось, рисовало как обычно и без эффекта. Я, вероятно, использую его неправильно, но в документации Android нет четкого описания того, что он делает. Мне довелось увидеть это в некоторых примерах об изменении растровых изображений.
Я могу предоставить код по мере необходимости, я просто не уверен, что будет полезно для решения моей проблемы. Направление в правильном направлении было бы самой большой помощью, так как я не добился успеха с Google.