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

时间:2016-01-31 01:07:09

标签: android overlay geometry android-framelayout

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

我知道我可以在用于相机预览的帧布局“顶部”添加一些(半透明)布局,但我不确定如何最好地显示这个“叠加”圈。圆圈应居中,有实线但不能填充,即透明,背景也应透明。

1 个答案:

答案 0 :(得分:1)

您可以在现有的Activity类中创建自己的View类。这是我的班级。

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()方法从该类中调用onDraw方法。

以下是如何将其添加到布局中的方法。 假设您声明了一个名为drawable的CanvasView类,并且让您的Framelayout(名为main_layout)通过执行以下操作将其添加到现有的framelayout ...

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

希望这有效!