我有一个显示相机预览的库。我想在预览的顶部添加一个矩形叠加层。我尝试了两种不同的方法。但是他们两个都很快显示出矩形然后就消失了。
方法(使用view.getOverlay)
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
支架扩展Drawable
更新
如果我使用setContentView
而不是rootView.addView
,它会按预期工作。但在这种情况下,我无法删除视图。
答案 0 :(得分:0)
我使用了新的Activity
和setContentView
。这解决了这个问题。
要删除视图finish
,请执行操作。