我正在尝试使用 canvas.clipPath() 在类似于 APP 演示中的 Clipping 活动的约束圈内绘制位图图像。问题是我的代码只能在模拟器上正确呈现,当在实际的三星 Galaxy Nexus 4.2 上运行时,它看起来好像 clipPath 更像是一个矩形剪辑。我完全被难住了!我创建一个新的 Path() 并在我的视图 ctor 中解码位图。有什么建议么?
@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);
}
银河连结
模拟器