我想在圆形表面上显示相机预览(类似于舷窗视图)。我还需要预览周围的区域是空的(透明的),所以我相信掩蔽没有帮助。
我试过创建一个可绘制的形状,然后将其设置为surfaceview的背景,但它不起作用。
如果可以,怎么做,有什么想法吗?

最佳答案

如果您签出SurfaceViewdrawdispatchDraw(从第344行开始)制作一个正方形的“porthole”来显示内容。您可以做的是创建一个扩展SurfaceView的类,并按照它们的方式覆盖这些类,使用一个圆路径代替:

Paint paint = new Paint();
paint.setAntiAlias(true);
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR));
canvas.drawPath(circ, paint);

circ创建为Path。例如:
Path circ = new Path();
circ.addCircle(canvas.getWidth() / 2, canvas.getWidth() / 2, canvas.getWidth() / 2, Path.Direction.CW);

此外,还需要确保将Z顺序设置为顶部:
this.setZOrderOnTop(true);

关于android - 在圆形表面上显示摄像机预览(孔效应),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22261226/

10-12 13:02