我目前在处理多个表面视图和剪切其中一个视图以使其显示为圆形时遇到问题。最好用图片来描述:
所以在这个视图中,我有 2 个表面视图,全屏视图显示相机的预览,然后顶部显示使用 MediaPlayer 播放文件。我已经通过以下行将顶部放在了预览之上:
surfaceView.setZOrderMediaOverlay(true);
现在你可以看到我试图用下面的代码把它屏蔽成一个圆圈:
@Override
protected void dispatchDraw(Canvas canvas) {
Path clipPath = new Path();
clipPath.addCircle(getWidth() / 2, getHeight() / 2, getWidth() / 2, Path.Direction.CCW);
canvas.clipPath(clipPath);
super.dispatchDraw(canvas);
}
但它似乎并没有完全解决。我最初认为这是我的掩码代码的问题,但事实证明,如果我删除预览表面视图,如下图所示,掩码工作正常
任何人都对为什么会发生这种情况或如何解决它有任何想法:S?
谢谢你的帮助