Я получил решение, но не через xml drawable. Мы можем создать CustomView
, расширив класс View
, который может выполнять то же самое, что и требуется:
public class RadiusOverlayView extends View {
Bitmap bm;
Canvas cv;
Paint eraser;
public RadiusOverlayView(Context context) {
super(context);
Init();
}
public RadiusOverlayView(Context context, AttributeSet attrs) {
super(context, attrs);
Init();
}
public RadiusOverlayView(Context context, AttributeSet attrs,
int defStyleAttr) {
super(context, attrs, defStyleAttr);
Init();
}
private void Init() {
eraser = new Paint();
eraser.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR));
eraser.setAntiAlias(true);
}
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
if (w != oldw || h != oldh) {
bm = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
cv = new Canvas(bm);
}
super.onSizeChanged(w, h, oldw, oldh);
}
@Override
protected void onDraw(Canvas canvas) {
int w = getWidth();
int h = getHeight();
int radius = w > h ? h / 2 : w / 2;
bm.eraseColor(Color.TRANSPARENT);
cv.drawColor(getResources().getColor(R.color.colorPrimary));
cv.drawCircle(w / 2, h / 2, radius, eraser);
canvas.drawBitmap(bm, 0, 0, null);
super.onDraw(canvas);
}
}
Добавьте этот вид в качестве слоя на camera view
.
Спасибо