Я пытаюсь использовать canvas.clipPath() для рисования растрового изображения внутри ограничивающего круга, аналогичного действию Clipping в демонстрациях APP. Проблема в том, что мой код правильно отображается только на эмуляторе, при запуске на реальном Samsung Galaxy Nexus 4.2 кажется, что clipPath работает больше как прямоугольное отсечение. Я совсем запутался! Я создаю новый Path() и декодирую растровое изображение в своем окне просмотра. Какие-либо предложения?
@Override
protected void onDraw(Canvas canvas) {
Point point = getPoint();
path.reset();
canvas.clipPath(path); // makes the clip empty
path.addCircle(point.x, point.y, getScale() * 140, Path.Direction.CCW);
canvas.clipPath(path, Region.Op.REPLACE);
Point scaledSize = new Point((int) (bitmapSize.x * getScale()), (int) (bitmapSize.y * getScale()));
Point topLeft = new Point((point.x - (scaledSize.x / 2)), (point.y - (scaledSize.y / 2)));
canvas.drawBitmap(bitmap, null, new Rect(topLeft.x, topLeft.y, topLeft.x + scaledSize.x, topLeft.y + scaledSize.y), paint);
}
Galaxy Nexus
Эмулятор