在我的应用中,我需要从Service
创建圈形相机预览。我创建了一个 CameraPreview 类,它扩展了SurfaceView
。在我的服务中,我将 CameraPreview 对象添加到WindowManager
。
为了获得圈子,我覆盖了SurfaceView的方法draw
和dispatchDraw
:
Path circ = new Path();
circ.addCircle(canvas.getWidth() / 2, canvas.getWidth() / 2, canvas.getWidth() / 2, Path.Direction.CW);
Paint paint = new Paint();
paint.setAntiAlias(true);
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR));
canvas.drawPath(circ, paint);
this.setZOrderOnTop(true);
以下是我对3种不同测试的结果:
如果我在Service
中创建 CameraPreview 对象,我会得到矩形。
如果我使用不透明主题在Activity
中创建 CameraPreview 对象,我会得到一个圈子。
如果我使用Activity
在Theme.Translucent
中创建 CameraPreview 对象,我会得到矩形。
请告诉我为什么我得到这些结果。 Activity
的主题如何影响Canvas
?