在框架布局中绘制一个圆圈作为叠加层

Draw a circle as an overlay within a frame layout

我有一个框架布局(全屏),它充当显示相机预览的另一个框架布局的容器。现在我想在相机预览顶部显示一个给定半径的圆。半径应根据当前预览图像的某些属性而变化。

我知道我可以添加一些(半透明)布局 "on top" 我用于相机预览的框架布局,但我不确定如何最好地显示这个 "overlay" 圆圈.圆应居中,有实线但不填充,即透明,其背景也应透明。

您可以在现有 Activity class 中创建自己的视图 class。这是我的 class.

class CanvasView extends View {

    private Paint paint;

    public CanvasView(Context context){
        super(context);
        //Customize your own properties
        paint = new Paint();
        paint.setColor(Color.BLACK);
        paint.setStyle(Paint.Style.STROKE);
        paint.setStrokeWidth(10f);
    }

    @Override
    protected void onDraw(Canvas canvas){
        super.onDraw(canvas);
        paint.setColor(Color.RED);
        canvas.drawCircle(enter coords and radius here);
    }


}

您可以通过调用 invalidate() 方法从 class 中调用 onDraw 方法..

这是将其添加到布局中的方法.. 假设您声明了一个名为 drawable 的 CanvasView class,并拥有名为 main_layout 的框架布局,您可以通过执行以下操作将其添加到现有的框架布局中...

 CanvasView drawable = new CanvasView(getApplicationContext());
 RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
 main_layout.addView(drawable, params);

希望这有效!