2017-01-09 47 views
0

我有一个显示相机预览的库。我想在预览顶部添加一个矩形叠加层。我尝试了两种不同的方法。但他们都很快显示矩形然后消失。 (使用view.getOverlay)Android库重叠矩形消失

mPreview.setZOrderMediaOverlay(true); 
mPreview.setZOrderOnTop(true); 
ViewGroup rootView = (ViewGroup)mActivity.getWindow().getDecorView().findViewById(android.R.id.content); 
rootView.addView(mPreview); 

final ViewOverlay overlay = mPreview.getOverlay(); 
final Bracket bracket = new Bracket(); 
mPreview.post(new Runnable() { 
    @Override 
    public void run() { 
     bracket.setBounds(0, 0, mPreview.getWidth(), mPreview.getHeight()); 
     overlay.add(bracket); 
    } 
}); 
  • 方法(覆盖在surfaceview绘制函数)

    @Override 
    public void draw(Canvas canvas) { 
        super.draw(canvas); 
    
        paint.setStyle(Paint.Style.STROKE); 
        paint.setColor(Color.GREEN); 
        paint.setStrokeWidth(10); 
    
        //center 
        int x0 = canvas.getWidth()/2; 
        int y0 = canvas.getHeight()/2; 
        int dx = canvas.getHeight()/3; 
        int dy = canvas.getHeight()/3; 
        //draw guide box 
        canvas.drawRect(x0-dx, y0-dy, x0+dx, y0+dy, paint); 
    } 
    
  • mPreview延伸SurfaceView

    支架延伸绘制对象

    1. 方法

      UPDATE

      如果我使用的setContentView代替rootView.addView它按预期工作。但在这种情况下,我无法删除视图。

    +0

    您可以在SurfaceView上添加一个imageView - 即使在您的xml中! –

    回答

    0

    我用了一个新的ActivitysetContentView。这解决了问题。 删除视图I finish编辑该操作。