Я пытаюсь вырезать круг из квадратного растрового изображения, используя следующий код
Canvas canvas=new Canvas(bitmapimg );
int circleXCoord = bitmapimg .getWidth() / 2;
int circleYCoord = bitmapimg .getHeight() / 2;
int circleRadius = bitmapimg .getWidth() / 2;
Rect rect = new Rect(circleXCoord - circleRadius, circleYCoord - circleRadius, circleXCoord + circleRadius, circleYCoord + circleRadius);
int width = rect.width();
int height = rect.height();
Paint paint = new Paint();
paint.setStyle(Paint.Style.STROKE);
paint.setColor(Color.BLUE);
canvas.drawRect(rect, paint);
canvas.drawBitmap(bitmapimg , rect, rect, paint);
Path p = new Path();
p.addCircle(circleXCoord, circleYCoord, width / 2F, Path.Direction.CW);
canvas.clipPath(p, Region.Op.DIFFERENCE);
canvas.drawColor(0, PorterDuff.Mode.CLEAR);
Идея состоит в том, чтобы прикрепить квадратную (прямоугольную) растровую карту к холсту, а затем скопировать круговой путь. Очистите разницу между прямоугольником и кружком (сделайте его прозрачным).
Код отлично работает для Android 4, но на устройстве Android 2.3.3 область разметки выглядит черной, а прозрачной.
Я что-то упустил, или PorterDuff.Mode.CLEAR не поддерживается в пряниках? Есть ли лучший способ сократить круг из квадрата в Android?