2016-06-13 61 views
0

在我的Samsung Galaxy S4上,本机相机在拍摄照片时在屏幕周围绘制白色框。 我如何在SurfaceView上做到这一点?如何在拍摄照片时在相机预览周围绘制白色框?

public void surfaceCreated(SurfaceHolder holder) { 
    hasSurface = true; 
    openCamera(); 
    setWillNotDraw(false); 
} 

@Override 
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { 

} 

public void surfaceDestroyed(SurfaceHolder holder) { 
    hasSurface = false; 
    closeCamera(); 
} 

public void takePicture(Camera.ShutterCallback cameraShutterCallback, 
         Camera.PictureCallback rawCallback, 
         Camera.PictureCallback postviewCallback, 
         Camera.PictureCallback pictureTakenCallback) { 
    try { 
     isPreviewStarted = false; 
     camera.takePicture(cameraShutterCallback, 
       rawCallback, 
       postviewCallback, 
       pictureTakenCallback); 
    } catch (Exception e) { 
     e.printStackTrace(); 
     throw new RuntimeException("Failed to take picture"); 
    } 
} 

private void closeCamera() { 
    if (camera != null) { 
     pausePreview(); 
     camera.release(); 
     camera = null; 
    } 
} 
+0

你不要,离开'SurfaceView'因为它并就它的父'View' – pskink

+0

你的框架好吧,但我如何绘制它,如何让它出现在拍照时 –

回答

0

因此,拍摄图像前:

private void showWhiteFrameAroundPreview() { 
    GradientDrawable border = new GradientDrawable(); 
    border.setShape(GradientDrawable.RECTANGLE); 
    border.setColor(Color.TRANSPARENT); 
    border.setStroke(5, Color.WHITE); 
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { 
     previewContainer.setForeground(border); 
    } 
} 

拍摄图像后:

previewContainer.setForeground(null); 
0

我想你可以做到这一点,如果你是显示在一个片段在您的父母将是主要碎片,而不是SurfaceView片段您的自定义SurfaceView。

相关问题