我有一个框架布局(全屏),作为另一个框架布局的容器,显示相机预览。现在我想在相机预览上显示给定半径的圆。半径应根据当前预览图像的某些属性而变化。
我知道我可以在用于相机预览的帧布局“顶部”添加一些(半透明)布局,但我不确定如何最好地显示这个“叠加”圈。圆圈应居中,有实线但不能填充,即透明,背景也应透明。
答案 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);
希望这有效!