如何在Android中创建圆形相机预览?

时间:2015-09-16 10:50:09

标签: android canvas camera rectangles

在我的应用中,我需要从Service创建圈形相机预览。我创建了一个 CameraPreview 类,它扩展了SurfaceView。在我的服务中,我将 CameraPreview 对象添加到WindowManager

为了获得圈子,我覆盖了SurfaceView的方法drawdispatchDraw

    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种不同测试的结果:

  1. 如果我在Service中创建 CameraPreview 对象,我会得到矩形。

  2. 如果我使用不透明主题在Activity中创建 CameraPreview 对象,我会得到一个圈子。

  3. 如果我使用ActivityTheme.Translucent中创建 CameraPreview 对象,我会得到矩形。

  4. 请告诉我为什么我得到这些结果。 Activity的主题如何影响Canvas

0 个答案:

没有答案